我正在使用滚轮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以上,所以它始终向上计数无数点沿圆圈顺时针旋转多少次,顺时针方向向下计数。
答案 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/