我有一个问题,似乎无法找到明确的答案。
我有一个网格,我在3D空间中进行了转换和旋转。
translate(width-(width/2), 0);
rotateX(radians(30));
rotateZ(radians(60));
for(tile t: grid){
t.draw();
}
然后在每个tile对象中,我正在检查鼠标是否在该tile中:
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中设置时给每个图块的位置。
这可能只是我的数学,但任何人都可以帮忙吗?
答案 0 :(得分:0)
最好将translate方法包装在push和pop Matrix:
中pushMatrix();
translate(width-(width/2), 0);
//draw here
popMatrix();
实际上,一旦进行了平移,鼠标坐标的默认值将使用该特定变换进行转换,以便它们在调用时返回转换后的值。