Math 如果我知道一个等距菱形贴图坐标,我如何确定单击了哪个磁贴?

Math 如果我知道一个等距菱形贴图坐标,我如何确定单击了哪个磁贴?,math,drawing,tiles,isometric,Math,Drawing,Tiles,Isometric,我的瓦片引擎来了。它可以绘制正方形、六角形和等轴测交错视点。我正在努力使用等距旋转(或菱形)视点。下面是一张10x10菱形地图的图片和用于绘制它的(简化)代码。瓷砖为128x64 我知道这将绘制整个Tiles()的内容,而不仅仅是屏幕上可见的内容,但我正在尝试首先获取基本信息 我搞不懂的是如何将地图上的x、y坐标转换为平铺列、行坐标。我试图扭转: x = column * (TileWidth/2) + (row * (TileWidth/2)) + Origin.X y = (column

我的瓦片引擎来了。它可以绘制正方形、六角形和等轴测交错视点。我正在努力使用等距旋转(或菱形)视点。下面是一张10x10菱形地图的图片和用于绘制它的(简化)代码。瓷砖为128x64

我知道这将绘制整个Tiles()的内容,而不仅仅是屏幕上可见的内容,但我正在尝试首先获取基本信息

我搞不懂的是如何将地图上的x、y坐标转换为平铺列、行坐标。我试图扭转:

x = column * (TileWidth/2) + (row * (TileWidth/2)) + Origin.X
y = (column * (TileHeight/2)) - (row * (TileHeight/2)) + Origin.Y
要计算给定x和y的列和行,并得出以下结果:

column = ((x/2) - (Origin.X/2) + y + Origin.Y) / TileHeight
row = ((x/2) - (Origin.X/2) - y - Origin.Y) / TileHeight
但这似乎不起作用。有人能想出更好的方法吗?有没有更好的方法将矩形网格转换为菱形,然后再转换回来(因为我对矩阵知之甚少……)


谢谢,

我不确定我是否能理解您问题的细节,但是如果您只是想解决
x
y
列和
行的公式,那么

column=(x + y - (Origin.X + Origin.Y))/TileWidth
row = (x - y - (Origin.X - Origin.Y))/TileHeight
获取这些表达式的最简单方法是,首先将
x
y
的表达式相加,然后对
进行求解,然后减去它们并对
进行求解

column=(x + y - (Origin.X + Origin.Y))/TileWidth
row = (x - y - (Origin.X - Origin.Y))/TileHeight