【问题标题】:How to receive isometric indexes of cells from coordinate of mouse?如何从鼠标坐标接收细胞的等距索引?
【发布时间】:2012-08-20 09:21:48
【问题描述】:

我用瓦片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]。

谢谢。

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

【问题讨论】:

    标签: algorithm math isometric


    【解决方案1】:

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

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

    【讨论】:

    • 注意要包含偏移量,只需将 rx 替换为 (rx - offset)
    猜你喜欢
    • 1970-01-01
    • 2022-09-23
    • 2012-06-01
    • 2014-06-18
    • 1970-01-01
    • 2017-03-04
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多