
Date: Thu, 26 Jan 2012 22:42:36 +0100 From: wmgcnfg@web.de To: mkgmap-dev@lists.mkgmap.org.uk Subject: Re: [mkgmap-dev] mkgmap r2179: Still NullPointerException in BoundaryUtil
I have checked the Way.clockwise() method and I think it's completely correct. I doubt that it is possible to create an overflow with normal map data.
Correct. There is no problem with overflow. The problem is in the routine Java2DConverter.areaToShapes(). ... int lat = Math.round(res[1]); int lon = Math.round(res[0]); ... In special cases, this rounding can change a clockwise way to an counter-clockwise way or vice versa.
Also the 4 points example should be completely correct if the points are given as longitude/latitude. In this case it is counterclockwise. [2412980/371559, 2412981/371558, 2412992/371544, 2412980/371559]
Sorry, the points are given as lat/lon pairs, but that doesn't matter, you are right, the way with these (rounded) values is counter-clockwise. The non-rounded values are different and describe a way that is clockwise.
The misinterpretation is caused by errornously assigning longitude to the x axis but it is the y axis.
I know that I tend to misinterpret the names (my patch used height for latitude values and width for longitude values :-( , but the result doesn't depend on the interpretation. Gerd