【发布时间】:2014-03-07 10:28:02
【问题描述】:
我有一个问题,似乎找不到明确的答案。
我有一个网格,我在 3D 空间中对其进行了变换和旋转。
translate(width-(width/2), 0);
rotateX(radians(30));
rotateZ(radians(60));
for(tile t: grid){
t.draw();
}
然后在每个图块对象中,我正在检查鼠标是否在该图块中:
void mouseMoved(){
float isoX = mouseX / (width-(width/2));
isoX = isoX * ((cos(radians(30))-sin(radians(0))));
float isoY = mouseY * (cos(radians(60))-sin(radians(0)));
if(isoX > posX && isoX < posX+20
&& isoY > posY && isoY < posY+20)
println(getX()+", "+getY());
}
作为参考,posX 和 posY 是在程序开始时在 arraylist 中设置时赋予每个图块的位置。
这可能只是我的数学问题,但有人可以帮忙吗?
【问题讨论】:
-
您是否尝试过只使用 mouseX 和 mouseY 而不对其进行任何数学运算,然后检查
isoX和isoY坐标是否在特定的网格位置内? -
posX和posY正在按图块检查(它是图块类的一部分)。使用当前代码,它是部分工作的,例如它正确地返回了网格顶部的 x 位置,但也在网格下方,这意味着翻译略微倾斜。我真的认为这只是数学问题,但这让我很头疼。 -
你试过只使用
mouseX和mouseY分别作为isoX和isoY吗? -
mouseX和mouseY只返回实际的屏幕坐标,而不考虑翻译。
标签: java matrix processing