Javascript 如何测试一个点是否是二次Bé;齐尔曲线?

Javascript 如何测试一个点是否是二次Bé;齐尔曲线?,javascript,html,math,canvas,Javascript,Html,Math,Canvas,我在HTML5画布上用JavaScript绘制了一个形状: ctx.beginPath(); ctx.moveTo(25,0); ctx.quadraticCurveTo(50,50,40,100); ctx.lineTo(33,100); ctx.quadraticCurveTo(50,50,20,0); ctx.fill(); ctx.closePath(); 如果单击我的画布,我如何检测到我单击了此形状 canvas.addEventListener("click",function(e

我在HTML5画布上用JavaScript绘制了一个形状:

ctx.beginPath();
ctx.moveTo(25,0);
ctx.quadraticCurveTo(50,50,40,100);
ctx.lineTo(33,100);
ctx.quadraticCurveTo(50,50,20,0);
ctx.fill();
ctx.closePath();
如果单击我的画布,我如何检测到我单击了此形状

canvas.addEventListener("click",function(e){
     alert(isItPartOfTheShape(e.clientX,e.clientY));
})

function isItPartOfTheShape(x,y){
     /* Here comes the code which detects is it part of the shape */
     return isIt;
}
你有两个选择

  • 在Javascript中实现多边形中的点代码和bezier曲线计算
  • 您可以使用
    context.isPointInPath
    ,但在执行测试时需要重新生成形状(该函数仅根据当前路径检查指定点,即调用
    fill
    将填充的路径)

  • 可能重复的感谢,iPointInPath是我需要的:)