arctan(a/b)
,便可求得計算offsetX和offsetYhtml
// 旋轉軌道的left和top值,也就是圖中offsetX和offsetY var wLeft = $('.wrap').offset().left var wTop = $('.wrap').offset().top // 旋轉軌道的半徑 var r = 12
計算a邊和b邊的長度git
// b邊的長度 var diffX = ev.pageX - (wLeft + r) // a邊的長度 var diffY = ev.pageY - (wTop + r)
計算αgithub
// 弧度α var deg = Math.atan(Math.abs(diffY) / Math.abs(diffX))
計算內三角形的對邊和鄰邊spa
// 內三角形的鄰邊 var x = Math.cos(deg) * r // 內三角形的對邊 var y = Math.sin(deg) * r
計算出眼睛的left值和top值code
var left = (r + x) + 'px' var top = (r + y) + 'px'
上面咱們獲取了left值和top值,可是這隻限於0~90度,也就是第四象限是能夠了,關於四象限,咱們上一張圖htm
當鼠標落在第三象限的時候,計算出來的角度應該是90~180度,咱們得出:ip
deg = Math.PI - deg
當鼠標落在第二象限的時候,計算出來的角度應該是180~270度,咱們得出:get
deg = Math.PI + deg
當鼠標落在第一象限的時候,計算出來的角度應該是270~360度,咱們得出:it
deg = 2 * Math.PI - deg