0

Javaでは、角度を付けて2本の線を表す3つの点があります。ここで、共通点から約 10 ピクセル離れた角度の円弧を作成する必要があります。円弧の角度を示します。角度を計算することはできますが、弧を描く方法と弧に角度を表示する方法です。これに対する解決策を見つけることができるコード ビューまたはリンクを教えてください。コードスニペットは以下の通りです。

public void paintComponent(Graphics g){
        Graphics2D g2=(Graphics2D)g;

        ポイント p1=新しいポイント(100,100);
        ポイント p2=新しいポイント(200,100);
        ポイント p3=新しいポイント(100,0);

        Line2D line1=新しい Line2D.Double(p1, p2);
        Line2D line2=新しい Line2D.Double(p1, p3);
        g2.draw(line1);
        g2.draw(line2);
        double angle=getAngle(line1,line2);
        System.out.println(角度);
        //g2.drawArc(110, 100, 20, 20, 100, 30);

    }

    public double getAngle(Line2D line1,Line2D line2){

        double angle1=Math.atan2(line1.getY1()-line1.getY2(), line1.getX1()-line1.getX2());
        double angle2=Math.atan2(line2.getY1()-line2.getY2(), line2.getX1()-line2.getX2());

        Math.toDegrees (角度 1-角度 2) を返します。
    }

DrawArc を使用して、必要な正確な弧を描き、角度を付ける方法がわかりません。

ありがとうございます。それでは、お元気で。

4

1 に答える 1

-1

ドキュメントから、drawArcの引数は次のとおりです。

int x、int y、int width、int height、int startAngle、int arcAngle

xとyは共通の点(p1)であり、幅と高さはおそらく両方とも10です(半径10ピクセルの円弧を描くため)

計算した角度は、反時計回りの方向の円弧のスイープを測定する最後の引数(arcAngle)です。したがって、最後に計算する必要のある部分は開始角度です。これは、おそらく角度1または角度2です(この場合、0は正のx軸または3時の位置です)。

書かれているように、180度を超える円弧を描くことがあるので、2つの線の間の最小の角度を常に見つけたい場合は、より多くのロジックが必要になることに注意してください。

テキストについては、drawStringを使用し、スイープ角度の半分と目的の半径を使用して三角法を使用してxとyを計算できます。ただし、最適な配置を行うには、描画している象限を把握し、そこから調整する必要がある場合があります。

于 2012-10-08T17:42:39.440 に答える