0

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 座標。(形状の中心)

これらの写真で私が何を意味するかを見ることができます: 例 1

例 2

形状を完全に周回しているように見えるので、これに近づいていると感じています。これは、直角または点で回転していないことを示唆しています。

4

2 に答える 2