Revision: 8868 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8868&view=rev Author: jswhit Date: 2010-12-30 16:14:19 +0000 (Thu, 30 Dec 2010)
Log Message: ----------- detect projection out of range, set error flag. Modified Paths: -------------- trunk/toolkits/basemap/src/PJ_hammer.c Modified: trunk/toolkits/basemap/src/PJ_hammer.c =================================================================== --- trunk/toolkits/basemap/src/PJ_hammer.c 2010-12-30 13:09:06 UTC (rev 8867) +++ trunk/toolkits/basemap/src/PJ_hammer.c 2010-12-30 16:14:19 UTC (rev 8868) @@ -2,6 +2,7 @@ double w; \ double m, rm; #define PJ_LIB__ +# define EPS 1.0e-10 # include <projects.h> PROJ_HEAD(hammer, "Hammer & Eckert-Greifendorff") "\n\tMisc Sph, \n\tW= M="; @@ -15,9 +16,15 @@ } INVERSE(s_inverse); /* spheroid */ double z; - z = sqrt(1. - (0.5 * P->w * xy.x) * (0.5 * P->w * xy.x) - (0.5 * xy.y) * (0.5 * xy.y)); - lp.lam = aatan2(P->w * xy.x * z,2. * z * z - 1)/P->w; - lp.phi = aasin(z * xy.y); + z = sqrt(1. - 0.25*P->w*P->w*xy.x*xy.x - 0.25*xy.y*xy.y); + if (fabs(2.*z*z-1.) < EPS) { + lp.lam = HUGE_VAL; + lp.phi = HUGE_VAL; + pj_errno = -14; + } else { + lp.lam = aatan2(P->w * xy.x * z,2. * z * z - 1)/P->w; + lp.phi = aasin(z * xy.y); + } return (lp); } FREEUP; if (P) pj_dalloc(P); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ Learn how Oracle Real Application Clusters (RAC) One Node allows customers to consolidate database storage, standardize their database environment, and, should the need arise, upgrade to a full multi-node Oracle RAC database without downtime or disruption http://p.sf.net/sfu/oracle-sfdevnl _______________________________________________ Matplotlib-checkins mailing list Matplotlib-checkins@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins