1

( a , b ) から ( x , y ) までの線があり、( x , y ) から始まる長さ ℓ の線を描きたいと思います。元の線とは θ の角度になります。

この新しい線の終点の座標を計算するにはどうすればよいですか? 図を参照してください。

4

2 に答える 2

2

よし、いろいろ書き込んだ結果、以下のようになった。

破線は、x 軸と y 軸に平行な線を表します。

m = x − a

n = y − b

α = tan −1 (n / m)

β = α − θ

p = ℓ cos β

q = ℓ sin β

c = x + p

d = y + q

于 2012-12-05T23:18:47.203 に答える
2

この種のものには、デカルト座標よりもベクトル代数を使用する方がほとんどの場合簡単です。ポイントにラベルを付けることから始めましょう。

ここに画像の説明を入力

R(θ)を反時計回りに θ ラジアン回転する行列とする:

次に計算します。

v = BA ( AからBへのベクトル)

v^ = v / | v | ( v方向の単位ベクトル)

ŵ = R(−θ) v̂ ( BC方向の単位ベクトル; 回転は時計回りなので、ここでは R(θ) ではなく R(−θ) が必要です)

w = ℓ ŵ ( BC方向の長さ ℓ のベクトル)

C = B + w

このアプローチにより、逆正接を計算する必要がなくなりますが、これには注意が必要です (単純に行うと、BがA の垂直方向の上または下にあるときに問題が発生します。ただし、ほとんどの言語には、atan2このケースを処理するためのような関数があります)。

ベクトル ライブラリを備えた適切なプログラミング言語では、おそらく次のように、これをワンライナーで記述できるはずです。

C = B + (B - A).unit().rotate(-theta) * l
于 2012-12-06T15:13:42.290 に答える