我有一个指向某个方向的3D统一向量。现在我想得到一个新的单位向量,它与该向量的方向倾斜45度,在哪个方向上必须是随机的。有没有人知道计算新矢量的方法?
(或者,这可以表示为在原点周围以随机方向旋转3D点45度。)
删除'随机'组件:如果我能找到与我的旧矢量相差45度的任何矢量,我很高兴,因为那时我可以将该矢量的终点旋转到旧的随机距离矢量。
答案 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度。