Кривая, используемая в компьютерной графике и смежных областях.
Кривая Безье ( / ˈ b ɛ z . i . eɪ / BEH -zee-ay ) [1] — параметрическая кривая, используемая в компьютерной графике и смежных областях. [2] Набор дискретных «контрольных точек» определяет гладкую, непрерывную кривую с помощью формулы. Обычно кривая предназначена для аппроксимации реальной формы, которая в противном случае не имеет математического представления или представление которой неизвестно или слишком сложно. Кривая Безье названа в честь французского инженера Пьера Безье (1910–1999), который использовал ее в 1960-х годах для проектирования кривых для кузова автомобилей Renault . [3] Другие области применения включают проектирование компьютерных шрифтов и анимацию. [3] Кривые Безье можно объединить, чтобы сформировать сплайн Безье или обобщить до более высоких измерений, чтобы сформировать поверхности Безье . [3] Треугольник Безье является частным случаем последнего.
В векторной графике кривые Безье используются для моделирования плавных кривых, которые можно масштабировать до бесконечности. «Пути», как их обычно называют в программах обработки изображений, [примечание 1] представляют собой комбинации связанных кривых Безье. Пути не ограничены пределами растровых изображений и интуитивно понятны для изменения.
Кривые Безье также используются во временной области, в частности, в анимации , [4] [примечание 2] дизайне пользовательского интерфейса и сглаживании траектории курсора в интерфейсах, контролируемых взглядом. [5] Например, кривая Безье может использоваться для указания скорости с течением времени объекта, такого как значок, движущегося из A в B, а не просто перемещения с фиксированным числом пикселей за шаг. Когда аниматоры или дизайнеры интерфейсов говорят о «физике» или «ощущении» операции, они могут иметь в виду конкретную кривую Безье, используемую для управления скоростью с течением времени рассматриваемого перемещения.
Это также относится к робототехнике, где, например, движение сварочного манипулятора должно быть плавным, чтобы избежать ненужного износа.
Изобретение
Математическая основа кривых Безье — полиномы Бернштейна — была создана в 1912 году, но полиномы не применялись в графике до тех пор, пока примерно 50 лет спустя математик Поль де Кастельжо в 1959 году не разработал алгоритм де Кастельжо , численно устойчивый метод оценки кривых, и стал первым, кто применил их в автоматизированном проектировании во французском автопроизводителе Citroën . [6] Метод де Кастельжо был запатентован во Франции, но не публиковался до 1980-х годов [7] , в то время как полиномы Безье были широко представлены в 1960-х годах французским инженером Пьером Безье , который открыл их независимо и использовал для проектирования автомобильных кузовов в Renault .
Конкретные случаи
Кривая Безье определяется набором контрольных точек P 0 через P n , где n называется порядком кривой ( n = 1 для линейной, 2 для квадратичной, 3 для кубической и т. д.). Первая и последняя контрольные точки всегда являются конечными точками кривой; однако промежуточные контрольные точки обычно не лежат на кривой. Суммы в следующих разделах следует понимать как аффинные комбинации , то есть коэффициенты в сумме дают 1.
Линейные кривые Безье
При наличии различных точек P 0 и P 1 линейная кривая Безье — это просто линия между этими двумя точками. Кривая задается как
Это самый простой способ, который эквивалентен линейной интерполяции . [8] Величина представляет собой вектор смещения от начальной точки до конечной точки.
Квадратичные кривые Безье
Квадратичная кривая Безье — это путь, проложенный функцией B ( t ) через точки P 0 , P 1 и P 2 ,
,
что можно интерпретировать как линейный интерполянт соответствующих точек на линейных кривых Безье от P 0 до P 1 и от P 1 до P 2 соответственно. Перестановка предыдущего уравнения дает:
Это можно записать таким образом, чтобы подчеркнуть симметрию относительно P 1 :
Что немедленно дает производную кривой Безье по t :
из чего можно сделать вывод, что касательные к кривой в точках P 0 и P 2 пересекаются в точке P 1. При увеличении t от 0 до 1 кривая отходит от P 0 в направлении P 1 , затем изгибается, чтобы прийти к точке P 2 из направления P 1 .
Вторая производная кривой Безье по t равна
Кубические кривые Безье
Четыре точки P 0 , P 1 , P 2 и P 3 на плоскости или в пространстве более высоких измерений определяют кубическую кривую Безье. Кривая начинается в P 0 , направляясь к P 1 , и достигает P 3 , исходя из направления P 2 . Обычно она не проходит через P 1 или P 2 ; эти точки существуют только для предоставления информации о направлении. Расстояние между P 1 и P 2 определяет, «насколько далеко» и «насколько быстро» кривая движется к P 1 , прежде чем повернуть к P 2 .
Записывая B P i , P j , P k ( t ) для квадратичной кривой Безье, определяемой точками P i , P j и P k , кубическую кривую Безье можно определить как аффинную комбинацию двух квадратичных кривых Безье:
Явная форма кривой:
При некоторых вариантах выбора P1 и P2 кривая может пересекать сама себя или содержать точку возврата .
Любая серия из 4 различных точек может быть преобразована в кубическую кривую Безье, которая проходит через все 4 точки по порядку. Учитывая начальную и конечную точку некоторой кубической кривой Безье и точки вдоль кривой, соответствующие t = 1/3 и t = 2/3, можно восстановить контрольные точки для исходной кривой Безье. [9]
Производная кубической кривой Безье по t равна
Вторая производная кривой Безье по t равна
Общее определение
Кривые Безье можно определить для любой степени n .
Рекурсивное определение
Рекурсивное определение кривой Безье степени n выражает ее как линейную комбинацию точка-точка ( линейную интерполяцию ) пары соответствующих точек двух кривых Безье степени n − 1.
Пусть обозначает кривую Безье, определяемую любым набором точек P 0 , P 1 , ..., P k . Тогда для начала,
Эта рекурсия поясняется в анимации ниже.
Явное определение
Формулу можно явно выразить следующим образом (где t 0 и (1-t) 0 непрерывно расширяются до 1 на всем протяжении [0,1]):
Точки P i называются контрольными точками кривой Безье. Многоугольник , образованный соединением точек Безье линиями , начинающимися с P 0 и заканчивающимися P n , называется многоугольником Безье (или контрольным многоугольником ). Выпуклая оболочка многоугольника Безье содержит кривую Безье.
Полиномиальная форма
Иногда желательно выразить кривую Безье как полином вместо суммы менее простых полиномов Бернштейна . Применение биномиальной теоремы к определению кривой с последующей некоторой перестановкой даст
Начало и конец кривой касаются соответственно первой и последней секции многоугольника Безье.
Кривую можно разделить в любой точке на две подкривые или на произвольное количество подкривых, каждая из которых также является кривой Безье.
Некоторые кривые, которые кажутся простыми, такие как окружность , не могут быть точно описаны кривой Безье или кусочной кривой Безье; хотя четырехчастная кубическая кривая Безье может аппроксимировать окружность (см. составную кривую Безье ), с максимальной радиальной ошибкой менее одной тысячной, когда каждая внутренняя контрольная точка (или точка офлайн) является расстоянием по горизонтали или вертикали от внешней контрольной точки на единичной окружности. В более общем смысле, n -частная кубическая кривая Безье может аппроксимировать окружность, когда каждая внутренняя контрольная точка является расстоянием от внешней контрольной точки на единичной окружности, где (т.е. ), и .
Каждая квадратичная кривая Безье также является кубической кривой Безье, и, в более общем смысле, каждая кривая Безье степени n также является кривой степени m для любого m > n . В деталях, кривая степени n с контрольными точками эквивалентна (включая параметризацию) кривой степени n + 1 с контрольными точками , где , и определяют , .
Кривые Безье обладают свойством уменьшения вариации . На интуитивном уровне это означает, что кривая Безье не «волнится» больше, чем многоугольник ее контрольных точек, и на самом деле может «волниться» меньше этого. [10]
В кривых Безье степени n нет локального контроля — это означает, что любое изменение контрольной точки требует пересчета и, таким образом, влияет на вид всей кривой, «хотя чем дальше находится точка от измененной контрольной точки, тем меньше изменение кривой» [11] .
Кривая Безье порядка выше двух может пересекать сама себя или иметь точку возврата при определенных вариантах выбора контрольных точек.
Кривая второго порядка представляет собой параболический сегмент.
Квадратичная кривая Безье также является сегментом параболы . Поскольку парабола является коническим сечением , некоторые источники называют квадратичные кривые Безье «коническими дугами». [12] Ссылаясь на рисунок справа, важные особенности параболы можно вывести следующим образом: [13]
Касательные к параболе в конечных точках кривой (A и B) пересекаются в ее контрольной точке (C).
Если D — середина AB, то касательная к кривой, перпендикулярная CD (штриховая голубая линия), определяет ее вершину (V). Ее ось симметрии (штрихпунктирная голубая линия) проходит через V и перпендикулярна касательной.
E — это точка на кривой с касательной под углом 45° к CD (штриховая зеленая линия). Если G — пересечение этой касательной и оси, то линия, проходящая через G и перпендикулярная CD, является директрисой (сплошная зеленая линия).
Фокус (F) находится на пересечении оси и линии, проходящей через E и перпендикулярной CD (пунктирная желтая). Latus rectum — это сегмент линии внутри кривой (сплошная желтая).
Производный
Производная для кривой порядка n равна
Построение кривых Безье
Линейные кривые
Пусть t обозначает долю прогресса (от 0 до 1), которую точка B ( t ) совершила на своем пути от P 0 до P 1 . Например, когда 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 ( t ) изменяется от P 0 до P 1 и описывает линейную кривую Безье.
Точка Q 1 ( t ) изменяется от P 1 до P 2 и описывает линейную кривую Безье.
Точка B ( t ) линейно интерполируется между Q 0 ( t ) и Q 1 ( t ) и описывает квадратичную кривую Безье.
Кривые высшего порядка
Для кривых более высокого порядка нужно соответственно больше промежуточных точек. Для кубических кривых можно построить промежуточные точки Q 0 , Q 1 и Q 2 , которые описывают линейные кривые Безье, и точки R 0 и R 1 , которые описывают квадратичные кривые Безье:
Для кривых четвертого порядка можно построить промежуточные точки Q 0 , Q 1 , Q 2 и Q 3 , которые описывают линейные кривые Безье, точки R 0 , R 1 и R 2 , которые описывают квадратичные кривые Безье, и точки S 0 и S 1 , которые описывают кубические кривые Безье:
Для кривых пятого порядка можно построить аналогичные промежуточные точки.
Эти представления основаны на процессе, используемом в алгоритме Де Кастельжау для вычисления кривых Безье. [14]
Смещения (или штриховка) кривых Безье
Кривая с фиксированным смещением от заданной кривой Безье, называемая смещением или параллельной кривой в математике (лежащая «параллельно» исходной кривой, как смещение между рельсами в железнодорожном полотне ), не может быть точно образована кривой Безье (за исключением некоторых тривиальных случаев). В общем случае, двусторонняя кривая смещения кубической Безье является алгебраической кривой 10-го порядка [15] и, в более общем случае, для Безье степени n двусторонняя кривая смещения является алгебраической кривой степени 4 n − 2. [16] Однако существуют эвристические методы, которые обычно дают адекватное приближение для практических целей. [17]
В области векторной графики рисование двух симметрично расположенных смещенных кривых называется обводкой (кривая Безье или, в общем случае, путь из нескольких сегментов Безье). [15] Преобразование из смещенных кривых в заполненные контуры Безье имеет практическое значение при преобразовании шрифтов, определенных в Metafont , которые требуют обводки кривых Безье, в более широко используемые шрифты PostScript type 1 , которые требуют (в целях эффективности) только математически более простой операции заполнения контура, определенного (несамопересекающимися) кривыми Безье. [18]
Степень возвышения
Кривую Безье степени n можно преобразовать в кривую Безье степени n + 1 с той же формой . Это полезно, если программное обеспечение поддерживает кривые Безье только определенной степени. Например, системы, которые могут работать только с кубическими кривыми Безье, могут неявно работать с квадратичными кривыми, используя их эквивалентное кубическое представление.
Для повышения степени мы используем равенство Каждый компонент умножается на (1 − t ) и t , таким образом увеличивая степень на единицу, не меняя значения. Вот пример увеличения степени с 2 до 3.
Другими словами, исходные начальная и конечная точки не изменяются. Новые контрольные точки — и .
Для произвольного n используем равенства [19]
Поэтому:
введение произвольного и .
Поэтому новые контрольные точки [19]
Повторное повышение степени
Концепция повышения степени может быть повторена на контрольном полигоне R, чтобы получить последовательность контрольных полигонов R , R 1 , R 2 и т. д. После повышения степени на r , полигон R r имеет вершины P 0 , r , P 1 , r , P 2 , r , ..., P n + r , r , заданные формулой [19]
Можно также показать, что для базовой кривой Безье B ,
Степень снижения
Снижение степени может быть выполнено только тогда, когда рассматриваемая кривая изначально поднята с более низкой степени. [20] Было предложено и использовано на практике несколько алгоритмов аппроксимации. [21] [22]
Рациональные кривые Безье
Рациональная кривая Безье добавляет регулируемые веса для обеспечения более точных приближений к произвольным формам. Числитель — это взвешенная кривая Безье в форме Бернштейна, а знаменатель — это взвешенная сумма полиномов Бернштейна . Рациональные кривые Безье могут, среди прочего, использоваться для точного представления сегментов конических сечений , включая дуги окружностей. [23]
При наличии n + 1 контрольных точек P 0 , ..., P n рациональная кривая Безье может быть описана следующим образом:
или просто
Выражение можно расширить, используя числовые системы помимо вещественных для весов. В комплексной плоскости точки {1}, {-1} и {1} с весами { }, {1} и { } образуют полную окружность с радиусом один. Для кривых с точками и весами на окружности вес можно масштабировать, не меняя форму кривой. [24] Масштабирование центрального веса указанной выше кривой на 1,35508 дает более равномерную параметризацию.
Приложения
Компьютерная графика
Кривые Безье широко используются в компьютерной графике для моделирования плавных кривых. Поскольку кривая полностью содержится в выпуклой оболочке ее контрольных точек , точки можно графически отобразить и использовать для интуитивного манипулирования кривой. Аффинные преобразования, такие как перенос и вращение, можно применять к кривой, применяя соответствующее преобразование к контрольным точкам кривой.
Квадратичные и кубические кривые Безье являются наиболее распространенными. Кривые более высокого порядка требуют больших вычислительных затрат для оценки. Когда требуются более сложные формы, кривые Безье низкого порядка объединяются, создавая составную кривую Безье . Составная кривая Безье обычно называется «путем» в языках векторной графики (например, PostScript ), стандартах векторной графики (например, SVG ) и программах векторной графики (например , Artline , Timeworks Publisher , Adobe Illustrator , CorelDraw , Inkscape и Allegro ). Чтобы объединить кривые Безье в составную кривую Безье без перегибов, достаточно свойства, называемого непрерывностью G1 , чтобы заставить контрольную точку, в которой встречаются две составляющие кривые Безье, лежать на линии, определяемой двумя контрольными точками с каждой стороны.
Самый простой метод преобразования сканирования ( растеризации ) кривой Безье — оценить ее во многих близко расположенных точках и преобразовать сканированием аппроксимирующую последовательность линейных сегментов. Однако это не гарантирует, что растеризованный вывод будет выглядеть достаточно гладким, поскольку точки могут быть расположены слишком далеко друг от друга. И наоборот, он может генерировать слишком много точек в областях, где кривая близка к линейной. Распространенным адаптивным методом является рекурсивное подразделение, в котором контрольные точки кривой проверяются, чтобы увидеть, приближает ли кривая линию в пределах малого допуска. Если нет, кривая параметрически подразделяется на два сегмента, 0 ≤ t ≤ 0,5 и 0,5 ≤ t ≤ 1, и та же процедура применяется рекурсивно к каждой половине. Существуют также методы прямого разностного анализа, но необходимо проявлять большую осторожность при анализе распространения ошибок. [26]
Аналитические методы, в которых кривая Безье пересекается с каждой линией сканирования, включают в себя нахождение корней кубических полиномов (для кубических кривых Безье) и работу с несколькими корнями, поэтому они нечасто используются на практике. [26]
Алгоритм растеризации, используемый в Metafont, основан на дискретизации кривой, так что она аппроксимируется последовательностью « ходов ладьи », которые являются чисто вертикальными или чисто горизонтальными, вдоль границ пикселей. Для этого плоскость сначала разбивается на восемь секторов по 45° (координатными осями и двумя линиями ), затем кривая разбивается на более мелкие сегменты таким образом, чтобы направление сегмента кривой оставалось в пределах одного сектора; поскольку скорость кривой является полиномом второй степени, нахождение значений, при которых она параллельна одной из этих линий, можно выполнить путем решения квадратных уравнений . Внутри каждого сегмента доминирует либо горизонтальное, либо вертикальное движение, и общее количество шагов в любом направлении можно считать из координат конечной точки; например, в секторе 0–45° доминирует горизонтальное движение вправо, поэтому остается только решить, между какими шагами вправо кривая должна сделать шаг вверх. [27]
Существует также модифицированная кривая форма алгоритма рисования линий Брезенхэма от Zingl, которая выполняет эту растеризацию путем деления кривой на рациональные части и вычисления ошибки в каждом пикселе таким образом, что она либо движется под углом 45°, либо прямо в зависимости от ошибки компаундирования при прохождении по кривой. Это сокращает следующий шаг вычисления до серии целочисленных сложений и вычитаний. [28]
Анимация
В анимационных приложениях, таких как Adobe Flash и Synfig , кривые Безье используются для контура, например, движения. Пользователи очерчивают желаемый путь в кривых Безье, а приложение создает необходимые кадры для перемещения объекта по пути. [29] [30]
В 3D-анимации кривые Безье часто используются для определения 3D-путей, а также 2D-кривые для интерполяции ключевых кадров. [31] Кривые Безье теперь очень часто используются для управления плавностью анимации в CSS , JavaScript , JavaFx и Flutter SDK . [4]
Шрифты
Шрифты TrueType используют составные кривые Безье, состоящие из квадратичных кривых Безье. Другие языки и инструменты визуализации (такие как PostScript , Asymptote , Metafont и SVG ) используют составные кривые Безье, состоящие из кубических кривых Безье, для рисования изогнутых фигур. Шрифты OpenType могут использовать любой вид кривой, в зависимости от того, какая технология шрифта лежит в основе оболочки OpenType. [32]
Шрифтовые движки, такие как FreeType , рисуют кривые шрифта (и линии) на пикселизированной поверхности, используя процесс, известный как растеризация шрифта . [12] Обычно шрифтовые движки и векторные графические движки рендерят кривые Безье, разделяя их рекурсивно до точки, где кривая становится достаточно плоской, чтобы ее можно было нарисовать как серию линейных или круговых сегментов. Точный алгоритм разделения зависит от реализации, необходимо соблюдать только критерии плоскостности, чтобы достичь необходимой точности и избежать немонотонных локальных изменений кривизны. Функция «гладкой кривой» диаграмм в Microsoft Excel также использует этот алгоритм. [33]
Поскольку дуги окружностей и эллипсов не могут быть точно представлены кривыми Безье, они сначала аппроксимируются кривыми Безье, которые в свою очередь аппроксимируются дугами окружностей. Это неэффективно, поскольку существуют также аппроксимации всех кривых Безье с использованием дуг окружностей или эллипсов, которые могут быть визуализированы пошагово с произвольной точностью. Другой подход, используемый современными аппаратными графическими адаптерами с ускоренной геометрией, может преобразовать точно все кривые Безье и конические кривые (или поверхности) в NURBS , которые могут быть визуализированы пошагово без предварительного рекурсивного разделения кривой для достижения необходимого условия плоскостности. Этот подход также сохраняет определение кривой при всех линейных или перспективных 2D и 3D преобразованиях и проекциях. [ необходима цитата ]
Робототехника
Поскольку контрольный многоугольник позволяет определить, сталкивается ли путь с какими-либо препятствиями, кривые Безье используются для построения траекторий конечных эффекторов . [34] Кроме того, траектории суставного пространства могут быть точно дифференцированы с помощью кривых Безье. Следовательно, производные траекторий суставного пространства используются для расчета динамики и усилия управления (профилей крутящего момента) роботизированного манипулятора. [34]
↑ Уэллс, Джон (3 апреля 2008 г.). Словарь произношения Longman (3-е изд.). Pearson Longman. ISBN 978-1-4058-8118-0.
^ Мортенсон, Майкл Э. (1999). Математика для приложений компьютерной графики. Industrial Press Inc. стр. 264. ISBN9780831131111.
^ abc Хазевинкель, Михиль (1997). Энциклопедия математики: Приложение. Том 1. Springer Science & Business Media. стр. 119. ISBN9780792347095.
^ ab "Класс Cubic - библиотека анимации - Dart API". api.flutter.dev . Получено 2021-04-26 .
^ Бисвас, Прадипта; Лэнгдон, Пэт (2015-04-03). «Мультимодальная интеллектуальная система отслеживания взгляда». Международный журнал взаимодействия человека и компьютера . 31 (4): 277–294. doi :10.1080/10447318.2014.1001301. ISSN 1044-7318. S2CID 36347027.
^ Джеральд Э. Фарин; Йозеф Хошек; Мён-Су Ким (2002). Справочник по компьютерному геометрическому проектированию. Elsevier. С. 4–6. ISBN978-0-444-51104-1.
^ Поль де Кастельжо. Математика и CAO. Том 2: Формы на полюсах . ISBN9782866010423.
^ Марио А. Гутьеррес; Фредерик Вексо; Дэниел Тельманн (2023). Шаг в виртуальную реальность. Спрингер Природа. п. 33. ISBN9783031364877.
^ Джон Буркардт. "Forcing Bezier Interpolation". Архивировано из оригинала 25.12.2013.
^ Макс К. Агостон (2005). Компьютерная графика и геометрическое моделирование: реализация и алгоритмы. Springer Science & Business Media. стр. 404. ISBN978-1-84628-108-2.
^ ab "Условные обозначения FreeType Glyph / VI. Контуры FreeType". Проект Free Type . 13 февраля 2018 г. "FreeType Glyph Conventions – Version 2.1 / VI. FreeType outlines". 6 марта 2011 г. Архивировано из оригинала 29-09-2011.
^ Дункан Марш (2005). Прикладная геометрия для компьютерной графики и САПР . Springer Undergraduate Mathematics Series (2-е изд.). ISBN978-1-85233-801-5. ASIN 1852338016.
^ Шене, К.К. «Нахождение точки на кривой Безье: алгоритм де Кастельжо» . Проверено 6 сентября 2012 г.
^ ab Mark Kilgard (10 апреля 2012 г.). «CS 354 Векторная графика и рендеринг путей». стр. 28.
^ Рида Т. Фаруки. "Введение в кривые пифагорейского годографа" (PDF) . Архивировано из оригинала (PDF) 5 июня 2015 г., в частности стр. 16 «таксономия офсетных кривых».
Килгард, Марк Дж.; Мортон, Генри Паккард (24 ноября 2011 г.). "US20110285719A1 Аппроксимация штрихованных криволинейных сегментов высшего порядка квадратичными сегментами кривой Безье". Google Patents .
Для обзора см. Elber, G. (май 1997 г.). "Сравнение методов аппроксимации офсетной кривой" (PDF) . IEEE Computer Graphics and Applications . 17 (3): 62–71. doi :10.1109/38.586019.
^ Ричард Дж. Кинч (1995). «MetaFog: преобразование форм Metafont в контуры» (PDF) . TUGboat . 16 (3–Труды ежегодного собрания 1995 года). Архивировано (PDF) из оригинала 2022-10-09.
^ abc Фарин, Джеральд (1997). Кривые и поверхности для компьютерного геометрического проектирования (4-е изд.). Elsevier Science & Technology Books. ISBN978-0-12-249054-5.
^ Эк, Маттиас (август 1993 г.). «Снижение степени кривых Безье». Computer Aided Geometric Design . 10 (3–4): 237–251. doi :10.1016/0167-8396(93)90039-6.
^ Рабабах, Абедаллах; Ибрагим, Салису (2018). «Геометрическое снижение степени кривых Безье». Математика и вычисления . 253 : 87–95. doi :10.1007/978-981-13-2095-8_8.
^ J. Sánchez-Reyes (ноябрь 2009). «Комплексные рациональные кривые Безье». Computer Aided Geometric Design . 26 (8): 865–876. doi :10.1016/j.cagd.2009.06.003.
^ Александр Решетов и Дэвид Любке, Phantom Ray-Hair Intersector. В трудах ACM по компьютерной графике и интерактивным технологиям (1 августа 2018 г.). [1]
^ аб Сюэсян Ли и Цзюньсяо Сюэ. «Комплексная квадратичная кривая Безье на единичном круге». Чжэнчжоу, Китай: Школа программного обеспечения Университета Чжэнчжоу.
^ "Использование путей движения в анимации". Adobe . Получено 2019-04-11 .
^ "По следам сплайна". Synfig Wiki . Получено 11.04.2019 .
^ Доджсон, Нил А. (1999). "Advanced Graphics Lecture Notes" (PDF) . cl.cam.ac.uk . Компьютерная лаборатория Кембриджского университета. Архивировано (PDF) из оригинала 2022-10-09.
^ "Разница между CFF и TTF". Know How . Linotype. Архивировано из оригинала 2017-07-03 . Получено 3 июля 2018 . Формат OpenType был сформулирован в 1996 году. К 2003 году он начал заменять два конкурирующих формата: шрифты Type1, разработанные Adobe и основанные на [P]ost[S]cript, и шрифты TrueType, указанные Microsoft и Apple. (...) TTF обозначает TrueTypeFont и указывает на то, что данные шрифта такие же, как в шрифтах TrueType. CFF обозначает формат шрифта Type1. Строго говоря, он относится к формату Compact Font Format, который используется в процессах сжатия для шрифтов Type2. (...) кубический формат Безье шрифтов Type1 более экономит место по сравнению с квадратичным форматом шрифтов TrueType. Несколько килобайт можно сэкономить в больших, сложных шрифтах, которые могут представлять преимущество в Интернете. С другой стороны, более подробная информация о подсказках шрифтов TrueType полезна для очень обширной оптимизации для использования на экране.
^ "smooth_curve_bezier_example_file.xls". Rotating Machinery Analysis, Inc. Архивировано из оригинала 2011-07-18 . Получено 2011-02-05 .
^ ab Малик, Арыслан; Хендерсон, Трой; Празеница, Ричард (январь 2021 г.). «Генерация траектории для многотельной роботизированной системы с использованием формулы произведения экспонент». Форум AIAA Scitech 2021 : 2016. doi :10.2514/6.2021-2016. ISBN978-1-62410-609-5. S2CID 234251587.
^ Гросс, Ренан (2014). «Мосты, струнное искусство и кривые Безье». В Pitici, Mircea (ред.). Лучшее сочинение по математике 2013 года . Princeton University Press. стр. 77–89. doi :10.1515/9781400847990-011. ISBN9780691160412. JSTOR j.ctt4cgb74.13.
Источники
Рида Т. Фаруки (август 2012 г.). «Базовый полином Бернштейна: ретроспектива столетия» (PDF) . Компьютерное геометрическое проектирование . 29 (6): 379–419. doi :10.1016/j.cagd.2012.03.001.
Пол Бурк (2009-07-19). Поверхности Безье (в 3D). Архивировано из оригинала 2009-07-19.
Дональд Кнут (1986). Metafont: программа . Addison-Wesley. стр. 123–131.Превосходное обсуждение деталей реализации; доступно бесплатно как часть дистрибутива TeX.
Томас Седерберг. Кривые Безье (PDF) . Архивировано из оригинала (PDF) 2006-02-21 . Получено 2005-09-14 .
Раджив Чандел (2014-03-20). «Реализация кривых Безье в играх».
Дальнейшее чтение
A Primer on Bézier Curves – онлайн-книга с открытым исходным кодом, объясняющая кривые Безье и связанные с ними графические алгоритмы, с интерактивной графикой.
Кубические кривые Безье – Под капотом (видео) – видео, демонстрирующее, как компьютеры визуализируют кубическую кривую Безье, Питер Ноуэлл
Праутч, Хартмут; Бём, Вольфганг; Палушны, Марко (2002). Методы Безье и B-сплайна . Springer Science & Business Media. ISBN 978-3-540-43761-1.
Галлье, Жан (1999). "Глава 5. Полиномиальные кривые как кривые Безье". Кривые и поверхности в геометрическом моделировании: теория и алгоритмы . Морган Кауфманн.Эта книга больше не издается и доступна бесплатно у автора.
Фарин, Джеральд Э. (2002). Кривые и поверхности для CAGD: практическое руководство (5-е изд.). Морган Кауфманн. ISBN 978-1-55860-737-8.
Ahn, Young Joon (2004). «Аппроксимация дуг окружностей и смещенных кривых кривыми Безье высокой степени». Журнал вычислительной и прикладной математики . 167 (2): 405–416. Bibcode : 2004JCoAM.167..405A. doi : 10.1016/j.cam.2003.10.008 .
Дэвис, Джейсон. «Анимированные кривые Безье».
Хови, Чад (20 мая 2022 г.). «Геометрия Безье». GitHub .
Хови, Чад (2022). Формулировка и реализация на Python геометрии Безье и B-сплайна. SAND2022-7702C. (153 страницы)
Внешние ссылки
Компьютерный код
TinySpline: C-библиотека с открытым исходным кодом для NURBS, B-сплайнов и кривых Безье с привязками к различным языкам
Библиотека C++ для генерации функций Безье во время компиляции
Простая реализация кривой Безье с помощью рекурсивного метода на Python