WCSLIB 8.2.2
Loading...
Searching...
No Matches
Functions
sph.h File Reference

Go to the source code of this file.

Functions

int sphx2s (const double eul[5], int nphi, int ntheta, int spt, int sxy, const double phi[], const double theta[], double lng[], double lat[])
 Rotation in the pixel-to-world direction.
 
int sphs2x (const double eul[5], int nlng, int nlat, int sll, int spt, const double lng[], const double lat[], double phi[], double theta[])
 Rotation in the world-to-pixel direction.
 
int sphdpa (int nfield, double lng0, double lat0, const double lng[], const double lat[], double dist[], double pa[])
 Compute angular distance and position angle.
 
int sphpad (int nfield, double lng0, double lat0, const double dist[], const double pa[], double lng[], double lat[])
 Compute field points offset from a given point.
 

Detailed Description

Routines in this suite implement the spherical coordinate transformations defined by the FITS World Coordinate System (WCS) standard

"Representations of world coordinates in FITS",
Greisen, E.W., & Calabretta, M.R. 2002, A&A, 395, 1061 (WCS Paper I)
"Representations of celestial coordinates in FITS",
Calabretta, M.R., & Greisen, E.W. 2002, A&A, 395, 1077 (WCS Paper II)

The transformations are implemented via separate functions, sphx2s() and sphs2x(), for the spherical rotation in each direction.

A utility function, sphdpa(), computes the angular distances and position angles from a given point on the sky to a number of other points. sphpad() does the complementary operation - computes the coordinates of points offset by the given angular distances and position angles from a given point on the sky.

Function Documentation

◆ sphx2s()

int sphx2s ( const double  eul[5],
int  nphi,
int  ntheta,
int  spt,
int  sxy,
const double  phi[],
const double  theta[],
double  lng[],
double  lat[] 
)

Rotation in the pixel-to-world direction.

sphx2s() transforms native coordinates of a projection to celestial coordinates.

Parameters
[in]eulEuler angles for the transformation:
  • 0: Celestial longitude of the native pole [deg].
  • 1: Celestial colatitude of the native pole, or native colatitude of the celestial pole [deg].
  • 2: Native longitude of the celestial pole [deg].
  • 3: $cos$(eul[1])
  • 4: $sin$(eul[1])
[in]nphi,nthetaVector lengths.
[in]spt,sxyVector strides.
[in]phi,thetaLongitude and latitude in the native coordinate system of the projection [deg].
[out]lng,latCelestial longitude and latitude [deg]. These may refer to the same storage as phi and theta respectively.
Returns
Status return value:
  • 0: Success.

◆ sphs2x()

int sphs2x ( const double  eul[5],
int  nlng,
int  nlat,
int  sll,
int  spt,
const double  lng[],
const double  lat[],
double  phi[],
double  theta[] 
)

Rotation in the world-to-pixel direction.

sphs2x() transforms celestial coordinates to the native coordinates of a projection.

Parameters
[in]eulEuler angles for the transformation:
  • 0: Celestial longitude of the native pole [deg].
  • 1: Celestial colatitude of the native pole, or native colatitude of the celestial pole [deg].
  • 2: Native longitude of the celestial pole [deg].
  • 3: $cos$(eul[1])
  • 4: $sin$(eul[1])
[in]nlng,nlatVector lengths.
[in]sll,sptVector strides.
[in]lng,latCelestial longitude and latitude [deg].
[out]phi,thetaLongitude and latitude in the native coordinate system of the projection [deg]. These may refer to the same storage as lng and lat respectively.
Returns
Status return value:
  • 0: Success.

◆ sphdpa()

int sphdpa ( int  nfield,
double  lng0,
double  lat0,
const double  lng[],
const double  lat[],
double  dist[],
double  pa[] 
)

Compute angular distance and position angle.

sphdpa() computes the angular distance and generalized position angle (see notes) from a "reference" point to a number of "field" points on the sphere. The points must be specified consistently in any spherical coordinate system.

sphdpa() is complementary to sphpad().

Parameters
[in]nfieldThe number of field points.
[in]lng0,lat0Spherical coordinates of the reference point [deg].
[in]lng,latSpherical coordinates of the field points [deg].
[out]dist,paAngular distances and position angles [deg]. These may refer to the same storage as lng and lat respectively.
Returns
Status return value:
  • 0: Success.

Notes:
1. sphdpa() uses sphs2x() to rotate coordinates so that the reference point is at the north pole of the new system with the north pole of the old system at zero longitude in the new. The Euler angles required by sphs2x() for this rotation are

eul[0] = lng0;
eul[1] = 90.0 - lat0;
eul[2] = 0.0;

The angular distance and generalized position angle are readily obtained from the longitude and latitude of the field point in the new system. This applies even if the reference point is at one of the poles, in which case the "position angle" returned is as would be computed for a reference point at $(\alpha_0,+90^\circ-\epsilon)$ or $(\alpha_0,-90^\circ+\epsilon)$, in the limit as $\epsilon$ goes to zero.

It is evident that the coordinate system in which the two points are expressed is irrelevant to the determination of the angular separation between the points. However, this is not true of the generalized position angle.

The generalized position angle is here defined as the angle of intersection of the great circle containing the reference and field points with that containing the reference point and the pole. It has its normal meaning when the the reference and field points are specified in equatorial coordinates (right ascension and declination).

Interchanging the reference and field points changes the position angle in a non-intuitive way (because the sum of the angles of a spherical triangle normally exceeds $180^\circ$).

The position angle is undefined if the reference and field points are coincident or antipodal. This may be detected by checking for a distance of $0^\circ$ or $180^\circ$ (within rounding tolerance). sphdpa() will return an arbitrary position angle in such circumstances.

◆ sphpad()

int sphpad ( int  nfield,
double  lng0,
double  lat0,
const double  dist[],
const double  pa[],
double  lng[],
double  lat[] 
)

Compute field points offset from a given point.

sphpad() computes the coordinates of a set of points that are offset by the specified angular distances and position angles from a given "reference" point on the sky. The distances and position angles must be specified consistently in any spherical coordinate system.

sphpad() is complementary to sphdpa().

Parameters
[in]nfieldThe number of field points.
[in]lng0,lat0Spherical coordinates of the reference point [deg].
[in]dist,paAngular distances and position angles [deg].
[out]lng,latSpherical coordinates of the field points [deg]. These may refer to the same storage as dist and pa respectively.
Returns
Status return value:
  • 0: Success.

Notes:

  1. sphpad() is implemented analogously to sphdpa() although using sphx2s() for the inverse transformation. In particular, when the reference point is at one of the poles, "position angle" is interpreted as though the reference point was at $(\alpha_0,+90^\circ-\epsilon)$ or $(\alpha_0,-90^\circ+\epsilon)$, in the limit as $\epsilon$ goes to zero.

Applying sphpad() with the distances and position angles computed by sphdpa() should return the original field points.