围绕原点旋转3D点/倾斜3D矢量

时间:2012-05-11 20:14:33

标签: vector 3d rotation translation

我有一个指向某个方向的3D统一向量。现在我想得到一个新的单位向量,它与该向量的方向倾斜45度,在哪个方向上必须是随机的。有没有人知道计算新矢量的方法?

(或者,这可以表示为在原点周围以随机方向旋转3D点45度。)

删除'随机'组件:如果我能找到与我的旧矢量相差45度的任何矢量,我很高兴,因为那时我可以将该矢量的终点旋转到旧的随机距离矢量。

1 个答案:

答案 0 :(得分: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度。