0

特定の方向を指す3Dユニティベクトルがあります。次に、そのベクトルの方向から45度傾斜した新しいユニティベクトルを取得します。この方向は、正確にランダムである必要があります。その新しいベクトルを計算する方法を知っている人はいますか?

(または、これは、原点を中心とした3Dポイントのランダムな方向への45度の回転として表すこともできます。)

「ランダム」コンポーネントを削除するには:古いベクトルから45度傾いたベクトルを見つけることができれば幸いです。そうすれば、そのベクトルの終点を古いベクトルの周りでランダムな距離だけ回転できる可能性があるからです。

4

1 に答える 1

1

ベクトル v1 があるとします。まず、v1 に垂直なベクトル v2 を見つける必要があります。次に、求めたいベクトルは v1 と v2 の半分、つまり ですv3 = norm(norm(v1)+norm(v2))。そして、v2を見つける方法は? v1 と、v1 に平行でない任意のベクトルの外積を取ることができます。したがって、次のようなことができます。

v2 = cross(v1, (1,0,0));
if (dot(v2, v2) < 0.001) v2 = cross(v1, (0,1,0));
v3 = normalize(normalize(v1)+normalize(v2));

最後に、v1 と v3 の間の角度は 45 度です。

于 2012-05-13T23:03:14.103 に答える