prj.h

Go to the documentation of this file.
00001 /*============================================================================
00002 
00003   WCSLIB 4.4 - an implementation of the FITS WCS standard.
00004   Copyright (C) 1995-2009, Mark Calabretta
00005 
00006   This file is part of WCSLIB.
00007 
00008   WCSLIB is free software: you can redistribute it and/or modify it under the
00009   terms of the GNU Lesser General Public License as published by the Free
00010   Software Foundation, either version 3 of the License, or (at your option)
00011   any later version.
00012 
00013   WCSLIB is distributed in the hope that it will be useful, but WITHOUT ANY
00014   WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
00015   FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for
00016   more details.
00017 
00018   You should have received a copy of the GNU Lesser General Public License
00019   along with WCSLIB.  If not, see <http://www.gnu.org/licenses/>.
00020 
00021   Correspondence concerning WCSLIB may be directed to:
00022     Internet email: mcalabre@atnf.csiro.au
00023     Postal address: Dr. Mark Calabretta
00024                     Australia Telescope National Facility, CSIRO
00025                     PO Box 76
00026                     Epping NSW 1710
00027                     AUSTRALIA
00028 
00029   Author: Mark Calabretta, Australia Telescope National Facility
00030   http://www.atnf.csiro.au/~mcalabre/index.html
00031   $Id: prj_8h-source.html,v 1.1 2009/09/14 20:25:24 irby Exp $
00032 *=============================================================================
00033 *
00034 * WCSLIB 4.4 - C routines that implement the spherical map projections
00035 * recognized by the FITS World Coordinate System (WCS) standard.  Refer to
00036 *
00037 *   "Representations of world coordinates in FITS",
00038 *   Greisen, E.W., & Calabretta, M.R. 2002, A&A, 395, 1061 (Paper I)
00039 *
00040 *   "Representations of celestial coordinates in FITS",
00041 *   Calabretta, M.R., & Greisen, E.W. 2002, A&A, 395, 1077 (Paper II)
00042 *
00043 * Refer to the README file provided with WCSLIB for an overview of the
00044 * library.
00045 *
00046 *
00047 * Summary of the prj routines
00048 * ---------------------------
00049 * These routines implement the spherical map projections defined by the FITS
00050 * WCS standard.  They are based on the prjprm struct which contains all
00051 * information needed for the computations.  The struct contains some members
00052 * that must be set by the user, and others that are maintained by these
00053 * routines, somewhat like a C++ class but with no encapsulation.
00054 *
00055 * Routine prjini() is provided to initialize the prjprm struct with default
00056 * values, and another, prjprt(), to print its contents.
00057 *
00058 * Setup routines for each projection with names of the form ???set(), where
00059 * "???" is the down-cased three-letter projection code, compute intermediate
00060 * values in the prjprm struct from parameters in it that were supplied by the
00061 * user.  The struct always needs to be set by the projection's setup routine
00062 * but that need not be called explicitly - refer to the explanation of
00063 * prjprm::flag.
00064 *
00065 * Each map projection is implemented via separate functions for the spherical
00066 * projection, ???s2x(), and deprojection, ???x2s().
00067 *
00068 * A set of driver routines, prjset(), prjx2s(), and prjs2x(), provides a
00069 * generic interface to the specific projection routines which they invoke
00070 * via pointers-to-functions stored in the prjprm struct.
00071 *
00072 * In summary, the routines are:
00073 *   - prjini()                Initialization routine for the prjprm struct.
00074 *   - prjprt()                Routine to print the prjprm struct.
00075 *
00076 *   - prjset(), prjx2s(), prjs2x():   Generic driver routines
00077 *
00078 *   - azpset(), azpx2s(), azps2x():   AZP (zenithal/azimuthal perspective)
00079 *   - szpset(), szpx2s(), szps2x():   SZP (slant zenithal perspective)
00080 *   - tanset(), tanx2s(), tans2x():   TAN (gnomonic)
00081 *   - stgset(), stgx2s(), stgs2x():   STG (stereographic)
00082 *   - sinset(), sinx2s(), sins2x():   SIN (orthographic/synthesis)
00083 *   - arcset(), arcx2s(), arcs2x():   ARC (zenithal/azimuthal equidistant)
00084 *   - zpnset(), zpnx2s(), zpns2x():   ZPN (zenithal/azimuthal polynomial)
00085 *   - zeaset(), zeax2s(), zeas2x():   ZEA (zenithal/azimuthal equal area)
00086 *   - airset(), airx2s(), airs2x():   AIR (Airy)
00087 *   - cypset(), cypx2s(), cyps2x():   CYP (cylindrical perspective)
00088 *   - ceaset(), ceax2s(), ceas2x():   CEA (cylindrical equal area)
00089 *   - carset(), carx2s(), cars2x():   CAR (Plate carree)
00090 *   - merset(), merx2s(), mers2x():   MER (Mercator)
00091 *   - sflset(), sflx2s(), sfls2x():   SFL (Sanson-Flamsteed)
00092 *   - parset(), parx2s(), pars2x():   PAR (parabolic)
00093 *   - molset(), molx2s(), mols2x():   MOL (Mollweide)
00094 *   - aitset(), aitx2s(), aits2x():   AIT (Hammer-Aitoff)
00095 *   - copset(), copx2s(), cops2x():   COP (conic perspective)
00096 *   - coeset(), coex2s(), coes2x():   COE (conic equal area)
00097 *   - codset(), codx2s(), cods2x():   COD (conic equidistant)
00098 *   - cooset(), coox2s(), coos2x():   COO (conic orthomorphic)
00099 *   - bonset(), bonx2s(), bons2x():   BON (Bonne)
00100 *   - pcoset(), pcox2s(), pcos2x():   PCO (polyconic)
00101 *   - tscset(), tscx2s(), tscs2x():   TSC (tangential spherical cube)
00102 *   - cscset(), cscx2s(), cscs2x():   CSC (COBE spherical cube)
00103 *   - qscset(), qscx2s(), qscs2x():   QSC (quadrilateralized spherical cube)
00104 *   - hpxset(), hpxx2s(), hpxs2x():   HPX (HEALPix)
00105 *
00106 * Argument checking (projection routines):
00107 * ----------------------------------------
00108 * The values of phi and theta (the native longitude and latitude) normally lie
00109 * in the range [-180,180] for phi, and [-90,90] for theta.  However, all
00110 * projection routines will accept any value of phi and will not normalize it.
00111 *
00112 * The projection routines do not explicitly check that theta lies within the
00113 * range [-90,90].  They do check for any value of theta that produces an
00114 * invalid argument to the projection equations (e.g. leading to division by
00115 * zero).  The projection routines for AZP, SZP, TAN, SIN, ZPN, and COP also
00116 * return error 2 if (phi,theta) corresponds to the overlapped (far) side of
00117 * the projection but also return the corresponding value of (x,y).  This
00118 * strict bounds checking may be relaxed at any time by setting prjprm::bounds
00119 * to 0 (rather than 1); the projections need not be reinitialized.
00120 *
00121 * Argument checking (deprojection routines):
00122 * ------------------------------------------
00123 * Error checking on the projected coordinates (x,y) is limited to that
00124 * required to ascertain whether a solution exists.  Where a solution does
00125 * exist no check is made that the value of phi and theta obtained lie within
00126 * the ranges [-180,180] for phi, and [-90,90] for theta.
00127 *
00128 * Accuracy:
00129 * ---------
00130 * No warranty is given for the accuracy of these routines (refer to the
00131 * copyright notice); intending users must satisfy for themselves their
00132 * adequacy for the intended purpose.  However, closure to a precision of at
00133 * least 1E-10 degree of longitude and latitude has been verified for typical
00134 * projection parameters on the 1 degree graticule of native longitude and
00135 * latitude (to within 5 degrees of any latitude where the projection may
00136 * diverge).  Refer to the tprj1.c and tprj2.c test routines that accompany
00137 * this software.
00138 *
00139 *
00140 * prjini() - Default constructor for the prjprm struct
00141 * ----------------------------------------------------
00142 * prjini() sets all members of a prjprm struct to default values.  It should
00143 * be used to initialize every prjprm struct.
00144 *
00145 * Returned:
00146 *   prj       struct prjprm*
00147 *                       Projection parameters.
00148 *
00149 * Function return value:
00150 *             int       Status return value:
00151 *                         0: Success.
00152 *                         1: Null prjprm pointer passed.
00153 *
00154 *
00155 * prjprt() - Print routine for the prjprm struct
00156 * ----------------------------------------------
00157 * prjprt() prints the contents of a prjprm struct.
00158 *
00159 * Given:
00160 *   prj       const struct prjprm*
00161 *                       Projection parameters.
00162 *
00163 * Function return value:
00164 *             int       Status return value:
00165 *                         0: Success.
00166 *                         1: Null prjprm pointer passed.
00167 *
00168 *
00169 * prjset() - Generic setup routine for the prjprm struct
00170 * ------------------------------------------------------
00171 * prjset() sets up a prjprm struct according to information supplied within
00172 * it.
00173 *
00174 * Note that this routine need not be called directly; it will be invoked by
00175 * prjx2s() and prjs2x() if prj.flag is anything other than a predefined magic
00176 * value.
00177 *
00178 * The one important distinction between prjset() and the setup routines for
00179 * the specific projections is that the projection code must be defined in the
00180 * prjprm struct in order for prjset() to identify the required projection.
00181 * Once prjset() has initialized the prjprm struct, prjx2s() and prjs2x() use
00182 * the pointers to the specific projection and deprojection routines contained
00183 * therein.
00184 *
00185 * Given and returned:
00186 *   prj       struct prjprm*
00187 *                       Projection parameters.
00188 *
00189 * Function return value:
00190 *             int       Status return value:
00191 *                         0: Success.
00192 *                         1: Null prjprm pointer passed.
00193 *                         2: Invalid projection parameters.
00194 *
00195 *
00196 * prjx2s() - Generic Cartesian-to-spherical deprojection
00197 * ------------------------------------------------------
00198 * Deproject Cartesian (x,y) coordinates in the plane of projection to native
00199 * spherical coordinates (phi,theta).
00200 *
00201 * The projection is that specified by prjprm::code.
00202 *
00203 * Given and returned:
00204 *   prj       struct prjprm*
00205 *                       Projection parameters.
00206 *
00207 * Given:
00208 *   nx,ny     int       Vector lengths.
00209 *   sxy,spt   int       Vector strides.
00210 *   x,y       const double[]
00211 *                       Projected coordinates.
00212 *
00213 * Returned:
00214 *   phi,theta double[]  Longitude and latitude (phi,theta) of the projected
00215 *                       point in native spherical coordinates [deg].
00216 *   stat      int[]     Status return value for each vector element:
00217 *                         0: Success.
00218 *                         1: Invalid value of (x,y).
00219 *
00220 * Function return value:
00221 *             int       Status return value:
00222 *                         0: Success.
00223 *                         1: Null prjprm pointer passed.
00224 *                         2: Invalid projection parameters.
00225 *                         3: One or more of the (x,y) coordinates were
00226 *                            invalid, as indicated by the stat vector.
00227 *
00228 *
00229 * prjs2x() - Generic spherical-to-Cartesian projection
00230 * ----------------------------------------------------
00231 * Project native spherical coordinates (phi,theta) to Cartesian (x,y)
00232 * coordinates in the plane of projection.
00233 *
00234 * The projection is that specified by prjprm::code.
00235 *
00236 * Given and returned:
00237 *   prj       struct prjprm*
00238 *                       Projection parameters.
00239 *
00240 * Given:
00241 *   nphi,
00242 *   ntheta    int       Vector lengths.
00243 *   spt,sxy   int       Vector strides.
00244 *   phi,theta const double[]
00245 *                       Longitude and latitude (phi,theta) of the projected
00246 *                       point in native spherical coordinates [deg].
00247 *
00248 * Returned:
00249 *   x,y       double[]  Projected coordinates.
00250 *   stat      int[]     Status return value for each vector element:
00251 *                         0: Success.
00252 *                         1: Invalid value of (phi,theta).
00253 *
00254 * Function return value:
00255 *             int       Status return value:
00256 *                         0: Success.
00257 *                         1: Null prjprm pointer passed.
00258 *                         2: Invalid projection parameters.
00259 *                         4: One or more of the (phi,theta) coordinates
00260 *                            were, invalid, as indicated by the stat vector.
00261 *
00262 *
00263 * ???set() - Specific setup routines for the prjprm struct
00264 * --------------------------------------------------------
00265 * Set up a prjprm struct for a particular projection according to information
00266 * supplied within it.
00267 *
00268 * Given and returned:
00269 *   prj       struct prjprm*
00270 *                       Projection parameters.
00271 *
00272 * Function return value:
00273 *             int       Status return value:
00274 *                         0: Success.
00275 *                         1: Null prjprm pointer passed.
00276 *                         2: Invalid projection parameters.
00277 *
00278 *
00279 * ???x2s() - Specific Cartesian-to-spherical deprojection routines
00280 * ----------------------------------------------------------------
00281 * Transform (x,y) coordinates in the plane of projection to native spherical
00282 * coordinates (phi,theta).
00283 *
00284 * Given and returned:
00285 *   prj       struct prjprm*
00286 *                       Projection parameters.
00287 *
00288 * Given:
00289 *   nx,ny     int       Vector lengths.
00290 *   sxy,spt   int       Vector strides.
00291 *   x,y       const double[]
00292 *                       Projected coordinates.
00293 *
00294 * Returned:
00295 *   phi,theta double[]  Longitude and latitude of the projected point in
00296 *                       native spherical coordinates [deg].
00297 *   stat      int[]     Status return value for each vector element:
00298 *                         0: Success.
00299 *                         1: Invalid value of (x,y).
00300 *
00301 * Function return value:
00302 *             int       Status return value:
00303 *                         0: Success.
00304 *                         1: Null prjprm pointer passed.
00305 *                         2: Invalid projection parameters.
00306 *                         3: One or more of the (x,y) coordinates were
00307 *                            invalid, as indicated by the stat vector.
00308 *
00309 *
00310 * ???s2x() - Specific spherical-to-Cartesian projection routines
00311 *---------------------------------------------------------------
00312 * Transform native spherical coordinates (phi,theta) to (x,y) coordinates in
00313 * the plane of projection.
00314 *
00315 * Given and returned:
00316 *   prj       struct prjprm*
00317 *                       Projection parameters.
00318 *
00319 * Given:
00320 *   nphi,
00321 *   ntheta    int       Vector lengths.
00322 *   spt,sxy   int       Vector strides.
00323 *   phi,theta const double[]
00324 *                       Longitude and latitude of the projected point in
00325 *                       native spherical coordinates [deg].
00326 *
00327 * Returned:
00328 *   x,y       double[]  Projected coordinates.
00329 *   stat      int[]     Status return value for each vector element:
00330 *                         0: Success.
00331 *                         1: Invalid value of (phi,theta).
00332 *
00333 * Function return value:
00334 *             int       Status return value:
00335 *                         0: Success.
00336 *                         1: Null prjprm pointer passed.
00337 *                         2: Invalid projection parameters.
00338 *                         4: One or more of the (phi,theta) coordinates
00339 *                            were, invalid, as indicated by the stat vector.
00340 *
00341 * prjprm struct - Projection parameters
00342 * -------------------------------------
00343 * The prjprm struct contains all information needed to project or deproject
00344 * native spherical coordinates.  It consists of certain members that must be
00345 * set by the user ("given") and others that are set by the WCSLIB routines
00346 * ("returned").  Some of the latter are supplied for informational purposes
00347 * while others are for internal use only.
00348 *
00349 *   int flag
00350 *     (Given and returned) This flag must be set to zero whenever any of the
00351 *     following prjprm struct members are set or changed:
00352 *
00353 *       - prjprm::code,
00354 *       - prjprm::r0,
00355 *       - prjprm::pv[],
00356 *       - prjprm::phi0,
00357 *       - prjprm::theta0.
00358 *
00359 *     This signals the initialization routine (prjset() or ???set()) to
00360 *     recompute the returned members of the prjprm struct.  flag will then be
00361 *     reset to indicate that this has been done.
00362 *
00363 *     Note that flag need not be reset when prjprm::bounds is changed.
00364 *
00365 *   char code[4]
00366 *     (Given) Three-letter projection code defined by the FITS standard.
00367 *
00368 *   double r0
00369 *     (Given) The radius of the generating sphere for the projection, a linear
00370 *     scaling parameter.  If this is zero, it will be reset to its default
00371 *     value of 180/pi (the value for FITS WCS).
00372 *
00373 *   double pv[30]
00374 *     (Given) Projection parameters.  These correspond to the PVi_ma keywords
00375 *     in FITS, so pv[0] is PVi_0a, pv[1] is PVi_1a, etc., where i denotes the
00376 *     latitude-like axis.  Many projections use pv[1] (PVi_1a), some also use
00377 *     pv[2] (PVi_2a) and SZP uses pv[3] (PVi_3a).  ZPN is currently the only
00378 *     projection that uses any of the others.
00379 *
00380 *     Usage of the pv[] array as it applies to each projection is described in
00381 *     the prologue to each trio of projection routines in prj.c.
00382 *
00383 *   double phi0
00384 *     (Given) The native longitude, phi_0 [deg], and ...
00385 *   double theta0
00386 *     (Given) ... the native latitude, theta_0 [deg], of the reference point,
00387 *     i.e. the point (x,y) = (0,0).  If undefined (set to a magic value by
00388 *     prjini()) the initialization routine will set this to a
00389 *     projection-specific default.
00390 *
00391 *   int bounds
00392 *     (Given) Controls strict bounds checking for the AZP, SZP, TAN, SIN, ZPN,
00393 *     and COP projections; set to zero to disable checking.
00394 *
00395 * The remaining members of the prjprm struct are maintained by the setup
00396 * routines and must not be modified elsewhere:
00397 *
00398 *   char name[40]
00399 *     (Returned) Long name of the projection.
00400 *
00401 *     Provided for information only, not used by the projection routines.
00402 *
00403 *   int  category
00404 *     (Returned) Projection category matching the value of the relevant global
00405 *     variable:
00406 *
00407 *     - ZENITHAL,
00408 *     - CYLINDRICAL,
00409 *     - PSEUDOCYLINDRICAL,
00410 *     - CONVENTIONAL,
00411 *     - CONIC,
00412 *     - POLYCONIC,
00413 *     - QUADCUBE, and
00414 *     - HEALPIX.
00415 *
00416 *     The category name may be identified via the prj_categories character
00417 *     array, e.g.
00418 *
00419 =       struct prjprm prj;
00420 =         ...
00421 =       printf("%s\n", prj_categories[prj.category]);
00422 *
00423 *     Provided for information only, not used by the projection routines.
00424 *
00425 *   int  pvrange
00426 *     (Returned) Range of projection parameter indices: 100 times the first
00427 *     allowed index plus the number of parameters, e.g. TAN is 0 (no
00428 *     parameters), SZP is 103 (1 to 3), and ZPN is 30 (0 to 29).
00429 *
00430 *     Provided for information only, not used by the projection routines.
00431 *
00432 *   int  simplezen
00433 *     (Returned) True if the projection is a radially-symmetric zenithal
00434 *     projection.
00435 *
00436 *     Provided for information only, not used by the projection routines.
00437 *
00438 *   int  equiareal
00439 *     (Returned) True if the projection is equal area.
00440 *
00441 *     Provided for information only, not used by the projection routines.
00442 *
00443 *   int  conformal
00444 *     (Returned) True if the projection is conformal.
00445 *
00446 *     Provided for information only, not used by the projection routines.
00447 *
00448 *   int  global
00449 *     (Returned) True if the projection can represent the whole sphere in a
00450 *     finite, non-overlapped mapping.
00451 *
00452 *     Provided for information only, not used by the projection routines.
00453 *
00454 *   int  divergent
00455 *     (Returned) True if the projection diverges in latitude.
00456 *
00457 *     Provided for information only, not used by the projection routines.
00458 *
00459 *   double x0
00460 *     (Returned) The offset in x, and ...
00461 *   double y0
00462 *     (Returned) ... the offset in y used to force (x,y) = (0,0) at
00463 *     (phi_0,theta_0).
00464 *
00465 *   double w[10]
00466 *     (Returned) Intermediate floating-point values derived from the
00467 *     projection parameters, cached here to save recomputation.
00468 *
00469 *     Usage of the w[] array as it applies to each projection is described in
00470 *     the prologue to each trio of projection routines in prj.c.
00471 *
00472 *   int n
00473 *     (Returned) Intermediate integer value (used only for the ZPN and HPX
00474 *     projections).
00475 *
00476 *   int padding
00477 *     (An unused variable inserted for alignment purposes only.)
00478 *
00479 *   int (*prjx2s)(PRJX2S_ARGS)
00480 *     (Returned) Pointer to the projection ...
00481 *   int (*prjs2x)(PRJ_ARGS)
00482 *     (Returned) ... and deprojection routines.
00483 *
00484 *
00485 * Global variable: const char *prj_errmsg[] - Status return messages
00486 * ------------------------------------------------------------------
00487 * Error messages to match the status value returned from each function.
00488 *
00489 *===========================================================================*/
00490 
00491 #ifndef WCSLIB_PROJ
00492 #define WCSLIB_PROJ
00493 
00494 #ifdef __cplusplus
00495 extern "C" {
00496 #endif
00497 
00498 
00499 /* Total number of projection parameters; 0 to PVN-1. */
00500 #define PVN 30
00501 
00502 extern const char *prj_errmsg[];
00503 
00504 extern const int CONIC, CONVENTIONAL, CYLINDRICAL, POLYCONIC,
00505                  PSEUDOCYLINDRICAL, QUADCUBE, ZENITHAL, HEALPIX;
00506 extern const char prj_categories[9][32];
00507 
00508 extern const int  prj_ncode;
00509 extern const char prj_codes[27][4];
00510 
00511 #ifdef PRJX2S_ARGS
00512 #undef PRJX2S_ARGS
00513 #endif
00514 
00515 #ifdef PRJS2X_ARGS
00516 #undef PRJS2X_ARGS
00517 #endif
00518 
00519 /* For use in declaring deprojection function prototypes. */
00520 #define PRJX2S_ARGS struct prjprm *prj, int nx, int ny, int sxy, int spt, \
00521 const double x[], const double y[], double phi[], double theta[], int stat[]
00522 
00523 /* For use in declaring projection function prototypes. */
00524 #define PRJS2X_ARGS struct prjprm *prj, int nx, int ny, int sxy, int spt, \
00525 const double phi[], const double theta[], double x[], double y[], int stat[]
00526 
00527 
00528 struct prjprm {
00529   /* Initialization flag (see the prologue above).                          */
00530   /*------------------------------------------------------------------------*/
00531   int   flag;                   /* Set to zero to force initialization.     */
00532 
00533   /* Parameters to be provided (see the prologue above).                    */
00534   /*------------------------------------------------------------------------*/
00535   char   code[4];               /* Three-letter projection code.            */
00536   double r0;                    /* Radius of the generating sphere.         */
00537   double pv[PVN];               /* Projection parameters.                   */
00538   double phi0, theta0;          /* Fiducial native coordinates.             */
00539   int   bounds;                 /* Enable strict bounds checking.           */
00540 
00541   /* Information derived from the parameters supplied.                      */
00542   /*------------------------------------------------------------------------*/
00543   char   name[40];              /* Projection name.                         */
00544   int   category;               /* Projection category.                     */
00545   int   pvrange;                /* Range of projection parameter indices.   */
00546   int   simplezen;              /* Is it a simple zenithal projection?      */
00547   int   equiareal;              /* Is it an equal area projection?          */
00548   int   conformal;              /* Is it a conformal projection?            */
00549   int   global;                 /* Can it map the whole sphere?             */
00550   int   divergent;              /* Does the projection diverge in latitude? */
00551   double x0, y0;                /* Fiducial offsets.                        */
00552 
00553   double w[10];                 /* Intermediate values.                     */
00554   int   n;                      /* Intermediate value.                      */
00555   int   padding;                /* (Dummy inserted for alignment purposes.) */
00556 
00557   int (*prjx2s)(PRJX2S_ARGS);   /* Pointers to the spherical projection and */
00558   int (*prjs2x)(PRJS2X_ARGS);   /* deprojection functions.                  */
00559 };
00560 
00561 /* Size of the prjprm struct in int units, used by the Fortran wrappers. */
00562 #define PRJLEN (sizeof(struct prjprm)/sizeof(int))
00563 
00564 
00565 /* Use the preprocessor to help declare function prototypes (see above). */
00566 int prjini(struct prjprm *prj);
00567 int prjprt(const struct prjprm *prj);
00568 
00569 int prjset(struct prjprm *prj);
00570 int prjx2s(PRJX2S_ARGS);
00571 int prjs2x(PRJS2X_ARGS);
00572 
00573 int azpset(struct prjprm *prj);
00574 int azpx2s(PRJX2S_ARGS);
00575 int azps2x(PRJS2X_ARGS);
00576 
00577 int szpset(struct prjprm *prj);
00578 int szpx2s(PRJX2S_ARGS);
00579 int szps2x(PRJS2X_ARGS);
00580 
00581 int tanset(struct prjprm *prj);
00582 int tanx2s(PRJX2S_ARGS);
00583 int tans2x(PRJS2X_ARGS);
00584 
00585 int stgset(struct prjprm *prj);
00586 int stgx2s(PRJX2S_ARGS);
00587 int stgs2x(PRJS2X_ARGS);
00588 
00589 int sinset(struct prjprm *prj);
00590 int sinx2s(PRJX2S_ARGS);
00591 int sins2x(PRJS2X_ARGS);
00592 
00593 int arcset(struct prjprm *prj);
00594 int arcx2s(PRJX2S_ARGS);
00595 int arcs2x(PRJS2X_ARGS);
00596 
00597 int zpnset(struct prjprm *prj);
00598 int zpnx2s(PRJX2S_ARGS);
00599 int zpns2x(PRJS2X_ARGS);
00600 
00601 int zeaset(struct prjprm *prj);
00602 int zeax2s(PRJX2S_ARGS);
00603 int zeas2x(PRJS2X_ARGS);
00604 
00605 int airset(struct prjprm *prj);
00606 int airx2s(PRJX2S_ARGS);
00607 int airs2x(PRJS2X_ARGS);
00608 
00609 int cypset(struct prjprm *prj);
00610 int cypx2s(PRJX2S_ARGS);
00611 int cyps2x(PRJS2X_ARGS);
00612 
00613 int ceaset(struct prjprm *prj);
00614 int ceax2s(PRJX2S_ARGS);
00615 int ceas2x(PRJS2X_ARGS);
00616 
00617 int carset(struct prjprm *prj);
00618 int carx2s(PRJX2S_ARGS);
00619 int cars2x(PRJS2X_ARGS);
00620 
00621 int merset(struct prjprm *prj);
00622 int merx2s(PRJX2S_ARGS);
00623 int mers2x(PRJS2X_ARGS);
00624 
00625 int sflset(struct prjprm *prj);
00626 int sflx2s(PRJX2S_ARGS);
00627 int sfls2x(PRJS2X_ARGS);
00628 
00629 int parset(struct prjprm *prj);
00630 int parx2s(PRJX2S_ARGS);
00631 int pars2x(PRJS2X_ARGS);
00632 
00633 int molset(struct prjprm *prj);
00634 int molx2s(PRJX2S_ARGS);
00635 int mols2x(PRJS2X_ARGS);
00636 
00637 int aitset(struct prjprm *prj);
00638 int aitx2s(PRJX2S_ARGS);
00639 int aits2x(PRJS2X_ARGS);
00640 
00641 int copset(struct prjprm *prj);
00642 int copx2s(PRJX2S_ARGS);
00643 int cops2x(PRJS2X_ARGS);
00644 
00645 int coeset(struct prjprm *prj);
00646 int coex2s(PRJX2S_ARGS);
00647 int coes2x(PRJS2X_ARGS);
00648 
00649 int codset(struct prjprm *prj);
00650 int codx2s(PRJX2S_ARGS);
00651 int cods2x(PRJS2X_ARGS);
00652 
00653 int cooset(struct prjprm *prj);
00654 int coox2s(PRJX2S_ARGS);
00655 int coos2x(PRJS2X_ARGS);
00656 
00657 int bonset(struct prjprm *prj);
00658 int bonx2s(PRJX2S_ARGS);
00659 int bons2x(PRJS2X_ARGS);
00660 
00661 int pcoset(struct prjprm *prj);
00662 int pcox2s(PRJX2S_ARGS);
00663 int pcos2x(PRJS2X_ARGS);
00664 
00665 int tscset(struct prjprm *prj);
00666 int tscx2s(PRJX2S_ARGS);
00667 int tscs2x(PRJS2X_ARGS);
00668 
00669 int cscset(struct prjprm *prj);
00670 int cscx2s(PRJX2S_ARGS);
00671 int cscs2x(PRJS2X_ARGS);
00672 
00673 int qscset(struct prjprm *prj);
00674 int qscx2s(PRJX2S_ARGS);
00675 int qscs2x(PRJS2X_ARGS);
00676 
00677 int hpxset(struct prjprm *prj);
00678 int hpxx2s(PRJX2S_ARGS);
00679 int hpxs2x(PRJS2X_ARGS);
00680 
00681 
00682 /* Deprecated. */
00683 #define prjini_errmsg prj_errmsg
00684 #define prjprt_errmsg prj_errmsg
00685 #define prjset_errmsg prj_errmsg
00686 #define prjx2s_errmsg prj_errmsg
00687 #define prjs2x_errmsg prj_errmsg
00688 
00689 #ifdef __cplusplus
00690 }
00691 #endif
00692 
00693 #endif /* WCSLIB_PROJ */

Generated on Mon Sep 14 17:03:55 2009 for WCSLIB 4.4 by  doxygen 1.5.1