トルクは、力が加えられた点とオブジェクトの重心の間のベクトルに垂直に投影された、加えられた力です。したがって、直径に対して垂直に引っ張ると、トルクは加えられた力に等しくなります。重心から直接引き離すと、トルクはゼロになります。
通常、これは、元のマウス ダウン ポイントをマウスの現在の位置 (オブジェクト ローカル座標) に接続するスプリングをモデル化することによって行います。スプリングと摩擦を使用すると、マウスの動きが少し滑らかになります。
2D 物理パッケージとしての Chipmunk について良いことを聞いたことがあります。
http://code.google.com/p/chipmunk-physics/
わかった、もう遅くなったし、寝なきゃいけない。しかし、ここにいくつかの出発点があります。すべての計算を 1 つの座標空間で行うか、オブジェクトごとに座標空間を定義することができます。ほとんどのアニメーション システムでは、計算が簡単になるため、オブジェクトごとに座標空間を使用し、変換行列を使用して変換します。
計算の基本的な順序は次のとおりです。
マウス ダウンでヒット テストを実行し、イベントの座標を (オブジェクト座標空間に) 保存します。
マウスが移動すると、移動距離を表すベクトルが作成されます。
バネによって発生する力は k * M です。ここで、M は、ステップ 1 からの最初のマウス ダウン ポイントと現在のマウス位置との間の距離です。k はばねのばね定数です。
最初のマウスダウン ポイントから開始して、そのベクトルを 2 つの方向ベクトルに投影します。1 つの方向はオブジェクトの中心に向かっており、もう 1 つの方向はそこから 90 度です。
オブジェクトの中心に向かって投影された力は、オブジェクトをマウス カーソルに向かって動かし、もう 1 つの力は軸の周りのトルクです。物体がどれだけ加速するかはその質量に依存し、回転加速度は角運動量に依存します。
オブジェクトが移動している媒体の摩擦と粘性によって抗力が発生し、時間の経過とともにオブジェクトの動きが単純に減少します。
または、それを偽造したいだけかもしれません。その場合、長方形の (x,y) 位置とその現在の回転 phi を保存するだけです。次に、これを行います。
- 世界座標でのマウスダウン位置のキャプチャ
- マウスが移動すると、マウスの位置の変化に応じてボックスを移動します
- マウスとオブジェクトの中心の間の角度 (ここでは atan2 が便利です)、およびオブジェクトの中心と最初のマウス ダウン ポイントの間の角度を計算します。2 つの角度の差を四角形の回転に追加します。