Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 高亮显示画布椭圆形边界上的坐标_Javascript_Canvas - Fatal编程技术网

Javascript 高亮显示画布椭圆形边界上的坐标

Javascript 高亮显示画布椭圆形边界上的坐标,javascript,canvas,Javascript,Canvas,我画椭圆使用贝塞尔曲线的画布方法。我必须突出显示椭圆形边界上的点(与powerpoint中的椭圆形形状相同)。我想要所有八个坐标的精确位置,以便将它们放置在画布上。请参阅随附的屏幕截图我建议不要使用贝塞尔曲线来创建椭圆形/椭圆形-这在数学上不准确,并且在您想要使用点时(如本例中)只会引起头痛 我建议您创建自己的椭圆函数-这很简单;这将创建一个椭圆作为一条路径,您可以对其进行填充和笔划等: function drawEllipse(cxt, cx, cy, rx, ry) { ctx.be

我画椭圆使用贝塞尔曲线的画布方法。我必须突出显示椭圆形边界上的点(与powerpoint中的椭圆形形状相同)。我想要所有八个坐标的精确位置,以便将它们放置在画布上。请参阅随附的屏幕截图

我建议不要使用贝塞尔曲线来创建椭圆形/椭圆形-这在数学上不准确,并且在您想要使用点时(如本例中)只会引起头痛

我建议您创建自己的椭圆函数-这很简单;这将创建一个椭圆作为一条路径,您可以对其进行填充和笔划等:

function drawEllipse(cxt, cx, cy, rx, ry) {
    ctx.beginPath();
    ctx.moveTo(cx + rx, cy);
    for(var a = 0, step = 0.02, max = Math.PI * 2; a < max; a += step)
        ctx.lineTo(cx + rx * Math.cos(a), cy+ ry * Math.sin(a));
}
现在,您可以根据需要在边上绘制点(并具有数学上正确的椭圆以及鼠标的点击点)

结果:


这可能会有帮助:这似乎太复杂了。有什么简单的方法可以找到它吗?我们可以使用任何其他函数来使用鼠标事件在画布上绘制椭圆吗?
function getEllipsePoints(cxt, cx, cy, rx, ry, count) {

    var points = [],
        a = 0, max = Math.PI * 2,
        step = max / count

    for(; a < max; a += step)
        points.push(cx + rx * Math.cos(a), cy+ ry * Math.sin(a));

    return points;
}