私はモーション検出プログラムを実行しており、人が手を時計回りまたは反時計回りに動かしているかどうかを判断したいと考えています。誰かがこれを行うための最良の方法を知っていますか? (私は AS3 でコーディングしていますが、ECMA のようなコードが役に立ちます)。
1 つの方法は、たとえば、左右の後に上下または上下が続くかどうかなどを判断することだと思います — より良い方法はありますか?
私はモーション検出プログラムを実行しており、人が手を時計回りまたは反時計回りに動かしているかどうかを判断したいと考えています。誰かがこれを行うための最良の方法を知っていますか? (私は AS3 でコーディングしていますが、ECMA のようなコードが役に立ちます)。
1 つの方法は、たとえば、左右の後に上下または上下が続くかどうかなどを判断することだと思います — より良い方法はありますか?
基準点 (0,0) がある場合、経時的な角度の変化をサンプリングできます。
var sprite:Sprite = new Sprite();
var samples:Array = [];
setInterval(function(){
var len = samples.push(Math.atan2(sprite.mouseY,sprite.mouseX));
if ( len >=2 ) {
if ( samples[len-2]-samples[len-1] > 0 ) {
// clockwise
} else {
// counter-clockwise
}
}
},1000/stage.frameRate);
参照はスプライトの左上 (または によるその自然な 0,0 ポイントatan2
) であるため、このスニペットはスプライトに相対的なマウス座標をサンプリングします。
また、考慮するサンプルが多いほど (私は 2samples[len-2]
とのみをサンプリングsamples[len-1]
しています)、cw または ccw の決定がより適切になります。
最後に、そして最も重要なことは、私のスクリプトはラジアン計算で負の数を考慮し、すべてが正であることを前提としています - これには微調整が必要です。
samples
PS:配列の長さが最大になるため、時々クリアする必要があります。
私のスクリプトは不完全です。編集、提案、詳細化を歓迎します。私の希望は、それがあなたに何かを考えさせ、そこから働くことを与えることです.