我正在使用 chai3d api,它使用 3x3 浮动 pt 矩阵在我的虚拟世界中存储对象方向。
在服务器定期更新之后,我想在客户端预测这些方向,以便我拥有一致的虚拟图形世界。
我通过发送位置和速度值来预测对象(例如 opengl 立方体)的位置。
方向的角速度与位置的速度相同吗?
如果是,我如何从这个 3x3 矩阵计算角速度并将其用于外推?
我正在使用 chai3d api,它使用 3x3 浮动 pt 矩阵在我的虚拟世界中存储对象方向。
在服务器定期更新之后,我想在客户端预测这些方向,以便我拥有一致的虚拟图形世界。
我通过发送位置和速度值来预测对象(例如 opengl 立方体)的位置。
方向的角速度与位置的速度相同吗?
如果是,我如何从这个 3x3 矩阵计算角速度并将其用于外推?
变换矩阵本质上是另一个坐标系中新坐标系的表示。如果您添加一列,您甚至可以将翻译放入其中。如果你记得你的微积分和物理,那么你可能还记得
r = 1/2 a² t + v0 t + r0
v = d/dt r = a + v0
a = d/dt v
要从速度“v”到位置“r”,您必须进行积分。在标量的情况下,您将 v 与时间相乘。但是与矩阵的标量乘法只会缩放它,而不是旋转它。所以你必须做点别的。如果您想使用矩阵来执行此操作,关键字是矩阵幂,即计算矩阵的幂。
假设你有一个微分旋转,d/dt R,那么你可以通过将相应的旋转矩阵无限地乘以它本身来整合它,即取一个幂。
但是还有一种数学上更好的方法可以做到这一点。非常接近于乘以一个因子的东西。那就是:使用四元数而不是矩阵来表示方向。事实证明,简单地缩放一个四元数与仅仅乘以它所描述的旋转是一样的。
你应该用谷歌搜索的关键字(因为 StackOverflow 是在整个四元数理论中引入一个错误的地方)是: