45度斜角地图在开发游戏时经常需要使用。
如何进行坐标之间的转换呢?
基本的公式为:
***********************************
N=int(x/TileW – y/TileH)
M=int(x/TileW + y/TileH)
***********************************
N,M 是碎片的索引,从0开始。
TileW,TileH是碎片的长宽。
x,y是鼠标坐标,但是注意坐标系原点。
以上如图:
原理如下:
我们建立一个新的坐标系。以花体字的u,v为新的基向量。
然后把鼠标坐标(注意原点!)(x,y)转换成基于新的基集t={u,v}的展开式: