2

我正在做一个运动检测程序,想确定一个人的手是顺时针还是逆时针运动。有人知道最好的方法吗?(我在 AS3 中编码,但任何类似 ECMA 的代码都会有所帮助)。

我相信一种方法是确定,例如,左-右后跟上下还是下上,等等 - 有更好的方法吗?

4

1 回答 1

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 的决定就越好。

最后,也是最重要的一点,我的脚本在弧度计算中确实考虑了负数,它假设一切都是正数——这需要一些调整。

PS:您需要不时清除samples,因为数组长度会达到最大值。

我的脚本不完整,欢迎编辑、建议和阐述。我希望它能给你一些考虑和工作的东西。

于 2013-03-23T00:10:41.060 回答