xref: /plan9/sys/src/cmd/map/libmap/conic.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 struct coord stdpar;
63e12c5d1SDavid du Colombier 
73e12c5d1SDavid du Colombier static int
Xconic(struct place * place,double * x,double * y)8219b2ee8SDavid du Colombier Xconic(struct place *place, double *x, double *y)
93e12c5d1SDavid du Colombier {
10219b2ee8SDavid du Colombier 	double r;
113e12c5d1SDavid du Colombier 	if(fabs(place->nlat.l-stdpar.l) > 80.*RAD)
123e12c5d1SDavid du Colombier 		return(-1);
133e12c5d1SDavid du Colombier 	r = stdpar.c/stdpar.s - tan(place->nlat.l - stdpar.l);
143e12c5d1SDavid du Colombier 	*x = - r*sin(place->wlon.l * stdpar.s);
153e12c5d1SDavid du Colombier 	*y = - r*cos(place->wlon.l * stdpar.s);
163e12c5d1SDavid du Colombier 	if(r>3) return(0);
173e12c5d1SDavid du Colombier 	return(1);
183e12c5d1SDavid du Colombier }
193e12c5d1SDavid du Colombier 
203e12c5d1SDavid du Colombier proj
conic(double par)21219b2ee8SDavid du Colombier conic(double par)
223e12c5d1SDavid du Colombier {
233e12c5d1SDavid du Colombier 	if(fabs(par) <.1)
243e12c5d1SDavid du Colombier 		return(Xcylindrical);
253e12c5d1SDavid du Colombier 	deg2rad(par, &stdpar);
263e12c5d1SDavid du Colombier 	return(Xconic);
273e12c5d1SDavid du Colombier }
28