我正在做一个运动检测程序,想确定一个人的手是顺时针还是逆时针运动。有人知道最好的方法吗?(我在 AS3 中编码,但任何类似 ECMA 的代码都会有所帮助)。
我相信一种方法是确定,例如,左-右后跟上下还是下上,等等 - 有更好的方法吗?
我正在做一个运动检测程序,想确定一个人的手是顺时针还是逆时针运动。有人知道最好的方法吗?(我在 AS3 中编码,但任何类似 ECMA 的代码都会有所帮助)。
我相信一种方法是确定,例如,左-右后跟上下还是下上,等等 - 有更好的方法吗?
如果您有一个参考点 (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
,因为数组长度会达到最大值。
我的脚本不完整,欢迎编辑、建议和阐述。我希望它能给你一些考虑和工作的东西。