1弧度 = degrees * PI / 180;
1度 = radians * 180 / PI;
1弧度 = degrees * Math.PI / 180;
1度 = radians * 180 / Math.PI;
實質就是繞著X軸旋轉180度后得到canvas上的坐標,角度的正負很重要。
正弦:sin(θ) = y / R
余弦:cos(θ) = x / R
正切:tan(θ) = y / x
/*反三角函數*/
反正弦:arcsin(y/R) = θ
反余弦:arccos(x/R) = θ
反正切:arctan(y/x) = θ
Math.sin(θ*Math.PI/180)
Math.cos(θ*Math.PI/180)
Math.tan(θ*Math.PI/180)
/*反三角函數*/
Math.asin(y/R)*(180/Math.PI) = θ
Math.acos(x/R)*(180/Math.PI) = θ
Math.atan(y/x)*(180/Math.PI) = θ
Math.atan2(y,x)
A: Math.atan(-1/2) -0.5 => Math.atan(-1/2)*180/Math.PI -26.57°
B: Math.atan(1/2) 0.5 => Math.atan(1/2)*180/Math.PI 26.57°
C: Math.atan(1/-2) -0.5 => Math.atan(1/-2)*180/Math.PI -26.57°
D: Math.atan(-1/-2) 0.5 => Math.atan(-1/-2)*180/Math.PI 26.57°
A: Math.atan2(-1,2) -0.5 => Math.atan2(-1,2)*180/Math.PI -26.57
B: Math.atan2(1,2) 0.5 => Math.atan2(1,2)*180/Math.PI 26.57
C: Math.atan2(1,-2) 2.7 => Math.atan2(1,-2)*180/Math.PI 153.43
D: Math.atan2(-1,-2) -2.7 => Math.atan2(-1,-2)*180/Math.PI -153.43
對這里例子,還是直接上圖:
在上面的圖中,紅色代表了三角磁鐵的指向,先平移,A1是向右平移x1,向下平移y1后的A,B是鼠標點坐標,根據鼠標坐標和三角磁鐵的中心點計算出需要旋轉的角度,也就是上面的θ,然后旋轉cavnas。
注意:每次繪制不同的三角磁鐵時,必須先使用save()保存狀態(tài),再繪制完一個三角磁鐵后,再用restore()恢復上一次的狀態(tài),不然的話,每次旋轉平移都會在上一次的基礎上平移旋轉,而不是以(0,0)點平移,后旋轉了。如果不明白,可以試試不用save()和restore(),看看會發(fā)生什么。
總結
如有錯誤,歡迎指正!
下一章:《三角函數(2)》
更多建議: