我正在使用Java的Graphics2D庫來繪製各種形狀,並用線條將它們連接在一起。這些行中的一些將需要在行尾的箭頭。這些形狀可以在任何位置,這樣箭頭的角度就會改變。如何旋轉一個點的多邊形
到目前爲止,我的代碼繪製箭頭並旋轉它,除非它沒有在正確的角度或在正確的位置。當我在屏幕周圍移動我的形狀時,箭頭似乎繞着它指向的形狀運行。 (座標X2,Y2)
private static void drawArrow(Graphics2D g, int size, int x1, int y1, int x2, int y2) {
double dx = x2 - x1, dy = y2 - y1;
double theta = Math.atan2(dy, dx);
AffineTransform at = AffineTransform.getTranslateInstance(x2, y2);
Polygon p = new Polygon();
p.addPoint(0, 0);
p.addPoint(size, 0 - size);
p.addPoint(0 - size, 0 - size);
at.rotate(theta, x2, y2);
java.awt.Shape shape = at.createTransformedShape(p);
g.fill(shape);
}
INT大小 - 第一形狀的x和y COORDS - 箭頭除法2.
INT X1,Y1的尺寸。 (形狀的中心)
int y2,x2 - 第二形狀x和y座標。 (形狀的中心)
你可以明白我的意思,這些圖片:
我有一種感覺,我很接近得到這個,因爲它似乎完美地軌道的形狀,這暗示了它並不是以正確的角度或點來旋轉。
您可以在翻譯它之前嘗試旋轉它... – MadProgrammer
'double theta = Math。atan2(dy,dx);'你試過打印這個值嗎? – Cruncher