Кривые Безье
Кривые Безье
Кривые Безье — это линии особой формы, описываемые тремя или четырьмя точками: начальной, конечной и одной или двумя контрольными. Начальная и конечная точки, как и в случае прямой линии, задают начало и конец кривой Безье, а контрольные точки формируют касательные, определяющие форму этой кривой.
Рис. 22.1. Кривая Безье с двумя контрольными точками
Рис. 22.1. Кривая Безье с двумя контрольными точками
Рис. 22.2. Кривая Безье с одной контрольной точкой
На рис. 22.1 кривая Безье выделена утолщенной линией, ее начальная и конечная точки обозначены кружками, квадратики соответствуют контрольным точкам. Через каждую контрольную точку, а также через начальную и конечную точки кривой Безье проведены касательные (тонкие прямые линии) — они определяют форму кривой. Если мы мысленно переместим какую-либо из контрольных точек, то на- правление проведенной через нее касательной изменится, и, следовательно, изменится и форма кривой Безье.
На рис. 22.1 представлена кривая Безье с двумя контрольными точками. Такие кривые применяются чаще всего.
Но зачастую предпочтительнее использовать другую, "вырожденную", форму кривых Безье — с одной контрольной точкой (рис. 22.2). На основе кривых Безье с одной контрольной точкой можно создавать дуги и рисовать секторы, в чем мы вскоре убедимся.
Для рисования кривых Безье с двумя контрольными точками предусмотрен метод
bezierCurveTo: <контекст рисования>.bezierCurveTo(<горизонтальная координата первой контрольной точки>,<вертикальная координата первой контрольной точки>,<горизонтальная координата второй контрольной точки>,<вертикальная координата второй контрольной точки>,<горизонтальная координата конечной точки>,<вертикальная координата конечной точки>)
Назначение параметров этого метода понятно из их описания. Все они задаются в пикселах в виде чисел. Метод не возвращает результата.
Рисование кривой Безье начинается в той точке, где в данный момент установлено перо. После рисования кривой перо устанавливается в ее конечную точку.
Вот Web-сценарий, рисующий кривую Безье с двумя контрольными точками:
ctxCanvas.beginPath();
ctxCanvas.moveTo(100, 100);
ctxCanvas.bezierCurveTo(120, 80, 160, 20, 100, 200);
ctxCanvas.stroke();
Рисование кривых Безье с одной контрольной точкой реализует метод quadraticCurveTo:<контекст рисования>.quadraticCurveTo(<горизонтальная координата контрольной точки>,<вертикальная координата контрольной точки>,<горизонтальная координата конечной точки>,<вертикальная координата конечной точки>)
Описывать параметры этого метода также нет смысла — их назначение понятно. Все они задаются в пикселах в виде чисел. Метод не возвращает результата.
Рисование такой кривой Безье также начинается в той точке, где в данный момент установлено перо. После рисования кривой перо устанавливается в ее конечную точку.
Вот Web-сценарий, рисующий кривую Безье с одной контрольной точкой:
ctxCanvas.beginPath();
ctxCanvas.moveTo(100, 100);
ctxCanvas.quadraticCurveTo(200, 100, 200, 200);
ctxCanvas.stroke();
Получившаяся кривая будет иметь вид дуги.
Более сложный пример иллюстрирует листинг 22.3.
Листинг 22.3
ctxCanvas.beginPath();
ctxCanvas.strokeStyle = "red";
ctxCanvas.fillStyle = "red";
ctxCanvas.moveTo(100, 100);
ctxCanvas.quadraticCurveTo(200, 100, 200, 200);
ctxCanvas.lineTo(100, 200);
ctxCanvas.lineTo(100, 100);
ctxCanvas.fill();
Web-сценарий из листинга 22.3 рисует красный сектор окружности с красной же заливкой. Мы проводим кривую Безье с одной контрольной точкой, имеющую вид дуги, и соединяем ее начальную и конечную точки с центром воображаемой окружности.
Еще один пример приведен в листинге 22.4.
Листинг 22.4
ctxCanvas.beginPath();
ctxCanvas.moveTo(20, 0);
ctxCanvas.lineTo(180, 0);
ctxCanvas.quadraticCurveTo(200, 0, 200, 20);
ctxCanvas.lineTo(200, 80);
ctxCanvas.quadraticCurveTo(200, 100, 180, 100);
ctxCanvas.lineTo(20, 100);
ctxCanvas.quadraticCurveTo(0, 100, 0, 80);
ctxCanvas.lineTo(0, 20);
ctxCanvas.quadraticCurveTo(0, 0, 20, 0);
ctxCanvas.stroke();
Web-сценарий из листинга 22.4 рисует прямоугольник со скругленными углами.
Попробуйте сами с ним разобраться.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Кривые Безье
Кривые Безье Кривые Безье — это линии особой формы, описываемые тремя или четырьмя точками: начальной, конечной и одной или двумя контрольными. Начальная и конечная точки, как и в случае прямой линии, задают начало и конец кривой Безье, а контрольные точки формируют
6 Ключи формы, кривые IPO, и Позы
6 Ключи формы, кривые IPO, и Позы Мы уже сталкивались с кривыми IPO в Главе 4, Pydrivers and Constraints, когда мы обсуждали Pydrivers, но с IPO можно делать гораздо больше, чем просто управлять одним IPO посредством другого. Например, API Блендера обеспечивает нас средствами для создания IPO из
Вспомогательная геометрия и трехмерные кривые
Вспомогательная геометрия и трехмерные кривые Надеюсь, вы уже хорошо освоили принцип создания трехмерных моделей в КОМПАС: все построение детали состоит из последовательного рисования эскизов и выполнения над ними (или же без них) формообразующих операций. Все вроде бы
Объекты сеток Безье
Объекты сеток Безье Patch Grids (Сетки патчей) – это поверхности Безье (рис. 2.6), состоящие из четырехугольных (реже треугольных) фрагментов (лоскутов), основанных на сплайнах, которые управляются при помощи манипуляторов Безье. Рис. 2.6. Модель муравья, построенная при помощи
Команда Curves (Кривые)
Команда Curves (Кривые) Команда Curves (Кривые) – самая сложная из команд яркостной коррекции, и большинство даже профессиональных дизайнеров не используют все ее возможности. Чаще всего она применяется либо для яркостной коррекции как альтернатива команде Levels (Уровни), либо
Curves (Кривые). Осветление и затемнение изображения
Curves (Кривые). Осветление и затемнение изображения Диалоговое окно данной функции можно вызвать командой Image ? Adjustments ? Curves (Изображение ? Коррекция ? Кривые) или сочетанием клавиш Ctrl+M (рис. 5.1). Рис. 5.1. Диалоговое окно Curves (Кривые)В данном окне выполняются основные операции по
Прямые и кривые
Прямые и кривые GetArcDirection Функция GetArcDirection возвращает текущее направление рисования дуг для указанного контекста устройства. Функции рисования дуг и прямоугольников используют эту функцию. int GetArcDirection ( HDC hdc // дескриптор контекста устройства ); Параметры hdc -
13.2. Curves (Кривые). Осветление и затемнение изображения
13.2. Curves (Кривые). Осветление и затемнение изображения Диалоговое окно данной функции (рис. 13.2) можно вызвать командой Image ? Adjustments ? Curves (Изображение ? Настройки ? Кривые) или нажатием сочетания клавиш Ctrl+M. Рис. 13.2. Диалоговое окно Curves (Кривые)В данном окне выполняются