给定的3D旋转矩阵和3D方向矢量发现角差
Given 3D rotation matrix and 3D direction vector finding angular difference
在我当前的项目中,我需要从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方向的角度距离的最佳方法是什么?
在局部坐标系统中制作向量(就像我认为in3DDirection
已经在)中,并应用逆球坐标转换。请参阅链接中的等式(1)至(3)。
double x = in3DDirection[0], y = in3DDirection[1], z=in3DDirection[2];
double r = sqrt(x*x+y*y+z*z);
theta = atan2(y,x); // range is -pi..pi
phi = acos(z/r); // range is -pi/2..pi/2
相关文章:
- 无法将结构注册为增强几何体3D点
- OpenGL大的3D纹理(>2GB)非常慢
- 是什么导致了Unity 3D中的"错误线程异常"?
- 如何声明一个可以在整个程序中使用的全局 2d 3d 4d .. 数组(堆版本)变量?
- CPU 瓶颈;处理具有许多非静态对象的 3D 场景渲染的简单方法
- 如何使用Qt 3D库加载和显示搅拌机.obj源文件场景
- 如何从 3D 曲面网格中删除自相交三角形?
- CUDA 使用共享内存平铺 3D 卷积实现
- 检查框内的 3D 点
- 如何在 3D OpenGL 场景上绘制 SDL 2D 矩形?
- Frank Luna 在他的书"使用 DirectX12 进行 3D 游戏编程"的介绍中盒子示例的问题
- 使用 C++在 OpenGL 中对 3D 多边形进行纹理处理
- 使用 C++在 OpenGL 中移动自动旋转的 3D 多边形
- 是否可以使用 DirectX 3D 11 绘制由三角形组成的圆?
- 如何使用条件计算 3D 网格中从一个点到另一个点的所有路径
- 在 OpenGL 中使用键盘移动 3D 形状,C++
- 是否可以制作没有内部分割的cgal 3d多多马因网格?
- CTest 项目目录.未发现任何测试
- 请发现它在 dev 中工作的错误,但在 hackerrank 中不起作用
- 给定的3D旋转矩阵和3D方向矢量发现角差