我正在努力做出所谓的微调。基本上这看起来像: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分,我有点困,所以...... 但无论如何,我认为它可以更加简化
答案 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。