我无休止地寻找一种方法来获得我画布上形状的实际旋转值/度。
http://www.rfgraham.net/demos/canvas-spinner
如你所见,我的中间有一个带箭头的圆圈。单击画布时,箭头开始旋转。再次单击以停止箭头,它将向控制台输出为箭头对象存储的当前旋转值。
我对数学并不擅长,我从Kineticjs手中获取了动画代码,因为这是我正在使用的库。然而,我选择的代码可能是我回来的轮值的罪魁祸首。
我的目标是弄清楚箭头落在的四个圆圈中的哪一个。如果我可以以某种方式获得360度的当前旋转,我可以做类似的事情 -
var rotation = 360 / arrow.rotate.val
if(rotation <= 90) {
console.log("First quarter")
}
然而,我获得的是一个完整轮换= 6.xxxxxxxxxxxxx
答案 0 :(得分:0)
值是弧度,所以半圈,以度数“180”为1 * pi(3.1415 [...]),整圈,以度数“360”为2 * pi(6.28 .. ..)
获取值,让我们称之为v,并找出它是Math.PI的次数:
var v = arrow.rotate.val;
var percent = 2*Math.PI/v;
var degrees = 360 * percent;
但真正的答案当然是“你不需要学位”。数字是从0到6.28还是在0到360之间无关紧要,只要您知道完整转弯的数字。在这种情况下,2 * Math.PI,所以只需使用那个=)
答案 1 :(得分:0)
实际上,你的代码确实有答案,attrs.rotation,显示弧度(theta)
console.log(arrowGrp.attrs.rotation) //shows radian
您只需将其更改为学位。
console.log(arrowGrp.attrs.rotation * (180/Math.PI) % 360) //shows degrees
仅供参考,在弧度和度数之间转换的公式是。
degrees = radians * (180/Math.PI)
radians = degrees * (Math.PI/180)