3

我用瓷砖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);
 }

图片,说明此代码:http: //i.imgur.com/tgCxF.png

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

谢谢。

PS 请原谅我的英语不好。我只是在学习...

4

1 回答 1

3

你有两个基向量 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)

补充: 请注意,我使用中间顶点作为坐标零并考虑到您的偏移量

于 2012-08-20T09:57:19.817 回答