围绕圆圈拖动点超过< 0和> 360

时间:2015-01-17 00:36:56

标签: javascript user-interface trigonometry

我正在使用滚轮UI。 我想要做的一件事就是超越< 0和> 360

演示说了千言万语:http://jsfiddle.net/p0eabyj3/

mouseX = parseInt(e.clientX - offset.left);
mouseY = parseInt(e.clientY - offset.top);

var rads = Math.atan2(mouseY - center, mouseX - center);
var x = 100 * Math.cos(rads) + center;
var y = 100 * Math.sin(rads) + center;
var _degree = (rads > 0 ? rads : (fullCircle + rads)) * 360 / fullCircle;
...

当移动鼠标时,它会在圆圈上使用基本触发放置一个点。

我得到的值是0-359。但我希望它在顺时针方向移动时连续计数在360以上,所以它始终向上计数无数点沿圆圈顺时针旋转多少次,顺时针方向向下计数。

2 个答案:

答案 0 :(得分:2)

答案就在这里 - > http://jsfiddle.net/w7f13c5n/1/

if(last_degree - degree > 180)
    count += 360;
else if (last_degree - degree < -180)
    count -= 360;

答案是douglenz和Jongware之间的组合。如果这是干净的数学,那将是一个完美的答案。但这解决了我的问题。

答案 1 :(得分:1)

您可以尝试以下逻辑:

last_degree = degree;
degree = (rads > 0 ? rads : (fullCircle + rads)) * 360 / fullCircle;

if(degree - last_degree > 0) res+= 1;
else res -= 1;

这里是整个事情的小提琴:http://jsfiddle.net/w7f13c5n/