给定对象的线速度和角速度,如何在 PhysiJS 中查询对象点的线速度(相对于世界空间)?
为此,我正在考虑在对象上创建一个不可见的顶点,但我认为 API 甚至没有提供这种功能。我需要根据物体的平移和旋转速度自己计算吗?(如果是这样,THREE.js 或 PhysiJS 是否提供了一种直接的方式来做到这一点?)
从第一原则:
- 给定
object.position
(1) - 给定点在世界空间中的位置
object.localToWorld(point)
(2) - 给定
object.getLinearVelocity()
(3) - 给定
object.getAngularVelocity()
(4)
所以我需要:
- 从 (2) 中减去 (1) 以给出点在世界空间 (5) 中的偏移量
- 使用 (4) 和 (5) 获得点相对于对象 (6) 的线速度
- 将(6)和(3)相加得到点的总线速度
对于第一步和第三步,我可以使用 Three.js 的 Vector3.sub(Vector3)
和.add(Vector3)
方法,但是中间操作让我望而却步,尽管我猜想是一种乘法。鉴于 (4) 可以是欧拉角或四元数,我应该使用哪种操作?
我对矩阵的了解非常有限(而且生疏!)并且不存在四元数。
Three.js 的 API 文档在这里
谢谢