Interested Article - Кривая Безье

Кривы́е Безье́ — типы кривых, предложенные в 60-х годах XX века независимо друг от друга Пьером Безье из автомобилестроительной компании « Рено » и Полем де Кастельжо из компании « Ситроен », где применялись для проектирования кузовов автомобилей.

Несмотря на то, что открытие де Кастельжо было сделано несколько ранее Безье (1959), его исследования не публиковались и скрывались компанией как производственная тайна до конца 1960-х.

Кривая Безье является частным случаем многочленов Бернштейна , описанных русским математиком Сергеем Натановичем Бернштейном в 1912 году.

Впервые кривые были представлены широкой публике в 1962 году французским инженером Пьером Безье, который, разработав их независимо от де Кастельжо, использовал их для компьютерного проектирования автомобильных кузовов. Кривые были названы именем Безье, а именем де Кастельжо назван разработанный им рекурсивный способ определения кривых ( алгоритм де Кастельжо ).

Впоследствии это открытие стало одним из важнейших инструментов систем автоматизированного проектирования и программ компьютерной графики .

Определение

Пусть в пространстве размерности над задана последовательность контрольных точек , где , а для .

Тогда множество точек с координатами , параметрически задаваемыми выражениями

для где а для ,

называется кривой Безье.

Многочлен степени по параметру называется базисной функцией (соответствующей контрольной точке ) кривой Безье или полиномом Бернштейна .

Здесь — число сочетаний из по .

Замечания

  1. Кривая Безье, соответствующая как так и , есть точка .
  2. Кривая Безье, соответствующая паре , то есть при , есть (линейно) параметризованный отрезок, соединяющий точку (при ) с точкой (при ).
  3. При любом порядке кривая Безье содержит как точку (это — образ параметра ), так и точку (это — образ параметра ).
  4. Кривая Безье (в общем случае, то есть если не выродилась в точку ) ориентируема, поскольку является образом ориентированного отрезка . Последовательностям контрольных точек и соответствуют кривые Безье, которые совпадают как множества точек, но имеют (в общем случае) противоположные ориентации.
  5. Кривые Безье, соответствующие последовательностям контрольных точек и , при не совпадают.
  6. Если изменить , то изменяется только .

Виды кривых Безье

Линейные кривые

Линейная кривая Безье

При n = 1 кривая представляет собой отрезок прямой линии, опорные точки P 0 и P 1 определяют его начало и конец. Кривая задаётся уравнением:

.

Квадратичные кривые

Квадратичная кривая Безье

Квадратичная кривая Безье (n = 2) задаётся тремя опорными точками: P 0 , P 1 и P 2 .

.

Квадратичные кривые Безье в составе сплайнов используются для описания формы символов в шрифтах TrueType и в SWF -файлах.

Кубические кривые

Кубическая кривая Безье

В параметрической форме кубическая кривая Безье (n = 3) описывается следующим уравнением:

.

Четыре опорные точки P 0 , P 1 , P 2 и P 3 , заданные в 2- или 3-мерном пространстве, определяют форму кривой.

Линия берёт начало из точки P 0 , направляясь к P 1 и заканчивается в точке P 3 , подходя к ней со стороны P 2 . То есть, кривая не проходит через точки P 1 и P 2 , они используются для указания её направления. Длина отрезка между P 0 и P 1 определяет, как скоро кривая повернёт к P 3 .

В матричной форме кубическая кривая Безье записывается следующим образом:

,

где называется базисной матрицей Безье:

В современных графических системах и форматах, таких как PostScript (а также основанных на нём форматах Adobe Illustrator и Portable Document Format (PDF) ), Scalable Vector Graphics (SVG) , Metafont , CorelDraw и GIMP для представления криволинейных форм используются сплайны Безье, составленные из кубических кривых.

Построение кривых Безье

Линейные кривые

Параметр t в функции, описывающей линейный случай кривой Безье, определяет, где именно на расстоянии от P 0 до P 1 находится B ( t ). Например, при t = 0,25 значение функции B ( t ) соответствует четверти расстояния между точками P 0 и P 1 . Параметр t изменяется от 0 до 1, а B ( t ) описывает отрезок прямой между точками P 0 и P 1 .

Квадратичные кривые

Для построения квадратичных кривых Безье требуется выделение двух промежуточных точек Q 0 и Q 1 из условия, чтобы параметр t изменялся от 0 до 1:

  • Точка Q 0 изменяется от P 0 до P 1 и описывает линейную кривую Безье.
  • Точка Q 1 изменяется от P 1 до P 2 и также описывает линейную кривую Безье.
  • Точка B изменяется от Q 0 до Q 1 и описывает квадратичную кривую Безье.
Построение квадратичной кривой Безье
Анимация t : [0;1]

Кривые высших степеней

Для построения кривых высших порядков соответственно требуется больше промежуточных точек. Для кубической кривой это промежуточные точки Q 0 , Q 1 и Q 2 , описывающие линейные кривые, а также точки R 0 и R 1 , которые описывают квадратичные кривые: более простое уравнение .

Построение кубической кривой Безье
Анимация t : [0;1]

Для кривых четвёртой степени это будут точки Q 0 , Q 1 , Q 2 и Q 3 , описывающие линейные кривые, R 0 , R 1 и R 2 , которые описывают квадратичные кривые, а также точки S 0 и S 1 , описывающие кубические кривые Безье:

Построение кривой Безье 4-й степени
Анимация t : [0;1]

Свойства кривой Безье

  • непрерывность заполнения сегмента между начальной и конечной точками;
  • кривая всегда располагается внутри фигуры, образованной линиями, соединяющими контрольные точки;
  • при наличии только двух контрольных точек сегмент представляет собой прямую линию;
  • прямая линия образуется при коллинеарном (на одной прямой) размещении управляющих точек;
  • кривая Безье симметрична, то есть обмен местами между начальной и конечной точками (изменение направления траектории) не влияет на форму кривой;
  • масштабирование и изменение пропорций кривой Безье не нарушает её стабильности, поскольку с математической точки зрения она « аффинно инвариантна»;
  • изменение координат хотя бы одной из точек ведет к изменению формы всей кривой Безье;
  • любой частичный отрезок кривой Безье также является кривой Безье;
  • степень (порядок) кривой всегда на одну ступень меньше числа контрольных точек. Например, при трёх контрольных точках форма кривой — парабола , так как парабола — кривая 2-го порядка;
  • окружность не может быть описана параметрическим уравнением кривой Безье;
  • невозможно создать параллельные кривые Безье, за исключением тривиальных случаев (прямые линии и совпадающие кривые), хотя существуют алгоритмы, строящие приближённую параллельную кривую Безье с приемлемой для практики точностью.

Применение в компьютерной графике

Благодаря простоте задания и манипуляции кривые Безье нашли широкое применение в компьютерной графике для моделирования гладких линий. Кривая целиком лежит в выпуклой оболочке своих опорных точек. Это свойство кривых Безье с одной стороны значительно облегчает задачу нахождения точек пересечения кривых (если не пересекаются выпуклые оболочки опорных точек, то не пересекаются и сами кривые), а с другой стороны позволяет осуществлять интуитивно понятное управление параметрами кривой в графическом интерфейсе с помощью её опорных точек. Кроме того, аффинные преобразования кривой ( перенос , масштабирование , вращение и др.) также могут быть осуществлены путём применения соответствующих трансформаций к опорным точкам.

Наибольшее значение имеют кривые Безье второй и третьей степеней (квадратичные и кубические). Кривые высших степеней при обработке требуют большего объёма вычислений и для практических целей используются реже. Для построения сложных по форме линий отдельные кривые Безье могут быть последовательно соединены друг с другом в сплайн Безье . Для того, чтобы обеспечить гладкость линии в месте соединения двух кривых, три смежные опорные точки обеих кривых должны лежать на одной прямой. В программах векторной графики , например Adobe Illustrator или Inkscape , подобные фрагменты известны под названием «путей» ( path ), а в 3DS Max и подобных программах 3D-моделирования кривые Безье имеют название «сплайны».

Преобразование квадратичных кривых Безье в кубические

Квадратичная кривая Безье с координатами преобразовывается в кубическую кривую Безье с координатами .

Уровень дискретизации Кривых Безье

Уровень дискретизации определяется следующим образом:

, то есть каждая следующая точка должна отличаться от предыдущей на 1 (допустим пиксель). Причём, если задать следующим образом:

Через него можно вычислить .

Решим это уравнение для кривых Безье первого порядка (линейных):

Запишем разницу точек для одной оси:

Вынесем общие множители за скобки:

Найдём :

так можно вычислить уровень дискретизации для обхода конкретной оси кривой Безье определённого порядка. То есть Вам нужно получить 16 таких уравнений для кривых Безье с 1го по 16 порядок, она всегда задаётся точками, их координаты достаточно будет подставить в полученное уравнение, чтобы обойти кривую с минимальным однозначным уровнем дискретизации.

См. также

Примечания

  1. World Wide Web Consortium ( W3C ). (англ.) (16 августа 2011). — W3C Recommendation. Дата обращения: 21 мая 2012. 24 июня 2012 года.
  2. . designermanuals.blogspot.com . Дата обращения: 9 января 2021. 12 января 2021 года.

Литература

  • Роджерс Д., Адамс Дж. Математические основы машинной графики. — М. : Мир, 2001.

Ссылки

  • Wolfram Math World (англ.)
  • American Mathematical Society (англ.)
  • Кривые Безье в компьютерных играх (рус.)
  • (рус.)
Источник —

Same as Кривая Безье