2016-03-12 133 views
1

我需要计算线的方向矢量的笛卡尔方程。用户可以像这样自由旋转视角。来看旋转后的线位置 - 旋转



Point of view来看


点2
Point of view 2


这将是容易,如果我知道两点的线,但我无法检索点的旋转后正确的位置,似乎线的位置保持不变,我不太了解Graphics2D如何旋转works.Here是一块代码。

g3.rotate(Math.toRadians(Double.valueOf(getJtfRotationAngle().getText())) 
     ,eye.getEyePos().getX_pos() 
     ,eye.getEyePos().getY_pos()); 

g3.setColor(Color.BLACK); 

g3.draw(new Line2D.Double(eye.getEyePos().getX_pos(),eye.getEyePos().getY_pos() 
     ,eye.getEyePos().getX_pos()+25,eye.getEyePos().getY_pos())); 
g3.draw(new Line2D.Double(eye.getEyePos().getX_pos(),eye.getEyePos().getY_pos() 
     ,eye.getEyePos().getX_pos(),eye.getEyePos().getY_pos()+25)); 

//This line is the orientation vector 
g3.draw(new Line2D.Double(eye.getEyePos().getX_pos() 
     ,eye.getEyePos().getY_pos() 
     ,eye.getEyePos().getX_pos()+25 
     ,eye.getEyePos().getY_pos()+25)); 

g3.drawOval((int)eye.getEyePos().getX_pos(),(int)eye.getEyePos().getY_pos(),10,10); 
g3.fillOval((int)eye.getEyePos().getX_pos(),(int)eye.getEyePos().getY_pos(),10,10); 

eye.setEyeTruePos(new Point(eye.getEyePos().getX_pos()-x_pos/2,eye.getEyePos().getY_pos()-y_pos/2)); 

在此先感谢您的答复/解释。

回答

1

时,Graphics2D的旋转是这样工作的:

translate(x, y); 
rotate(theta); 
translate(-x, -y); 

因此,在应用了相同的变换到原来的线路,以获得两个新点:

tx=px+x; 
ty=py+y; 
rx=tx*Math.cos(a)-ty*Math.sin(a); 
ry=..... 
pnewx=rx-x; 
pnewy=ry-y; 

与同为另一点(px,py)。