web-dev-qa-db-ja.com

Javaで特定の角度で線を引く

ラインの始点で常に同じ(x、y)と、同じラインの終点で変化する(x、y)があるとします。ラインも常に40pxの長さです。プログラムの開始時に、線は垂直方向から始まります(0度と呼びます)。ユーザー入力に基づいて、端(x、y)のみを変更することにより、原点から特定の角度で線を再描画する必要があります。

あなたがそれを必要とする場合に考えるためのいくつかのより多くの食べ物:

私はこれを計算してJavaで動作させるようにしようとしています。円弧の弧の長さに基づいて点を計算するように数学を機能させることはできますが、Javaを実行する方法がわかりません。

私は常に三角形の2つの辺の長さを知っているので、三角形の角度に基づいて簡単に機能すると思います(40pxの長さの線によって形成される1つの辺と、その線の始点と境界線によって形成されるもう1つの辺) JPanel)およびこれらの2つの線が形成する角度。それでも、私の脳はそれを理解しようとすることからドロドロです。どんな助けでも大歓迎です。

更新:

@casablancaは正しい軌道に乗ってくれました。私は自分のトリガー関数をブラッシュアップし、これが私がそれを機能させた方法です。

まず、90度がまっすぐであることに気づきませんでしたが、自分の解決策にその事実を反映させることに気づいたのです。外に出るフレームの下中央から線を引いていきました。ユーザーが指定した角度が90度未満の場合、三角形のopposite側は画面の右側にあり、ユーザーが指定した角度が大きい場合は画面の左側にあるため90度よりもその事実を考慮して数式を調整する必要があったため、4つの方法があります。1つは画面左側のx座標用です(ユーザーが指定した角度が90度より大きい場合)。 、画面の左側のy座標用(ユーザー指定の角度が90度より大きい場合)、ユーザー指定の角度が90未満の場合、画面の右側も同様度。 int lengthすべてのメソッドで、斜辺の長さです。 ご協力ありがとうございます@casablanca!

public double leftSideX(double angle, int length){
    double x = frameWidth/2 - (length * Math.cos(Math.toRadians(90-(Math.toDegrees(angle)-90))));
    return x;
}

public double leftSideY(double angle, int length){
    double y = frameHeight - (length * Math.sin(Math.toRadians(90-(Math.toDegrees(angle)-90))));
    return y;
}

public double rightSideX(double angle, int length){
    double x = frameWidth/2 + (length * Math.cos(angle));
    return x;
}

public double rightSideY(double angle, int length){
    double y = frameHeight - (length * Math.sin(angle));
    return y;
}
30
ubiquibacon

これはあなたが探しているものですか?

startX = x;
startY = y;
endX   = x + 40 * Math.sin(angle);
endY   = y + 40 * Math.cos(angle);

そして、使用しているAPIで(startX、startY)から(endX、endY)まで線を引きます。

また、angleはラジアン単位であることにも注意してください。度単位の場合は、最初に変換する必要があります。

angle = angle * Math.PI / 180;
68
casablanca