首页 文章

如何在3D中给定轴法线的2个向量之间计算有角度? [关闭]

提问于
浏览
-1

假设我有两个矢量A和B,以及一个轴(归一化矢量),我如何找到A和B之间的角度,使得A旋转后的角度(轴,角度)和B wrt与给定轴之间的角度差异旋转后,A不必等于B.基本上我想找到指定平面中A和B之间的角度差 .

注意:这与找到2个向量之间的最短角度不同,因为轴不是A和B之间的叉积 . 因此,技术here(以及许多SO答案)不适用 . 这需要在3D中工作 .

2 回答

  • 0

    我不认为问题有解决方案,除非A和B都是相同的长度,而A和B都与轴形成相同的角度(通常意义上是矢量之间的最短角度) . 我会假设这些是给出的 .

    在这种情况下,一种解决方案是计算A和B的正交投影到与轴正交的平面中 . 这可以通过减去轴方向上的分量来完成 . 因此,如果我在轴的方向上有一个单位向量并将其称为X,那么计算就像是

    Aproj = A - dot(A, X)X
    Bproj = B - dot(B, X)X
    

    然后 AprojBproj 之间的角度(通常意义上是最短角度)是围绕您要询问的轴的旋转角度 .

    我不确定这是否是计算它的最简单方法,但它应该非常普遍 .

  • 0

    点积给出A和B之间的角度 . 在Fortran中类似于:dotAB = DASIN(DOT(A / | A |,B / | B |)) .

    交叉积给出A和B的正交向量 .

    当乘以角度DotAB时,Xproduct向量朝向平面(或轴)的投影应该会到达那里 . 你可能会在那里成为正弦或余弦 .

相关问题