在我目前的项目中,我需要从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方向的角距离的最佳方法是什么?
答案 0 :(得分:1)
在局部坐标系中制作矢量(就像我想的那样string
已经存在)并应用逆spherical coordinate变换。参见链接中的等式(1)到(3)。
in3DDirection