1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
/*--------------------------------------------------------------------
* $Id: gmt_map.h,v 1.3 2001/03/01 22:08:26 pwessel Exp $
*
* Copyright (c) 1991-2001 by P. Wessel and W. H. F. Smith
* See COPYING file for copying and redistribution conditions.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* Contact info: gmt.soest.hawaii.edu
*--------------------------------------------------------------------*/
#ifndef _GMT_MAP_H
#define _GMT_MAP_H
/* Macros, structures, and functions for conversion between different kinds
* of latitudes used in GMT
*
* W H F Smith, 10--13 May 1999.
* Version: 3.4
*/
#define GMT_LATSWAP_G2A 0 /* input = geodetic; output = authalic */
#define GMT_LATSWAP_A2G 1 /* input = authalic; output = geodetic */
#define GMT_LATSWAP_G2C 2 /* input = geodetic; output = conformal */
#define GMT_LATSWAP_C2G 3 /* input = conformal; output = geodetic */
#define GMT_LATSWAP_G2M 4 /* input = geodetic; output = meridional */
#define GMT_LATSWAP_M2G 5 /* input = meridional; output = geodetic */
#define GMT_LATSWAP_G2O 6 /* input = geodetic; output = geocentric */
#define GMT_LATSWAP_O2G 7 /* input = geocentric; output = geodetic */
#define GMT_LATSWAP_G2P 8 /* input = geodetic; output = parametric */
#define GMT_LATSWAP_P2G 9 /* input = parametric; output = geodetic */
#define GMT_LATSWAP_O2P 10 /* input = geocentric; output = parametric */
#define GMT_LATSWAP_P2O 11 /* input = parametric; output = geocentric */
#define GMT_LATSWAP_N 12 /* number of defined swaps */
struct GMT_LATSWAP_CONSTS {
double c[GMT_LATSWAP_N][4]; /* Coefficients in 4-term series */
double ra; /* Authalic radius (sphere for equal-area) */
double rm; /* Meridional radius (sphere for N-S distance) */
BOOLEAN spherical; /* True if no conversions need to be done. */
} GMT_lat_swap_vals;
/* Some shorthand notation for GMT specific cases */
#define GMT_latg_to_latc(lat) GMT_lat_swap_quick (lat, GMT_lat_swap_vals.c[GMT_LATSWAP_G2C])
#define GMT_latg_to_lata(lat) GMT_lat_swap_quick (lat, GMT_lat_swap_vals.c[GMT_LATSWAP_G2A])
#define GMT_latc_to_latg(lat) GMT_lat_swap_quick (lat, GMT_lat_swap_vals.c[GMT_LATSWAP_C2G])
#define GMT_lata_to_latg(lat) GMT_lat_swap_quick (lat, GMT_lat_swap_vals.c[GMT_LATSWAP_A2G])
void GMT_lat_swap_init (void);
double GMT_lat_swap_quick (double lat, double c[]);
double GMT_lat_swap (double lat, int itype);
#endif /* _GMT_MAP_H */
|