首先明确一个数学原理,判断点是否在圆内?则需要判断点到圆心的距离:
1.若大于圆半径,点在圆外;
2.若等于圆半径,点在圆上;
3.若小于圆半径,点在圆内;
<canvas id="canvasId" width="400" height="400" style="border: 1px solid #ccc;"></canvas>
假设圆心坐标为(a,b),圆半径为circleR,点若在圆内则返回true,否则返回false
var canvas = document.getElementById("canvasId");
canvas.onclick = function () {
//获取用户大大鼠标点击的点位坐标
var p = {};
p.x = event.clientX - canvas.getBoundingClientRect().left;
p.y = event.clientY - canvas.getBoundingClientRect().top;//为了兼容IE
//求点到圆心的距离,用到了勾股定理
var dis = Math.sqrt((p.x - a) * (p.x - a) + (p.y - b) * (p.y - b));//Math.sqrt()求平方跟
if(dis <= circleR){
return true;
}
return false;
}
另外多说一嘴~之前有个需求 需要根据圆心坐标求出圆上的点坐标,同样假设圆心坐标为(a,b),圆半径为r,圆上坐标为(x,y),且圆上的点位针对顺时针水平方向应该是有个偏转角度的,设为α,则:
x = a + Math.cos(2 * Math.PI / 360 * α) * r; //Math.cos(0)=1
y = b + Math.sin(2 * Math.PI / 360 * α) * r; //Math.sin(0)=0