オブジェクトの線形速度と角速度が与えられた場合、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) を追加して、ポイントの総線速度を取得します。
その最初と 3 番目のステップでは、Three.js の Vector3.sub(Vector3)
と.add(Vector3)
メソッドを使用できますが、中間の操作は私を避けていますが、一種の乗算だと思います。(4) がオイラー角またはクォータニオンになる可能性がある場合、どのような操作を使用すればよいでしょうか?
行列に関する私の知識は非常に限られており(そして錆びています!)、四元数は存在しません。
Three.js の API ドキュメントはこちら
ありがとう