0

Leap Motion (私は最新のLeapJS APIを使用しています) から (Y 軸に沿った) 正しい手のひらの回転角度を取得するにはどうすればよいでしょうか?

rotationAngle(sinceFrame)メソッドと の両方を試しましたframe._rotation。ただし、 はrotationAngle()に近い非常に小さな値を返します0。これは、現在のフレームに基づいて計算された回転角度のようです (現在のフレームからのデータのみを記録しているように見えるため、 で を定義する方法sinceFrame) Leap.loop(function(frame)){}

そして、frame._rotationは 3*3 行列を返します (API ドキュメントに含まれていないため、これが何であるかはわかりません)。したがって、これらの方法から正しい Y 軸の回転角度を取得する方法はあるのでしょうか?

4

1 に答える 1

0

jump.js ライブラリの最新バージョンには、Hand オブジェクトのメンバーとして roll() 関数が含まれています。(roll() だけが必要な場合は、pitch() と yaw() もあります。) roll() 関数は次のように定義されます。

Hand.prototype.roll = function() {
  return Math.atan2(this.palmNormal[0], -this.palmNormal[1]);
}

余談ですが、rotationAngle() を使用して現在の手のひらの角度を取得する必要がないため、rotationAngle() 関数は 2 つのフレーム間で発生した回転を取得します。sinceFrame の場合、開始フレームへの参照を保存するか、Controller オブジェクトによって維持される履歴バッファから過去のフレームを取得できます。Leap.loop() 関数では Controller オブジェクトに直接アクセスできませんが、独自のオブジェクトを作成できるはずです。frame._rotation は、2 つのフレーム間の変換の計算に使用される内部変数であることに注意してください。それ自体はあまり役に立ちません。

于 2013-11-24T23:09:48.493 に答える