ref: f99b9cae6a3dc5775a83b264d6041be8d5d416d6
dir: /sys/src/cmd/map/libmap/trapezoidal.c/
#include <u.h> #include <libc.h> #include "map.h" static struct coord stdpar0, stdpar1; static double k; static double yeq; static int Xtrapezoidal(struct place *place, double *x, double *y) { *y = yeq + place->nlat.l; *x = *y*k*place->wlon.l; return 1; } proj trapezoidal(double par0, double par1) { if(fabs(fabs(par0)-fabs(par1))<.1) return rectangular(par0); deg2rad(par0,&stdpar0); deg2rad(par1,&stdpar1); if(fabs(par1-par0) < .1) k = stdpar1.s; else k = (stdpar1.c-stdpar0.c)/(stdpar0.l-stdpar1.l); yeq = -stdpar1.l - stdpar1.c/k; return Xtrapezoidal; }