2D等轴测引擎-数学问题-立方体选择-菱形地图



当我用std::vector创建一个层时,我会计算我的坐标,该层填充了cube对象(这是我的一个类):

for(int J = 0; J < mapSize; J++)
{
    for(int I = 0; I < mapSize; I++)
    {
        x = (J - I) * (cubeSize/2);
        y = (J + I) * (cubeSize/4);
        c = new cube(cubeSize, x, y, z, I, J);
        cs.push_back(*c);
    }
}

我想这样做:cs[getCubeByID(mouseX, mouseY)].setTexture(...);

使用示例:I-J [0, 0]中的多维数据集在多维数据集数组中具有number 0。如果我click on 0,0,我得到这个数字

编辑:我们在评论中给了我一个公式,让我得到一个J或一个I和一对x,y,非常感谢我只需要像我给出的例子一样,将这对I-J转换为我的数组的条目号

我尝试过:int entry = (J - 1) * size + (I - 1);,选择的立方体离我想要的立方体不远,但仍然不是正确的公式。模运算可以解决我的问题,但我不明白它是如何工作的。

所以你有

x = (J - I) * (cubeSize/2);
y = (J + I) * (cubeSize/4);

你想从中计算IJ(因此是I + J*mapSize的索引),对吧?这是一个由两个方程组成的线性系统。

J - I = x * 2 / cubeSize
J + I = y * 4 / cubeSize
I = (y * 2 - x) / cubeSize
J = (y * 2 + x) / cubeSize

相关内容

  • 没有找到相关文章

最新更新