В геометрическом моделировании и компьютерной графике составная кривая Безье или сплайн Безье — это сплайн, созданный из кривых Безье , который является по крайней мере непрерывным . Другими словами, составная кривая Безье — это ряд кривых Безье, соединенных встык, где последняя точка одной кривой совпадает с начальной точкой следующей кривой. В зависимости от приложения могут быть добавлены дополнительные требования к гладкости (например, или непрерывность). [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 г.). Справочник пользователя по сплайнам. CRC Press. С. 96. ISBN 978-0-8493-9404-1.
^ Microsoft API полибезье
^ Ссылка API Papyrus beziergon
^ «Лучшая коробка мелков». InfoWorld. 1991.
^ Ребаза, Хорхе (24 апреля 2012 г.). Первый курс прикладной математики. John Wiley & Sons. ISBN9781118277157.
^ (Фирма), Wolfram Research (13 сентября 1996 г.). Стандартные дополнительные пакеты Mathematica ® 3.0. Cambridge University Press. ISBN9780521585859.
^ Гудман, ТНТ (9 декабря 1983 г.). «Свойства β-сплайнов». Журнал теории приближений . 44 (2): 132–153. doi : 10.1016/0021-9045(85)90076-0 .
^ ДеРоуз, Энтони Д. (1 августа 1985 г.). «Геометрическая непрерывность: параметризованно-независимая мера непрерывности для компьютерного геометрического проектирования».
^ Станислав, Г. Адам. "Рисование круга с помощью кривых Безье" . Получено 10 апреля 2010 г.
^ "Оцифровка дизайнов букв". Apple . Получено 26 июля 2014 г. .
^ ДеВенеза, Ричард. "Рисование круга с помощью кривых Безье" (PDF) . Получено 10 апреля 2010 г.