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: 275
        
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