处理翻译形状上的鼠标坐标

时间:2014-03-07 10:28:03

标签: java matrix processing

我有一个问题,似乎无法找到明确的答案。

我有一个网格,我在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中设置时给每个图块的位置。

这可能只是我的数学,但任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

最好将translate方法包装在push和pop Matrix:

pushMatrix();
translate(width-(width/2), 0);
//draw here
popMatrix(); 

实际上,一旦进行了平移,鼠标坐标的默认值将使用该特定变换进行转换,以便它们在调用时返回转换后的值。