Я могу несколько собрать воедино способ нарисовать круг, используя метод ctx.arcTo
, но у меня возникают трудности с пониманием того, как применять уравнения Безье для общего рисования эллипса или круга (произвольно близкого приближения одного), используя их.
Хотите знать, какова будет реализация этих трех методов для рисования дуги (сегмента или всего, эллипса или круга) из точки a в точку b, выпуклой или выпуклой.
var canvas = document.querySelector('canvas')
var ctx = canvas.getContext('2d')
ctx.moveTo(0, 0)
arcTo(ctx, 100, 100, 50, 50, 20, 20)
cubicTo(ctx, 110, 110, 10, 10, 120, 120)
quadTo(ctx, 210, 210, 10, 10, 220, 220)
function arcTo(ctx, xi, yi, r1, r2, xf, yf, bulgeIn) {
ctx.save()
ctx.beginPath()
ctx.moveTo(xi, yi)
ctx.arc(xi, yi, xf, yf, r1)
ctx.closePath()
ctx.stroke()
ctx.restore()
}
function cubicTo(ctx, xi, yi, r1, r2, xf, yf, bulgeIn, approximationLevel) {
// ctx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y)
}
function quadTo(ctx, xi, yi, r1, r2, xf, yf, bulgeIn, approximationLevel) {
// ctx.quadraticCurveTo(cpx, cpy, x, y)
}
<style>
canvas {
background: #eee;
width: 200px;
height: 200px;
}
</style>
<canvas></canvas>
Мне интересно, как делать и эллипсы, и круги под любым углом, с любым отрезком длины части окружности.В основном только общая формула для холста html5.
![enter image description here](https://i.stack.imgur.com/gmred.png)