Isometric Tile Index From Position

BlitzMax Forums/BlitzMax Programming/Isometric Tile Index From Position

beanage(Posted 2010) [#1]
Hey,

this is a solution I had a hard time to find myself, so I thought I'd share it with you. It basically allows you to convert from a 2d position to the x/y index of the underlying isometric tile. With a horrible amount of border cases to consider, you really won't wanna reinvent the wheel there. Feel free to use, modify, sell, marry my code :)

Theres propably a dozen approaches, what I can claim about mine is that it is fast, numerically stable, and last but not least working perfectly accurate.

Here is a screenshot of the testing application I wrote for the algorithm:


Here is the coresponding code. Check out the <getTileIndizesAtPosition> Method to see the algorithm. Eventually part of the code originates from an upcoming engine of mine, so don't wonder about identifiers like "isoWorld" :)



Jesse(Posted 2010) [#2]
nice! Thanks.


slenkar(Posted 2010) [#3]
thanks i use iso myself, ill check it out


BladeRunner(Posted 2010) [#4]

Was in B3D, should work here too after changing it to MaxCode
The bordercheck can be done with little additional work.


Me.32(Posted 2010) [#5]
- delete


beanage(Posted 2010) [#6]
Thanks for your kind comments!

@Blade Runner: That looks like a reasonable alternative! For now I am happy with my solution (but TBH yours seems tighter, tougher and faster, and I have no idea how its doing what its supposed to do ;). Certainly looks like I reinvented the wheel :/. How does it work?

-- edit
Ah I think I understand it now. You are taking the rotation approach, dont you? Well, mine is less analytic and more pragmatic :) (after all perfectly adjusted to my requirements)


slenkar(Posted 2010) [#7]
in your demo the tiles are the same width as height but in the code it says they are 2:1 twice as wide as high,
??

ALso can you get scrolling to work?