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