如何在三维空间中存储和修改角度
How to store and modify angles in 3D space
这不是关于理解角度物理学,而是关于如何实际实现它
例如,我在每帧使用一个简单的线性插值(使用dT)我在角度单位方面遇到了问题,我希望能够绕任意轴旋转。
(带glm)使用vec3
测量扭矩、惯性和角速度对于单轴非常有效。再多一点,你就会得到万向节锁。(即,您可以围绕局部x、y或z旋转,但叠加会阻止正确的结果)
使用四元数,我无法使它在时间、惯性或长时间内很好地发挥作用。
有什么行之有效的方法来表示这些特征吗?
通常的解决方案是使用旋转的矩阵表示。序列中的两个旋转可以通过乘以它们各自的矩阵来表示。因为矩阵乘法不是对称的,所以2次旋转的顺序很重要——这是应该的。
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 将字符串存储在c++中的稳定内存中
- std::原子加载和存储都需要吗
- C++:将控制台输出存储在宏中更好吗
- 使用QProcess执行命令,并将结果存储在QStringList中
- 独立读取-修改-写入顺序
- 当系统的卷被修改时,如何修改WASAPI环回捕获卷
- 访问存储在向量C++中的结构的多态成员
- 如何从存储在std::映射中的std::集中删除元素
- 修改函数中的指针(将另一个指针作为参数传递)
- 为什么我可以通过引用修改常量返回
- 存储模板类型以强制转换回派生<T>
- 在C++中存储和修改多个列表
- 如何修改数组,从中删除空格,然后将其存储在新数组中
- C++17:是编译器为(静态存储持续时间)const引用绑定创建的可修改的临时对象(和存储)
- C++ 时间存储time_point表达式必须是可修改的左值
- 如何在三维空间中存储和修改角度
- C++将修改后的MySQL时间戳存储为字符串
- 使用std::vector::迭代器修改存储在std::vector中的值
- 在顶点着色器中修改着色器存储缓冲对象