Составная кривая Безье
В геометрическом моделировании и компьютерной графике составная кривая Безье или сплайн Безье — это сплайн, составленный из кривых Безье , который имеет не менее непрерывный . Другими словами, составная кривая Безье — это серия кривых Безье, соединенных концами, где последняя точка одной кривой совпадает с начальной точкой следующей кривой. В зависимости от применения могут предъявляться дополнительные требования к гладкости (например, или непрерывность) можно добавить. [ 1 ]
Непрерывный составной Безье также называется полибезье по сходству с ломаной линией , но в то время как в полилиниях точки соединены прямыми линиями, в полибезье точки соединены кривыми Безье. Безьегон кривых (также называемый безигоном ) — это замкнутый путь, составленный из Безье . Он похож на многоугольник тем, что соединяет набор вершин линиями, но если в многоугольниках вершины соединены прямыми линиями, то в безьергоне вершины соединены кривыми Безье. [ 2 ] [ 3 ] [ 4 ] Некоторые авторы даже называют составная кривая Безье - «сплайн Безье»; [ 5 ] последний термин, однако, используется другими авторами как синоним (несоставной) кривой Безье, и они добавляют слово «составной» перед «сплайном Безье», чтобы обозначить составной случай. [ 6 ]
Возможно, наиболее распространенным применением составного Безье является описание контура каждой буквы в файле PostScript или PDF . Такие контуры состоят из одного безьергона для открытых букв или из нескольких безьергонов для закрытых букв. Современные векторной графики и компьютерных шрифтов, системы такие как PostScript , Asymptote , Metafont , OpenType и SVG, используют составные кривые Безье, состоящие из кубических кривых Безье (кривые 3-го порядка) для рисования изогнутых форм.
Плавное соединение
[ редактировать ]Обычно желаемым свойством сплайнов является соединение отдельных кривых с заданным уровнем параметрической или геометрической непрерывности . Хотя отдельные кривые сплайна полностью непрерывны в пределах своего интервала, всегда существует некоторый разрыв в местах пересечения разных кривых.
Сплайн Безье уникален тем, что это один из немногих сплайнов, который не гарантирует более высокую степень непрерывности, чем . Однако можно организовать контрольные точки, чтобы гарантировать различные уровни непрерывности соединений, хотя это может привести к потере локального контроля, если ограничение слишком строгое для данной степени сплайна Безье.
Плавное соединение кубического Безье
[ редактировать ]Даны две кубические кривые Безье с контрольными точками. и соответственно, ограничения для обеспечения непрерывности при можно определить следующим образом:
- (позиционная непрерывность) требует, чтобы они встречались в одной и той же точке, что по определению делают все сплайны Безье. В этом примере общей точкой является
- (непрерывность скорости) требует, чтобы соседние контрольные точки вокруг соединения были зеркалами друг друга. Другими словами, они должны следовать ограничению
- (непрерывность касательной) требует, чтобы соседние контрольные точки были коллинеарны соединению. Это менее строго, чем непрерывность, оставляя дополнительную степень свободы, которую можно параметризовать с помощью скаляра . Тогда ограничение может быть выражено выражением
Хотя возможны следующие ограничения непрерывности, они редко используются с кубическими сплайнами Безье, поскольку другие сплайны, такие как B-сплайн или β-сплайн [ 7 ] естественно будет обрабатывать более высокие ограничения без потери локального контроля.
- (непрерывность ускорения) ограничена . Однако применение этого ограничения ко всему кубическому сплайну Безье приведет к каскадной потере локального контроля над точками касания. Кривая по-прежнему будет проходить через каждую третью точку сплайна, но контроль над ее формой будет потерян. Чтобы достичь непрерывности с использованием кубических кривых, вместо этого рекомендуется использовать кубический однородный B-сплайн, поскольку это обеспечивает непрерывность без потери местного контроля за счет отсутствия гарантии прохождения через определенные точки
- (непрерывность кривизны) ограничена , оставляя две степени свободы по сравнению с , в виде двух скаляров и . Возможна более высокая степень геометрической непрерывности, хотя она становится все более сложной. [ 8 ]
- (непрерывность толчка) ограничена . Применение этого ограничения к кубическому сплайну Безье приведет к полной потере локального управления, поскольку весь сплайн теперь полностью ограничен и определяется контрольными точками первой кривой. Фактически, это, возможно, больше не сплайн, поскольку его форма теперь эквивалентна бесконечной экстраполяции первой кривой, что делает ее не только непрерывно, но , поскольку соединения между отдельными кривыми больше не существуют
Аппроксимация дуг окружности
[ редактировать ]Если примитивы дуг окружности не поддерживаются в конкретной среде, их можно аппроксимировать кривыми Безье . [ 9 ] Обычно восемь квадратных сегментов [ 10 ] или четыре кубических сегмента используются для аппроксимации круга. Желательно найти длину контрольных точек, которые приводят к наименьшей ошибке аппроксимации для заданного количества кубических сегментов.
Использование четырех кривых
[ редактировать ]углом 90 градусов Учитывая только единичную дугу окружности с в первом квадранте , мы определяем конечные точки и с контрольными точками и соответственно, как:
Из определения кубической кривой Безье имеем:
С точки зрения в качестве средней точки дуги мы можем написать следующие два уравнения:
Решение этих уравнений для координаты x (и тождественно для координаты y) дает:
Однако обратите внимание, что полученная кривая Безье полностью находится за пределами круга с максимальным отклонением радиуса около 0,00027. Добавляя небольшую поправку к промежуточным точкам, таким как
величина отклонения радиуса до 1 уменьшается примерно в 3 раза, до 0,000068 (за счет выводимости аппроксимируемой окружной кривой в конечных точках).
Общий случай
[ редактировать ]Мы можем аппроксимировать круг радиуса из произвольного числа кубических кривых Безье. Пусть дуга начинается в точке и закончить в точке , расположенный на равных расстояниях выше и ниже оси X, охватывающий дугу угла :
Контрольные точки могут быть записаны как: [ 11 ]
Примеры
[ редактировать ]-
Восьмисегментный квадратичный полибезье (красный), аппроксимирующий окружность (черный) с контрольными точками
-
Четырехсегментный кубический полибезье (красный), аппроксимирующий круг (черный) с контрольными точками
Шрифты
[ редактировать ]В шрифтах TrueType используются составные кривые Безье, состоящие из квадратичных кривых Безье (кривые 2-го порядка). Чтобы описать типичный дизайн шрифта в виде компьютерного шрифта с любой заданной точностью, для Безье 3-го порядка требуется меньше данных, чем для Безье 2-го порядка; а для этого, в свою очередь, требуется меньше данных, чем для серии прямых линий. Это верно, даже несмотря на то, что любой сегмент прямой требует меньше данных, чем любой сегмент параболы; и этот параболический сегмент, в свою очередь, требует меньше данных, чем любой сегмент кривой 3-го порядка.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Евгений Владимирович Шикин; Александр Иванович Плис (14 июля 1995 г.). Руководство по сплайнам для пользователя . ЦРК Пресс. п. 96. ИСБН 978-0-8493-9404-1 .
- ^ API-интерфейс Microsoft Polybezier
- ^ Справочник по API Papyrus beziergon
- ^ "Лучшая коробка с мелками" . ИнфоМир. 1991.
- ^ Ребаза, Хорхе (24 апреля 2012 г.). Первый курс прикладной математики . Джон Уайли и сыновья. ISBN 9781118277157 .
- ^ (Фирма), Wolfram Research (13 сентября 1996 г.). Стандартные дополнительные пакеты Mathematica® 3.0 . Издательство Кембриджского университета. ISBN 9780521585859 .
- ^ Гудман, TNT (9 декабря 1983 г.). «Свойства β-сплайнов» . Журнал теории приближения . 44 (2): 132–153. дои : 10.1016/0021-9045(85)90076-0 .
- ^ ДеРоуз, Энтони Д. (1 августа 1985 г.). «Геометрическая непрерывность: независимая от параметризации мера непрерывности для компьютерного геометрического проектирования» .
- ^ Станислав, Г. Адам. «Рисование круга с помощью кривых Безье» . Проверено 10 апреля 2010 г.
- ^ «Оцифровка буквенных конструкций» . Яблоко . Проверено 26 июля 2014 г.
- ^ ДеВенеза, Ричард. «Рисование круга с помощью кривых Безье» (PDF) . Проверено 10 апреля 2010 г.