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 size - 2 を割る矢印のサイズ。
int x1, y1 - 最初の形状の x 座標と y 座標。(形状の中心)
int y2, x2 - 2 番目の形状の x 座標と y 座標。(形状の中心)
これらの写真で私が何を意味するかを見ることができます:
形状を完全に周回しているように見えるので、これに近づいていると感じています。これは、直角または点で回転していないことを示唆しています。