disprm Struct Reference

Distortion parameters. More...

`#include <dis.h>`

## Data Fields

int | flag
int | naxis
char(* | dtype )[72]
int | ndp
int | ndpmax
struct dpkey * | dp
double * | maxdis
double | totdis
int ** | axmap
int * | Nhat
double ** | offset
double ** | scale
int ** | iparm
double ** | dparm
int | i_naxis
int | ndis
struct wcserr * | err
int(** | disp2x )(DISP2X_ARGS)
int(** | disx2p )(DISX2P_ARGS)
double * | tmpmem
int | m_flag
int | m_naxis
char(* | m_dtype )[72]
struct dpkey * | m_dp
double * | m_maxdis

## Detailed Description

The disprm struct contains all of the information required to apply a set of distortion functions. It consists of certain members that must be set by the user (given) and others that are set by the WCSLIB routines (returned). While the addresses of the arrays themselves may be set by disini() if it (optionally) allocates memory, their contents must be set by the user.

## Field Documentation

int disprm::flag

(Given and returned) This flag must be set to zero whenever any of the following members of the disprm struct are set or modified:

- disprm::naxis,
- disprm::dtype,
- disprm::ndp,
- disprm::dp.

This signals the initialization routine, disset(), to recompute the returned members of the disprm struct. disset() will reset flag to indicate that this has been done.

PLEASE NOTE: flag must be set to -1 when disini() is called for the first time for a particular disprm struct in order to initialize memory management. It must ONLY be used on the first initialization otherwise memory leaks may result.

int disprm::naxis

(Given or returned) Number of pixel and world coordinate elements.

If disini() is used to initialize the disprm struct (as would normally be the case) then it will set naxis from the value passed to it as a function argument. The user should not subsequently modify it.

disprm::dtype

(Given) Pointer to the first element of an array of char[72] containing the name of the distortion function for each axis.

int disprm::ndp

(Given) The number of entries in the disprm::dp[] array.

int disprm::ndpmax

(Given) The length of the disprm::dp[] array.

ndpmax will be set by disini() if it allocates memory for disprm::dp[], otherwise it must be set by the user. See also disndp().

struct dpkey disprm::dp

(Given) Address of the first element of an array of length ndpmax of dpkey structs.

As a FITS header parser encounters each DPja or DQia keyword it should load it into a dpkey struct in the array and increment ndp. However, note that a single disprm struct must hold only DPja or DQia keyvalues, not both. disset() interprets them as required by the particular distortion function.

double * disprm::maxdis

(Given) Pointer to the first element of an array of double specifying the maximum absolute value of the distortion for each axis computed over the whole image.

It is not necessary to reset the disprm struct (via disset()) when disprm::maxdis is changed.

double disprm::totdis

(Given) The maximum absolute value of the combination of all distortion functions specified as an offset in pixel coordinates computed over the whole image.

It is not necessary to reset the disprm struct (via disset()) when disprm::totdis is changed.

int ** disprm::axmap

(Returned) Pointer to the first element of an array of int* containing pointers to the first elements of the axis mapping arrays for each axis.

An axis mapping associates the independent variables of a distortion function with the 1-relative image axis number. For example, consider an image with a spectrum on the first axis, followed by RA, Dec, and time axes. For a distortion in (RA,Dec) and no distortion on the spectral or time axes, the axis mapping arrays, axmap[j][], would be

j=0: [0, 0, 0, 0] ...no distortion on spectral axis,
1: [2, 3, 0, 0] ...RA distortion depends on RA and Dec,
2: [3, 2, 0, 0] ...Dec distortion depends on Dec and RA,
3: [0, 0, 0, 0] ...no distortion on time axis,

where zero indicates that there is no corresponding independent variable.

int * disprm::Nhat

(Returned) Pointer to the first element of an array of int* containing the number of coordinate axes that form the independent variables of the distortion function.

double ** disprm::offset

(Returned) Pointer to the first element of an array of double* containing an offset used to renormalize the independent variables of the distortion function for each axis.

The offsets are subtracted from the independent variables before scaling.

double ** disprm::scale

(Returned) Pointer to the first element of an array of double* containing a scale used to renormalize the independent variables of the distortion function for each axis.

The scale is applied to the independent variables after the offsets are subtracted.

int ** disprm::iparm

(Returned) Pointer to the first element of an array of int* containing pointers to the first elements of the arrays of integer distortion parameters for each axis.

double ** disprm::dparm

(Returned) Pointer to the first element of an array of double* containing pointers to the first elements of the arrays of floating point distortion parameters for each axis.

int disprm::i_naxis

(Returned) Dimension of the internal arrays (normally equal to naxis).

int disprm::ndis

(Returned) The number of distortion functions.

struct wcserr * disprm::err

(Returned) If enabled, when an error status is returned, this struct contains detailed information about the error, see wcserr_enable().

int(** disprm::disp2x) (DISP2X_ARGS)

int(** disprm::disx2p) (DISX2P_ARGS)

double * disprm::tmpmem

(For internal use only.)

int disprm::m_flag

(For internal use only.)

int disprm::m_naxis

(For internal use only.)

disprm::m_dtype

(For internal use only.)

double ** disprm::m_dp

(For internal use only.)

double * disprm::m_maxdis

(For internal use only.)