Я создаю модуль JavaScript, чтобы добавить удобные функции к элементу холста HTML5. Я пытаюсь дать как можно больше различных реализаций для заполнения моего модуля. Чтобы увидеть мой прогресс, посетите мою страницу проекта и мою страница примеров.
У меня есть метод рисования эллипса, в котором используются кубические кривые Безье. Я знаю, что квадратичные кривые Безье можно преобразовать в кубические кривые Безье, но у меня есть несколько вопросов:
- Есть ли разница в допуске на ошибку при приближении круга? Эллипс?
- Есть ли причина иметь обе реализации? (производительность, точность и т. д.)
- Мне не хватает других методов рисования эллипсов?
P.S. Это напрямую не связано, но есть ли другие функции, которые хотелось бы иметь в таком модуле?
Примечание. Это не домашнее задание.
РЕДАКТИРОВАТЬ: Вот мой код для эллипса (xDis - это радиус по x, yDis - это радиус по y):
function ellipse(x, y, xDis, yDis) {
var kappa = 0.5522848, // 4 * ((√(2) - 1) / 3)
ox = xDis * kappa, // control point offset horizontal
oy = yDis * kappa, // control point offset vertical
xe = x + xDis, // x-end
ye = y + yDis; // y-end
this.moveTo(x - xDis, y);
this.bezierCurveTo(x - xDis, y - oy, x - ox, y - yDis, x, y - yDis);
this.bezierCurveTo(x + ox, y - yDis, xe, y - oy, xe, y);
this.bezierCurveTo(xe, y + oy, x + ox, ye, x, ye);
this.bezierCurveTo(x - ox, ye, x - xDis, y + oy, x - xDis, y);
}
Связанные вопросы: