输入:两个多维(例如dim = 8)向量a和b。
我需要找出那些矢量a和b之间的“有向”角度(0-2 * Pi,而不是0-Pi)。如果它们不平行,我需要在平面a,b中以“定向”角度L旋转矢量b。如果它们是平行的,则平面无关紧要,但旋转角度仍然是相同的L.
对于2d和3d这很容易,但是对于更多维度我迷失了,我没有在谷歌上找到任何东西,我更喜欢使用一些已经证实和测试的方程式(避免我的计算引入的错误:-D)
提前感谢您提供提示,链接等。
答案 0 :(得分:2)
您可能会发现本文很有用:Rotations for N-Dimensional Graphics by AJ Hanson。还有这篇论文:General n-Dimensional Rotations。你也可以查看这个forum thread,其中一群人试图解决这个问题。这是另一篇论文:On the Rigid Rotation Concept in n-Dimensional Spaces。必须。停止。谷歌搜索。
答案 1 :(得分:1)
我相信你应该在你的矢量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 ||,0)。如果要返回环境空间,只需将坐标(x1,x2)的矢量写为x1 a'+ x2 b'。
我希望数学符号不会太混乱。