xref: /plan9/sys/src/cmd/map/libmap/newyorker.c (revision 59cc4ca53493a3c6d2349fe2b7f7c40f7dce7294)
1*59cc4ca5SDavid du Colombier #include <u.h>
2*59cc4ca5SDavid du Colombier #include <libc.h>
33e12c5d1SDavid du Colombier #include "map.h"
43e12c5d1SDavid du Colombier 
53e12c5d1SDavid du Colombier static double a;
63e12c5d1SDavid du Colombier 
73e12c5d1SDavid du Colombier static int
Xnewyorker(struct place * place,double * x,double * y)8219b2ee8SDavid du Colombier Xnewyorker(struct place *place, double *x, double *y)
93e12c5d1SDavid du Colombier {
10219b2ee8SDavid du Colombier 	double r = PI/2 - place->nlat.l;
11219b2ee8SDavid du Colombier 	double s;
123e12c5d1SDavid du Colombier 	if(r<.001)	/* cheat to plot center */
133e12c5d1SDavid du Colombier 		s = 0;
143e12c5d1SDavid du Colombier 	else if(r<a)
153e12c5d1SDavid du Colombier 		return -1;
163e12c5d1SDavid du Colombier 	else
173e12c5d1SDavid du Colombier 		s = log(r/a);
183e12c5d1SDavid du Colombier 	*x = -s * place->wlon.s;
193e12c5d1SDavid du Colombier 	*y = -s * place->wlon.c;
203e12c5d1SDavid du Colombier 	return(1);
213e12c5d1SDavid du Colombier }
223e12c5d1SDavid du Colombier 
233e12c5d1SDavid du Colombier proj
newyorker(double a0)24219b2ee8SDavid du Colombier newyorker(double a0)
253e12c5d1SDavid du Colombier {
263e12c5d1SDavid du Colombier 	a = a0*RAD;
273e12c5d1SDavid du Colombier 	return(Xnewyorker);
283e12c5d1SDavid du Colombier }
29