2012-05-11 98 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度。