如何从鼠标坐标中接收细胞的等轴测索引



我用瓦片绘制等角图64x32

const Offset = 160;
int X, Y;
for (int a=0; a < 6; a++)
 for (int b=0; b < 6; b++) {
X = a * 32 - b * 32 + Offset;
Y = a * 16 + b * 16;
DrawTile(X, Y, tile);
 }

图示此代码的图像:https://i.stack.imgur.com/Rc4kD.png

亲爱的专业人士,请帮助提供鼠标坐标在单元格等轴测索引中的转换公式。示例:(105;100)->[1;4]。

谢谢。

附言请原谅我英语不好。我只是在学习

有两个基向量p=(32,16)和q=(-32,16)。任何向量r都是p和q的线性组合:

r = a * p + b * q
components:
rx = a * 32 - b * 32 = (a - b) * 32
ry = a * 16 + b * 16 = (a + b) * 16
so your indexes are:
a = (2 * ry  + rx) div 64
b = (2 * ry  - rx) div 64
(div is integer division)

添加:请注意,我使用了中顶点作为坐标零点,并考虑了您的偏移

相关内容

  • 没有找到相关文章

最新更新