Logo Search packages:      
Sourcecode: r-cran-mapproj version File versions  Download package

map.h

/* Copyright (C) 2003, Lucent Technologies Inc. and others. 
 * All Rights Reserved. */
/* RSB #pragma    lib   "/sys/src/cmd/map/libmap/libmap.a$O"
#pragma     src   "/sys/src/cmd/map/libmap"*/
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>


#ifndef PI
#define PI  3.1415926535897932384626433832795028841971693993751
#endif

#define TWOPI (2*PI)
#define RAD (PI/180)
double      hypot(double, double);  /* sqrt(a*a+b*b) */
double      tan(double);            /* not in K&R library */

#define ECC .08227185422      /* eccentricity of earth */
#define EC2 .006768657997

#define FUZZ .0001
#define UNUSED 0.0            /* a dummy double parameter */

struct coord {
      double l;   /* lat or lon in radians*/
      double s;   /* sin */
      double c;   /* cos */
};
struct place {
      struct coord nlat;
      struct coord wlon;
};

typedef int (*proj)(struct place *, double *, double *);

struct pindex {   /* RSB */   /* index of known projections */
      char *name; /* name of projection */
      proj (*prog)(double, double);
                  /* pointer to projection function */
      int npar;   /* number of params */
      int (*cut)(struct place *, struct place *, double *);
                  /* function that handles cuts--eg longitude 180 */
      int poles;  /*1 S pole is a line, 2 N pole is, 3 both*/
      int spheroid;     /* poles must be at 90 deg if nonzero */
      int (*limb)(double *lat, double *lon, double resolution);
                  /* get next place on limb */
                  /* return -1 if done, 0 at gap, else 1 */
};


proj  aitoff(void);
proj  albers(double, double);
int   Xazequalarea(struct place *, double *, double *);
proj  azequalarea(void);
int   Xazequidistant(struct place *, double *, double *);
proj  azequidistant(void);
proj  bicentric(double);
proj  bonne(double);
proj  conic(double);
proj  cylequalarea(double);
int   Xcylindrical(struct place *, double *, double *);
proj  cylindrical(void);
proj  elliptic(double);
proj  eisenlohr(void); /* RSB */
proj  fisheye(double);
proj  gall(double);
proj  gilbert(void);
proj  globular(void);
proj  gnomonic(void);
int   guycut(struct place *, struct place *, double *);
int   Xguyou(struct place *, double *, double *);
proj  guyou(void);
proj  harrison(double, double);
int   hexcut(struct place *, struct place *, double *);
proj  map_hex(void);
proj  homing(double);
int   hlimb(double*, double*, double resolution);
proj  lagrange(void);
proj  lambert(double, double);
proj  laue(void);
proj  lune(double, double);
proj  loxodromic(double);     /* not in library */
proj  mecca(double);
int   mlimb(double*, double*, double resolution);
proj  mercator(void);
proj  mollweide(void);
proj  newyorker(double);
proj  ortelius(double, double);     /* not in library */
int   Xorthographic(struct place *place, double *x, double *y);
proj  orthographic(void);
int   olimb(double*, double*, double);
proj  map_perspective(double);
int   plimb(double*, double*, double resolution);
int   Xpolyconic(struct place *, double *, double *);
proj  polyconic(void);
proj  rectangular(double);
proj  simpleconic(double, double);
int   Xsinusoidal(struct place *, double *, double *);
proj  sinusoidal(void);
proj  sp_albers(double, double);
proj  sp_mercator(void);
proj  square(void);
int   Xstereographic(struct place *, double *, double *);
proj  stereographic(void);
int   Xtetra(struct place *, double *, double *);
int   tetracut(struct place *, struct place *, double *);
proj  tetra(void);
proj  trapezoidal(double, double);
proj  vandergrinten(void);
proj  wreath(double, double); /* not in library */

void  findxy(double, double *, double *);
void  albscale(double, double, double, double);
void  invalb(double, double, double *, double *);

void  cdiv(double, double, double, double, double *, double *);
void  cmul(double, double, double, double, double *, double *);
/* RSB void cpow(double, double, double *, double *, double);*/
void  map_cpow(double, double, double *, double *, double);
void  csq(double, double, double *, double *);
/* RSB void csqrt(double, double, double *, double *);*/
void  map_csqrt(double, double, double *, double *);
void  ccubrt(double, double, double *, double *);
double      cubrt(double);
int   elco2(double, double, double, double, double, double *, double *);
void  cdiv2(double, double, double, double, double *, double *);
void  csqr(double, double, double *, double *);

void  orient(double, double, double);
void  latlon(double, double, struct place *);
void  deg2rad(double, struct coord *);
/* RSB void sincos(struct coord *);*/
void  trig(struct coord *);
void  normalize(struct place *);
void  invert(struct place *);
void  norm(struct place *, struct place *, struct coord *);
void  printp(struct place *);
void  copyplace(struct place *, struct place *);

int   picut(struct place *, struct place *, double *);
int   ckcut(struct place *, struct place *, double);
double      reduce(double);

/* RSB void getsyms(char *);
int   putsym(struct place *, char *, double, int);
void  filerror(char *s, char *f);
void  error(char *s);
int   doproj(struct place *, int *, int *);
int   cpoint(int, int, int);
int   plotpt(struct place *, int);
int   nocut(struct place *, struct place *, double *);*/

extern int (*projection)(struct place *, double *, double *);

Generated by  Doxygen 1.6.0   Back to index