在raphaeljs画一个轮子

时间:2012-06-20 21:37:12

标签: javascript raphael

我正在努力做出所谓的微调。基本上这看起来像:http://jsfiddle.net/r9KQK/1/

稍后我会有一些音频播放器,当我们在平板电脑上使用时,这件事会有助于选择秒数。

问题是,当你尝试移动红色圆圈时,它会在绿色圆圈的顶部和底部通过时奇怪地掉落,但不会在0或PI / 2处,例如-260 ..- 269和181 ... 190度

试着移动它,你会看到错误。

我的代码出了什么问题?

提前致谢

更新

上次更新:http://jsfiddle.net/r9KQK/17/

在这个例子中,我得到0..360范围内的度数。但相反,我应该在我开始拖动的位置和我结束它的位置之间得到delta度,但是我无法计算出数学。我还应该考虑红圈的方向,以便delta为+或 - = \

更新

最后:http://jsfiddle.net/r9KQK/18/

但是代码非常糟糕。虽然是凌晨2点46分,我有点困,所以...... 但无论如何,我认为它可以更加简化

1 个答案:

答案 0 :(得分:5)

这种情况正在发生,因为当DeltaX为零时,Math.atan的参数会变为无穷大。我建议使用atan2,它会自动处理这个角落的情况:

function(dx, dy, x, y) 
{
    var deltaY = this.oy + dy - fineTuning.ring.attr('cy');
    var deltaX = this.ox + dx - fineTuning.ring.attr('cx');
    var angle = Math.atan2( deltaY, deltaX );

    // etcetera, etcetera

或查看fiddle