【发布时间】:2016-12-16 13:21:29
【问题描述】:
在我当前的项目中,我需要从 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 方向的角距离的最佳方法是什么?
【问题讨论】:
-
有两个角度描述了旋转矩阵(坐标系)局部向量的方向。你要哪个角度?或者,旋转矩阵定义了三个正交方向向量,您可以通过计算the angle between two vectors 找到向量与每个方向的角度。
-
@ja72 我想要他们两个。就像上面的代码一样,create 函数会有一个参数 bool isSideAngle。根据这个布尔值,我将计算侧角或前角。
-
in3DDirection是世界坐标还是本地坐标?