Why not?
This commit is contained in:
parent
a01e58366c
commit
28994509cc
82 changed files with 13293 additions and 0 deletions
147
src/cmd/map/map.h
Normal file
147
src/cmd/map/map.h
Normal file
|
|
@ -0,0 +1,147 @@
|
|||
/*
|
||||
#pragma lib "/sys/src/cmd/map/libmap/libmap.a$O"
|
||||
#pragma src "/sys/src/cmd/map/libmap"
|
||||
*/
|
||||
|
||||
#define index index0
|
||||
#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 index { /* 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 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 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 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 *);
|
||||
void cpow(double, double, double *, double *, double);
|
||||
void csq(double, double, double *, double *);
|
||||
void 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 *);
|
||||
void sincos(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);
|
||||
|
||||
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 *);
|
||||
Loading…
Add table
Add a link
Reference in a new issue