如何知道物体在3D中只旋转了15度
How to know that object has been rotated only in 15 degree chunks in 3D?
我在三维空间中有一个以某个方向定向的三维对象。我怎么知道它从初始旋转q(以欧拉角为单位:0,0,0(开始,只在任意轴上旋转了任意数量的15度。例如,在X轴旋转4*15度,在Y轴旋转7*15度和在Z轴旋转13*15度。我如何检测到这一点?
我试着从物体的旋转矩阵中获取欧拉角,但似乎只有当我只在一个轴上旋转时,它才能正确地检测到情况。如果我开始混合X、Y和Z轴15度的旋转,欧拉角就会变得一团糟。
我100%确信这个物体只旋转了15度。
我相信,旋转矩阵只能分解为四元数,而不能分解为每轴旋转。
我不确定您使用的是什么数学库,但如果提供,您可以使用四元数,这将非常直接地实现您想要的功能。之后可以将它们转换为旋转矩阵。
旋转是不可交换的,因此如果不知道正确的顺序,用欧拉角描述它们是有问题的。如果你知道阶数,你可以建立一个方程组,一边是三个旋转矩阵(由旋转角度参数化(的乘积,另一边是最后的旋转矩阵。给你三个方程式和三个未知数。但是要注意欧拉角表示中的奇点!
如果可以的话,最简单的方法就是存储组件(float3 m_Translation, m_Rotation, m_Scale
(和一个矩阵,只要它们发生变化就会更新(float4x4 m_Matrix
(。要获取数据,只需获取该部分的向量并返回即可。内存使用量很小(12-16个浮点(,计算开销也很小(在更新部分时重新计算矩阵(。
然而,如果不能做到这一点,谷歌建议你可以通过一些类似的工作来分解旋转矩阵。这确实需要大量的数学运算。
如该页所述,D3DX库还有一个分解矩阵的函数:D3DXMatrixDecompose
。
相关文章:
- 在C++中使用OpenCV矩阵中的特征将图像旋转90度
- 顺时针旋转 M*N 矩阵 90 度,C++
- 从iPhone相机拍摄的视频似乎被OpenCV旋转了90度?我该如何解决这个问题?
- 顺时针旋转90度图像
- 将矩阵逆时针旋转 180 度的问题
- C++向量的向量.阵列旋转 90 度
- 如何使用四元数来描述超过360度的旋转角度?
- 在C 中旋转矩阵(2D阵列)45度
- 在C 中旋转像素阵列90度
- 将轴对齐的矩形旋转90度
- 如何使OpenGL相机旋转360度
- 在 iOS 中将 Spirte 矩形旋转 90 度不会显示纵横比
- 将2D转换的1D阵列顺时针旋转90度
- 如何将计算机绘图旋转 90 度
- 如何用OpenCV将图像分成四个象限,并将象限1和象限4旋转180度
- 将矩阵旋转N度
- OpenGl -对象在旋转180度后反转
- 如何知道物体在3D中只旋转了15度
- 从帧缓冲区创建的JPEG被旋转180度
- 字节数组,我需要把它旋转 90 度