给定3D旋转矩阵和3D方向矢量找到角度差

时间:2016-12-16 13:21:29

标签: c++ matrix 3d

在我目前的项目中,我需要从3D旋转矩阵中找到方向矢量的角距离。

假设这样做的遗留代码是错误的并且无法正常工作。即使它是错误的我想分享它,因为它可能有助于理解我的问题。

double angularDiff( bool isSideAngle, const Matrix& in3DRotationMatrix, const Vector& in3DDirection )
{
    // Unit vector convertion
    in3DDirection.Normalize();

    // Simple matrix vector multiplication 
    Vector newDir = in3DRotationMatrix*in3DDirection;

    // Code suppose to find side angle difference 
    // or forward angle difference according to boolean parameter
    if ( isSideAngle )
        result = atan2(newDir[1],  newDir[0]);
    else 
        result = atan2(newDir[2],  newDir[0]);

    return result;    
}

上述方法中缺少的东西是简单的还是我应该完全改变我的方法?给定方向矢量,从旋转矩阵中找到X和Y方向的角距离的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

在局部坐标系中制作矢量(就像我想的那样string已经存在)并应用逆spherical coordinate变换。参见链接中的等式(1)到(3)。

in3DDirection