How can I determine the first visible tile in an isometric perspective?
Posted
by
alekop
on Game Development
See other posts from Game Development
or by alekop
Published on 2011-10-11T18:03:58Z
Indexed on
2011/11/14
18:14 UTC
Read the original article
Hit count: 230
I am trying to render the visible portion of a diamond-shaped isometric map. The "world" coordinate system is a 2D Cartesian system, with the coordinates increasing diagonally (in terms of the view coordinate system) along the axes. The "view" coordinates are simply mouse offsets relative to the upper left corner of the view.
My rendering algorithm works by drawing diagonal spans, starting from the upper right corner of the view and moving diagonally to the right and down, advancing to the next row when it reaches the right view edge. When the rendering loop reaches the lower left corner, it stops.
There are functions to convert a point from view coordinates to world coordinates and then to map coordinates.
Everything works when rendering from tile 0,0, but as the view scrolls around the rendering needs to start from a different tile. I can't figure out how to determine which tile is closest to the upper right corner.
At the moment I am simply converting the coordinates of the upper right corner to map coordinates. This works as long as the view origin (upper right corner) is inside the world, but when approaching the edges of the map the starting tile coordinate obviously become invalid.
I guess this boils down to asking "how can I find the intersection between the world X axis and the view X axis?"
© Game Development or respective owner