两个 N 维向量之间的旋转方向/角度(符号)

Direction (sign) of rotation/angle between two N-dimensional vectors

提问人:FirefoxMetzger 提问时间:6/12/2021 更新时间:6/12/2021 访问量:209

问:

让我们假设我有一个向量,比如 .我可以在某些角度上将向量 A 旋转一些角度,使其在旋转之后变成。给定两个向量,向量 A 和向量 B,如何计算出旋转的角度和方向?vectorA=[1,2,3,4]alphadirectionvectorB=[6,7,8,9]

从角度来说,这很简单:我可以使用这个问题的任何一个答案。

对于方向(顺时针/逆时针),我有点头绪。我知道如何在 2 维和 3 维中做到这一点。如何对 N 维(即 4D 及以上)执行此操作?

矢量 几何 旋转 语言无关

评论

0赞 Spektre 6/12/2021
如果您知道旋转平面,则可以将这些ND矢量投影到2D,并使用标准的3D叉积检查z分量的符号,或者如果您不知道旋转平面,则可以执行。问题是平面法线是通过具有输入向量的叉积计算的,而 4D 只有 2 个(缺少一个)......然而,在那里也使用公式而不是交叉,IIRC 在 ND 中使用 2 个操作数,但是我找不到公式,它也不会对您有所帮助,因为法线不会是您大多数时候需要的轴......CW/CCW=sign(dot(cross(v0,v1,v2...),axis))n-1dot
0赞 FirefoxMetzger 6/12/2021
@Spektre感谢您的评论!实际上,获得旋转平面很容易。知道这一点就完全定义了它。但是,这样做后还剩下一些尺寸。在3D中,这为您提供了法向量的方便概念,我可以使用您建议的公式。在 4D 中,这将是 ,所以我必须选择 2 个法向量?这是如何工作的?vectorAvectorBN-23-2=14-2=2
0赞 Spektre 6/12/2021
如果你拿到飞机......然后 1.在该平面内构造 2 个相互垂直的单位向量。然后将任何(点/矢量)转换为 2D uv 映射,其中平面内的任何点......这只是 2D 矢量。其中一个向量可能是您的输入向量,其他必须计算......U,VPu=dot(P-P0,U); v=dot(P-P0,V);P0(u,v)U,V
0赞 Spektre 6/12/2021
最后yyy我找到了等式......确定它靠近我的一个 ND 答案 如何在 python 中生成一个随机定向的高维圆? 但是请注意,我认为如果您使用输入向量,那么它将不起作用,因为它们的顺序总是与十字架匹配......因此,您必须暗示一些同化规则,即平面的法线应该朝哪一边走P2 = P2 - dot(P1, P2)*P1; P2 = P2 / | P2 |
0赞 Spektre 6/12/2021
你知道喜欢视图方向或其他东西,因为如果你从一侧看旋转,它的 CW 和另一侧看 CCW ......例如,如果它与某些网格相关,则可以使用从网格向外指向的轴/法线,或者使用相机视图方向...或者你得到的任何其他东西

答: 暂无答案