In message <[EMAIL PROTECTED]>
          "Martijn van Oosterhout" <[EMAIL PROTECTED]> wrote:

> On Sun, Apr 27, 2008 at 1:34 PM, Tom Hughes <[EMAIL PROTECTED]> wrote:
> >  > >        x = (int) Math.floor((longitude + 180) * 65536 / 360);
> >  > >        y = (int) Math.floor((latitude + 90) * 65536 / 180);
> 
> >  Yep - the input (after adjusting to zero) is between 0 and 360 (for
> >  the longitude) or 0 and 180 (for the latitude) and we want to produce
> >  a 16 bit integer so the result needs be between 0 and 65535 or we will
> >  overflow sometimes.
> 
> Interesting. so the area covered by the quadtiles at the edge of the
> map is half that of the rest of the tiles. Was this scheme chosen
> specifically or is it just the way it was done at the time.
> 
> If s = 360/65535 then:
> quadtile 0,0 is [0,0.5s]left/right and [0,1s] up/down
> quadtile 1,1 is [0.5s,1.5s]left/right and [1s,3s] up/down

Umm... It was done that way because it produces the range of numbers
that I wanted? What's the alternative? The only one I can see would
require you to use a round towards zero operation to cope with the
negatives and that's not something that is easily available in most
languages.

Tom

-- 
Tom Hughes ([EMAIL PROTECTED])
http://www.compton.nu/

_______________________________________________
dev mailing list
dev@openstreetmap.org
http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/dev

Reply via email to