输入:两个多维(例如 dim=8)向量 a 和 b。

我需要找出向量 a 和 b 之间的“定向”角(0-2*Pi,而不是 0-Pi)。如果它们不平行,我需要将向量 b 在平面 a,b 中旋转“定向”角度 L。如果它们平行,平面并不重要,但旋转角度仍然相同L。

对于 2d 和 3d 这很容易,但是对于更多维度我迷失了,我在谷歌上没有找到任何东西,我更喜欢使用一些已经证明和测试过的方程(避免我的计算引入的错误:-D)。

预先感谢您提供提示、链接等。

有帮助吗?

解决方案

我相信你应该在向量 a 和 b 生成的平面上工作。无论维度如何,代码都将是相同的(顺便说一句,向量的维度是 根据定义 空间的尺寸)。

您可以通过将 (a,b) 正交化为:

a' = a/||a||
b1 = b - (a'·b)a'  <-- scalar product denoted by ·
b' = b1/||b||

现在您乘坐的飞机具有正交基础,应该可以恢复正常运行。b 在该基础上的坐标是(a'·b,b'·b)。对于 a 来说也是类似的 (||a||,0)。当您想返回到周围空间时,只需将坐标 (x1,x2) 的向量写为 x1 a' + x2 b' 即可。

我希望数学符号不会太混乱。

其他提示

您可能会发现本文很有用: N 维图形的旋转作者:AJ Hanson. 。还有这篇论文: 一般 n 维旋转. 。你也可以看看这个 论坛主题 一群人试图解决这个问题。这是另一篇论文: 关于n维空间中的刚性旋转概念. 。必须。停止。谷歌搜索。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top