2012-05-11 13 views
0

私は、ある方向に向いている3Dユニティベクトルを持っています。今、私はそのベクトルの方向から45度傾いた新しい単位ベクトルを得たいと思います。方向は正確にランダムでなければなりません。誰かが新しいベクトルを計算する方法を知っていますか?原点の周りの3D点を回転/ 3Dベクトルを傾ける

(あるいは、これは45度ランダム方向の原点の周りに3D点の回転として表すことができる。)

を「ランダム」成分を除去するために:私はすべてを見つけることができる場合、私は幸せ私の古いベクトルから45度傾いたベクトルです。なぜなら、そのベクトルの終点を古いベクトルの周りのランダムな距離で回転させることができるからです。

+0

クォータニオンについてお読みください。彼らはこれであなたを助けます。 – IronMensan

答えて

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度です。