disprm Struct Reference

Distortion parameters. More...

`#include <dis.h>`

## Data Fields

int | flag
int | naxis
char(* | dtype )[16]
int ** | axmap
double ** | offset
double ** | scale
int * | nparm
double ** | parms
double * | maxdis
double | totdis
int | ndis
int | padding
struct wcserr * | err
int(** | disp2x )(DISP2X_ARGS)
int(** | disx2p )(DISX2P_ARGS)
double * | tmpmem
double ** | iwrk
double ** | dwrk
int | m_flag
int | m_naxis
char(* | m_dtype )[16]
int ** | m_axmap
double ** | m_offset
double ** | m_scale
int * | m_nparm
double ** | m_parms
double * | m_maxdis
int | m_alloc
int | m_padding

## 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).

## 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::axmap,
- disprm::nparm,
- disprm::parms.

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[16] containing the name of the distortion function for each axis.

int ** disprm::axmap

(Given) 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.

double ** disprm::offset

(Given) 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.

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

double ** disprm::scale

(Given) 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.

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

int * disprm::nparm

(Given) Pointer to the first element of an array of int containing the number of distortion parameters for each axis.

The number of parameters specified must satisfy the requirements of the particular distortion function. For example, the polynomial distortion associated with the TPV "projection" must have a number that corresponds to the degree of the polynomial:

Degree 1: 4
2: 7
3: 12
4: 17
5: 24
6: 31
7: 40

double ** disprm::parms

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

disparms() may be used to allocate memory for these arrays.

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::ndis

(Returned) The number of distortion functions.

int disprm::padding

(An unused variable inserted for alignment purposes only.)

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::iwrk

(For internal use only.)

double ** disprm::dwrk

(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.)

int ** disprm::m_axmap

(For internal use only.)

double ** disprm::m_offset

(For internal use only.)

double ** disprm::m_scale

(For internal use only.)

int * disprm::m_nparm

(For internal use only.)

double ** disprm::m_parms

(For internal use only.)

double * disprm::m_maxdis

(For internal use only.)

int disprm::m_alloc

(For internal use only.)

int disprm::m_padding

(For internal use only.)