- To: netcdf-java@xxxxxxxxxxxxxxxx
- Subject: Re: [netcdf-java] BUG: ucar.unidata.geoloc.LatLonPointImpl.betweenLon()
- From: John Caron <caron@xxxxxxxxxxxxxxxx>
- Date: Wed, 14 Jul 2010 17:38:57 -0600
agreed, I have deprecated LatLonPointImpl.betweenLon(). we dont use it
anywhere in our code. thanks
On 7/14/2010 8:02 AM, Christian D Ward-Garrison wrote:
So, I realized what the problem with LatLonPointImpl.betweenLon() (a problem that my proposed replacement shares): there's not enough information to determine which way (east or west) the longitude range extends. For example, how shouldLatLonPointImpl.betweenLon(10, 20, 0);be interpreted? Does that lon range extend from 20 west to 0 (20 degrees) or from 20 east to 0 (340 degrees)?As a result, I've eschewed betweenLon altogether and started using LatLonRect instead:new LatLonRect(new LatLonPointImpl(0, 20), 0, 340).contains(0, 10); // false new LatLonRect(new LatLonPointImpl(0, 20), 0, -20).contains(0, 10); // trueI think that betweenLon() should be made deprecated, since it'll give unexpected results for arguments such as:LatLonPointImpl.betweenLon(45, 0, 360); which is a Bad Thing, given how common [0, 360] is as a longitude range. Regards, Christian Ward-Garrison -----netcdf-java-bounces@xxxxxxxxxxxxxxxx wrote: ----- To: netcdf-java@xxxxxxxxxxxxxxxx From: Christian D Ward-Garrison <cwardgar@xxxxxxxx> Sent by: netcdf-java-bounces@xxxxxxxxxxxxxxxx Date: 07/13/2010 05:46AM Subject: [netcdf-java] BUG: ucar.unidata.geoloc.LatLonPointImpl.betweenLon() LatLonPointImpl.betweenLon(68, 52, 340) // Returns false but should be true. The method fails because it normalizes lonEnd to -20, which is less than 68. I propose this fix: static public boolean betweenLon(double lon, double lonBeg, double lonEnd) { double lonNormal = lonNormal(lon, (lonBeg + lonEnd) / 2); // Don't assume that lonBeg <= lonEnd. return Math.min(lonBeg, lonEnd) <= lonNormal && lonNormal <= Math.max(lonBeg, lonEnd); } Regards, Christian Ward-Garrison _______________________________________________ netcdf-java mailing list netcdf-java@xxxxxxxxxxxxxxxx For list information or to unsubscribe, visit:http://www.unidata.ucar.edu/mailing_lists/_______________________________________________ netcdf-java mailing list netcdf-java@xxxxxxxxxxxxxxxx For list information or to unsubscribe, visit: http://www.unidata.ucar.edu/mailing_lists/
- References:
- [netcdf-java] BUG: ucar.unidata.geoloc.LatLonPointImpl.betweenLon()
- From: Christian D Ward-Garrison
- Re: [netcdf-java] BUG: ucar.unidata.geoloc.LatLonPointImpl.betweenLon()
- From: Christian D Ward-Garrison
- [netcdf-java] BUG: ucar.unidata.geoloc.LatLonPointImpl.betweenLon()