我正在做一个运动检测程序,想要确定一个人是否正在顺时针或逆时针运动。有人知道最好的方法吗? (我在AS3编码,但任何类似ECMA的代码都会有帮助。)
我认为,有一种方法可以确定,例如,左右是后跟上下或后下,等等 - 是否有更好的方法?
答案 0 :(得分: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);
引用是精灵的左上角(或atan2
的自然0,0点),因此该片段相对于精灵对鼠标坐标进行采样。
此外,您考虑的样本越多(我只抽取2 samples[len-2]
和samples[len-1]
),cw或ccw的决定就越好。
最后,最重要的是,我的脚本确实考虑了弧度计算中的负数,它假设一切都是正数 - 这需要一些tweeking。
PS:你要一次又一次地清除samples
,因为数组长度会最大化。
我的脚本不完整,我欢迎编辑,建议和详细说明。我希望它能为你提供一些可以考虑和工作的东西。