acos0 と pi の間の値を与えるとしましょう。
sからへのベクトルtが と呼ばれるとしましょうu。すでに計算したように、
acos((v . u)/(|v| * |u|))
角度を与えますalpha。実際には、 1 つまたは他の方向に回転させるvことができます。ualpha
おそらくこれは 2D で必要ですが、最初に 3D で説明します。
回転は、 と の両方に垂直なベクトルを中心とする必要がvありuます。このベクトルは、もちろん 2 つのクロス積です。u x v
例を見てみましょう:
/ v
/
/\ alpha
/ )
------------ u
この場合、u x vモニターの外側に向かってベクトルを与えます。同時に、 と平行になるように反時計回りalphaに配給を行う必要があることがわかります。vu
つまり、3D では、に対して反時計回りに計算w = u x vし、常に回転させるv必要があります。または、 ( は)に対して時計回りに回転できます。alphawvalpha-wv x u
2D では、回転したいのですzが、どちらの方向かわかりません。上記と同じ方法を適用できます。
- コンピューティング
w = u x v
- z が正の場合
w(x と y はゼロになります)
- 次に、
v反時計回りに回転させる必要があります。
- それ以外の場合は、
v時計回りに回転する必要があります。