Java 在转换后的形状上处理鼠标坐标
我有个问题,似乎找不到确切的答案 我有一个网格,我已经在三维空间中变换和旋转了Java 在转换后的形状上处理鼠标坐标,java,matrix,processing,Java,Matrix,Processing,我有个问题,似乎找不到确切的答案 我有一个网格,我已经在三维空间中变换和旋转了 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));
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());
}
void mouseMoved(){
浮动isoX=鼠标/(宽度-(宽度/2));
isoX=isoX*((cos(弧度(30))-sin(弧度(0)));
float isoY=mouseY*(cos(弧度(60))-sin(弧度(0));
如果(isoX>posX&&isoXposY&&isoY
作为参考,posX和posY是在程序开始时在arraylist中设置时为每个磁贴指定的位置
这可能只是我的数学问题,但有人能帮我吗?将translate方法封装在push-and-pop矩阵中是一种很好的做法:
pushMatrix();
translate(width-(width/2), 0);
//draw here
popMatrix();
事实上,一旦您进行转换,鼠标坐标的默认值将使用该特定转换进行转换,以便在调用时返回转换后的值。您是否尝试过只使用mouseX和mouseY而不对其执行任何数学运算,然后检查
isoX
和isoY
坐标是否在特定网格位置?每个磁贴都要检查posX
和posY
(它是磁贴类的一部分)。使用当前代码,它的部分工作正常,例如,它正确返回网格顶部的x位置,但也在网格下方,这意味着平移略微倾斜。我真的认为这只是数学问题,但它一直让我头疼。您是否尝试过将mouseX
和mouseY
分别用作isoX
和isoY
?mouseX
和mouseY
只返回实际的屏幕坐标,而不考虑翻译。嗨,托德,所有内容都包含在推送和弹出矩阵方法中。处理仍然会返回未翻译的屏幕像素坐标。那么,请您使用包含问题的源代码的较小部分或子部分来更新您的问题,以便在处理IDE中运行后可以跟踪问题。