Кривая Безье
Безье Кривая ( /ˈbɛz.i.eɪ/BEH-zee-ay 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 .
Конкретные случаи
[ редактировать ]Кривая Безье определяется набором контрольных точек от до P0 Pn , = 1 для линейной, 2 для квадратичной, 3 для где n называется порядком кривой ( n кубической и т. д.). Первая и последняя контрольные точки всегда являются конечными точками кривой; однако промежуточные контрольные точки обычно не лежат на кривой. Суммы в следующих разделах следует понимать как аффинные комбинации , то есть сумма коэффициентов равна 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, кривая отклоняется от направлении P0 P1 , увеличивается достигает P2 затем изгибается и в направлении P1 в .
Вторая производная кривой Безье по t равна
Кубические кривые Безье
[ редактировать ]Четыре точки P 0 , P 1 , P 2 и P 3 на плоскости или в многомерном пространстве определяют кубическую кривую Безье.Кривая начинается в точке P0 , направляясь к P1 , и достигает точки P3 , в направлении P2 идя . не проходит через P1 P2 или он ; Обычно эти точки предназначены только для предоставления информации о направлении. Расстояние между P1 «насколько далеко» и «насколько быстро и P2 определяет , » кривая движется к перед P1 поворотом P2 к .
Записав B P i , P j , P k ( t ) для квадратичной кривой Безье, определяемой точками Pi , k P j и P , кубическую кривую Безье можно определить как аффинную комбинацию двух квадратичных кривых Безье:
Явный вид кривой:
При некоторых вариантах выбора P 1 и P 2 кривая может пересекать сама себя или содержать точку возврата .
Любую серию из 4 различных точек можно преобразовать в кубическую кривую Безье, проходящую через все 4 точки по порядку.Учитывая начальную и конечную точку некоторой кубической кривой Безье, а также точки вдоль кривой, соответствующие t = 1/3 и t = 2/3, можно восстановить контрольные точки исходной кривой Безье. [9]
Производная кубической кривой Безье по t равна
Вторая производная кривой Безье по t равна
Общее определение
[ редактировать ]Кривые Безье могут быть определены для любой степени n .
Рекурсивное определение
[ редактировать ]Рекурсивное определение кривой Безье степени n выражает ее как двухточечную линейную комбинацию ( линейную интерполяцию ) пары соответствующих точек в двух кривых Безье степени n - 1.
Позволять обозначают кривую Безье, определяемую любым набором точек P 0 , P 1 , ..., P k . Тогда для начала
Эта рекурсия поясняется в анимации ниже .
Явное определение
[ редактировать ]В явном виде формулу можно выразить следующим образом (где t 0 и (1-т) 0 непрерывно расширяются до 1 на протяжении [0,1]):
где являются биномиальными коэффициентами .
Например, когда n = 5:
Терминология
[ редактировать ]С этими параметрическими кривыми связана некоторая терминология. У нас есть
где многочлены
известны как базисные полиномы Бернштейна степени n .
т 0 знак равно 1, (1 - т ) 0 = 1, а биномиальный коэффициент , , является:
Точки P i называются контрольными точками кривой Безье. Многоугольник , образованный соединением точек Безье линиями , начиная с P 0 и заканчивая P n , называется многоугольником Безье (или контрольным многоугольником ). Выпуклая оболочка многоугольника Безье содержит кривую Безье.
Полиномиальная форма
[ редактировать ]Иногда желательно выразить кривую Безье в виде полинома, а не суммы менее простых полиномов Бернштейна . Применение биномиальной теоремы к определению кривой с последующей некоторой перестановкой даст
где
Это могло бы быть практично, если бы может быть вычислено до многих оценок ; однако следует проявлять осторожность, поскольку кривые высокого порядка могут не иметь числовой стабильности ( алгоритм де Кастельжо в этом случае следует использовать ). Обратите внимание, что пустой продукт равен 1.
Характеристики
[ редактировать ]- Кривая начинается в и заканчивается в ; это так называемое свойство интерполяции конечной точки .
- Кривая является линией тогда и только тогда, когда все контрольные точки лежат на одной прямой .
- Начало и конец кривой касаются первой и последней частей многоугольника Безье соответственно.
- Кривая может быть разбита в любой точке на две подкривые или на произвольное количество подкривых, каждая из которых также является кривой Безье.
- Некоторые кривые, которые кажутся простыми, такие как круг , не могут быть точно описаны кривой Безье или кусочной кривой Безье; хотя кубическая кривая Безье, состоящая из четырех частей, может аппроксимировать круг (см. составную кривую Безье ) с максимальной радиальной ошибкой менее одной части на тысячу, когда каждая внутренняя контрольная точка (или автономная точка) представляет собой расстояние горизонтально или вертикально от внешней контрольной точки на единичном круге. В более общем смысле, кубическая кривая Безье из n частей может аппроксимировать круг, когда каждая внутренняя контрольная точка представляет собой расстояние от внешней контрольной точки на единичном круге, где (т.е. ), и .
- Каждая квадратичная кривая Безье также является кубической кривой Безье, и, в более общем смысле, каждая кривая Безье степени n также является кривой степени m для любого m > n . Подробно, кривая степени n с контрольными точками эквивалентно (включая параметризацию) кривой степени n + 1 с контрольными точками , где , и определить , .
- Кривые Безье обладают свойством уменьшения вариации . Интуитивно это означает, что кривая Безье не «волнится» больше, чем многоугольник ее контрольных точек, а на самом деле может «волниться» меньше. [10]
- нет локального контроля На кривых Безье степени n — это означает, что любое изменение контрольной точки требует перерасчета и, таким образом, влияет на аспект всей кривой, «хотя чем дальше эта точка находится от измененной контрольной точки, тем меньше изменение кривой». [11]
- Кривая Безье порядка выше двух может пересекать сама себя или иметь точку возврата при определенном выборе контрольных точек.
Кривая второго порядка представляет собой параболический отрезок
[ редактировать ]Квадратичная кривая Безье также является сегментом параболы . Поскольку парабола представляет собой коническое сечение , в некоторых источниках квадратичные Безье называются «коническими дугами». [12] Ссылаясь на рисунок справа, важные особенности параболы можно вывести следующим образом: [13]
- Касательные к параболе на концах кривой (А и В) пересекаются в ее контрольной точке (С).
- Если D является средней точкой AB, касательная к кривой, перпендикулярной CD (пунктирная голубая линия), определяет ее вершину (V). Его ось симметрии (голубой штрихпунктир) проходит через V и перпендикулярна касательной.
- E — это любая точка кривой с касательной под углом 45 ° к CD (пунктирная зеленая линия). Если G является пересечением этой касательной и оси, линия, проходящая через G и перпендикулярная CD, является направляющей (сплошной зеленый цвет).
- Фокус (F) находится на пересечении оси и линии, проходящей через E и перпендикулярной CD (желтый пунктир). Широкая прямая кишка — это сегмент линии внутри кривой (сплошной желтый).
Производная
[ редактировать ]Производная кривой порядка n равна
Построение кривых Безье
[ редактировать ]Линейные кривые
[ редактировать ]Пусть t обозначает долю прогресса (от 0 до 1), которую точка B ( t совершила ) при прохождении от P 0 до P 1 . Например, когда t 0,25, B ( t четверть пути от точки P0 = до P1 ) составляет . Поскольку t варьируется от 0 до 1, B ( t ) рисует линию от P 0 до P 1 .
Анимация линейной кривой Безье, t в [0,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 ) и описывает квадратичную кривую Безье.
Построение квадратичной кривой Безье | Анимация квадратичной кривой Безье, t в [0,1] |
Кривые высшего порядка
[ редактировать ]Для кривых более высокого порядка необходимо соответственно больше промежуточных точек. Для кубических кривых можно построить промежуточные точки Q 0 , Q 1 и Q 2 , описывающие линейные кривые Безье, и точки R 0 и R 1 , описывающие квадратичные кривые Безье:
Построение кубической кривой Безье | Анимация кубической кривой Безье, t в [0,1] |
кривых четвертого порядка можно построить промежуточные точки Q0 Для , Q1 , и Q2 Q3 и , , описывающие линейные кривые Безье, точки и S1 R2 , которые описывающие квадратичные кривые Безье, S0 и R0 R1 , точки описать кубические кривые Безье:
Построение кривой Безье четвертой степени. | Анимация кривой Безье четвертой степени, t в [0,1] |
Для кривых пятого порядка можно построить аналогичные промежуточные точки.
Анимация кривой Безье пятого порядка, t в [0,1] красным цветом. Также показаны кривые Безье для каждого из низших порядков. |
Эти представления основаны на процессе, используемом в алгоритме Де Кастельжо для расчета кривых Безье. [14]
Смещения (или обводки) кривых Безье
[ редактировать ]Кривая с фиксированным смещением от заданной кривой Безье, называемая в математике смещением или параллельной кривой (лежащей «параллельно» исходной кривой, как смещение между рельсами на железнодорожном пути ), не может быть точно сформирована кривой Безье ( за исключением некоторых тривиальных случаев). В общем, двусторонняя кривая смещения кубической Безье представляет собой алгебраическую кривую 10-го порядка. [15] и, в более общем смысле, для Безье степени n двусторонняя кривая смещения представляет собой алгебраическую кривую степени 4 n - 2. [16] Однако существуют эвристические методы, которые обычно дают адекватное приближение для практических целей. [17]
В области векторной графики рисование двух симметрично расположенных смещенных кривых называется обводкой (кривая Безье или вообще путь из нескольких сегментов Безье). [15] Преобразование кривых смещения в заполненные контуры Безье имеет практическое значение при преобразовании шрифтов , определенных в Metafont , которые требуют обводки кривых Безье, в более широко используемые шрифты PostScript типа 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]
Существует также модифицированная форма кривой алгоритма рисования линий Брезенхэма, разработанная Зинглом, которая выполняет эту растеризацию путем разделения кривой на рациональные части и расчета ошибки в каждом местоположении пикселя, так что она движется либо под углом 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]
См. также
[ редактировать ]- Поверхность Безье
- B-сплайн
- ГЕМ/4 и ГЕМ/5
- Кривая Эрмита
- НУРБС
- Стринговое искусство . Кривые Безье также образуются во многих распространенных формах струнного искусства, когда нити наматываются на рамку из гвоздей. [35]
- Свойство уменьшения вариации кривых Безье
Примечания
[ редактировать ]- ^ Программы обработки изображений, такие как Inkscape , Adobe Photoshop и GIMP .
- ^ В анимационных приложениях, таких как Adobe Flash , Adobe After Effects , Microsoft Expression Blend , Blender , Autodesk Maya и Autodesk 3ds Max .
Ссылки
[ редактировать ]Цитаты
[ редактировать ]- ^ Уэллс, Джон (3 апреля 2008 г.). Словарь произношения Лонгмана (3-е изд.). Пирсон Лонгман. ISBN 978-1-4058-8118-0 .
- ^ Мортенсон, Майкл Э. (1999). Математика для приложений компьютерной графики . Industrial Press Inc. с. 264. ИСБН 9780831131111 .
- ^ Перейти обратно: а б с Хазевинкель, Мишель (1997). Энциклопедия математики: Приложение . Том. 1. Springer Science & Business Media. п. 119. ИСБН 9780792347095 .
- ^ Перейти обратно: а б «Класс Cubic — библиотека анимации — Dart API» . api.flutter.dev . Проверено 26 апреля 2021 г.
- ^ Бисвас, Прадипта; Лэнгдон, Пэт (3 апреля 2015 г.). «Мультимодальная интеллектуальная система слежения за взглядом». Международный журнал взаимодействия человека и компьютера . 31 (4): 277–294. дои : 10.1080/10447318.2014.1001301 . ISSN 1044-7318 . S2CID 36347027 .
- ^ Джеральд Э. Фарин; Йозеф Хошек; Мён Су Ким (2002). Справочник по компьютерному геометрическому проектированию . Эльзевир. стр. 4–6. ISBN 978-0-444-51104-1 .
- ^ Поль де Кастельжо. Математика и САПР. Том 2: Формы полюсов . ISBN 9782866010423 .
- ^ Марио А. Гутьеррес; Фредерик Вексо; Дэниел Тельманн (2023). Шаг в виртуальную реальность . Спрингер Природа. п. 33. ISBN 9783031364877 .
- ^ Джон Буркардт. «Принудительная интерполяция Безье» . Архивировано из оригинала 25 декабря 2013 г.
- ^ Теофило Гонсалес ; Хорхе Диас-Эррера; Аллен Такер (2014). Справочник по вычислительной технике, третье издание: Информатика и разработка программного обеспечения . ЦРК Пресс. стр. 32–14. ISBN 978-1-4398-9852-9 .
- ^ Макс К. Агостон (2005). Компьютерная графика и геометрическое моделирование: реализация и алгоритмы . Springer Science & Business Media. п. 404. ИСБН 978-1-84628-108-2 .
- ^ Перейти обратно: а б «Соглашения о глифах FreeType / VI. Контуры FreeType» . Проект «Свободный тип» . 13 февраля 2018 г.
«Соглашения о глифах FreeType – Версия 2.1 / VI. Краткое описание FreeType» . 6 марта 2011 г. Архивировано из оригинала 29 сентября 2011 г. - ^ Дункан Марш (2005). Прикладная геометрия для компьютерной графики и САПР . Серия Springer по математике для студентов (2-е изд.). ISBN 978-1-85233-801-5 . АСИН 1852338016 .
- ^ Шене, К.К. «Нахождение точки на кривой Безье: алгоритм де Кастельжо» . Проверено 6 сентября 2012 г.
- ^ Перейти обратно: а б Марк Килгард (10 апреля 2012 г.). «Векторная графика и рендеринг пути CS 354» . п. 28.
- ^ Рида Т. Фаруки. «Введение в кривые годографа Пифагора» (PDF) . Архивировано из оригинала (PDF) 5 июня 2015 г. , в частности стр. 16 «Таксономия кривых смещения».
- ^ Например:
- Остромоухов, Виктор. Приближение Эрмита для расчета кривой смещения (PDF) . CiteSeerX 10.1.1.43.1724 .
- Килгард, Марк Дж.; Мортон, Генри Паккард (24 ноября 2011 г.). «US20110285719A1 Аппроксимация штрихованных кривых сегментов высшего порядка квадратичными сегментами кривой Безье» . Гугл Патенты .
- ^ Ричард Дж. Кинч (1995). «MetaFog: преобразование фигур Metafont в контуры» (PDF) . БУКСИР . 16 (3 – Материалы ежегодного собрания 1995 г.). Архивировано (PDF) из оригинала 9 октября 2022 г.
- ^ Перейти обратно: а б с Фарин, Джеральд (1997). Кривые и поверхности для автоматизированного геометрического проектирования (4-е изд.). Книги Elsevier по науке и технологиям. ISBN 978-0-12-249054-5 .
- ^ «Сплайны Безье» . Документация FontForge 20230101 .
- ^ Эк, Матиас (август 1993 г.). «Степень уменьшения кривых Безье». Компьютерное геометрическое проектирование . 10 (3–4): 237–251. дои : 10.1016/0167-8396(93)90039-6 .
- ^ Рабаба, Абедалла; Ибрагим, Салису (2018). «Геометрическое приведение кривых Безье». Математика и информатика . 253 : 87–95. дои : 10.1007/978-981-13-2095-8_8 .
- ^ Нил Доджсон (25 сентября 2000 г.). «Некоторые математические элементы графики: рациональные B-сплайны» . Проверено 23 февраля 2009 г.
- ^ Х. Санчес-Рейес (ноябрь 2009 г.). «Комплексные рациональные кривые Безье». Компьютерное геометрическое проектирование . 26 (8): 865–876. дои : 10.1016/j.cagd.2009.06.003 .
- ^ Александр Решетов и Дэвид Любке, Phantom Ray-Hair Intersector. В материалах ACM по компьютерной графике и интерактивным методам (1 августа 2018 г.). [1]
- ^ Перейти обратно: а б Сюэсян Ли и Цзюньсяо Сюэ. «Комплексная квадратичная кривая Безье на единичном круге» . Чжэнчжоу, Китай: Школа программного обеспечения Университета Чжэнчжоу.
- ^ Части 19–22 Кнут, Дональд Э. (1986). Метафонт: Программа . Аддисон-Уэсли. ISBN 0-201-13438-1 .
- ^ Зингль, Алоис (2012). Алгоритм растеризации для рисования кривых (PDF) (Отчет).
HTML-аннотация и демонстрация: Зингль, Алоис (2016). «Брезенхем» . Members.chello.at . - ^ «Использование траекторий движения в анимации» . Adobe . Проверено 11 апреля 2019 г.
- ^ «По сплайну» . Синфиг Вики . Проверено 11 апреля 2019 г.
- ^ Доджсон, Нил А. (1999). «Конспекты лекций по продвинутой графике» (PDF) . cl.cam.ac.uk. Компьютерная лаборатория Кембриджского университета. Архивировано (PDF) из оригинала 9 октября 2022 г.
- ^ «Разница между CFF и TTF» . Секрет производства . Линотип. Архивировано из оригинала 3 июля 2017 г. Проверено 3 июля 2018 г.
Формат OpenType был сформулирован в 1996 году. К 2003 году он начал заменять два конкурирующих формата: шрифты Type1, разработанные Adobe и основанные на [P]ost[S]script, и шрифты TrueType, определенные Microsoft и Apple. (...) TTF означает TrueTypeFont и указывает, что данные шрифта такие же, как и в шрифтах TrueType. CFF означает формат шрифта Type1. Строго говоря, это относится к компактному формату шрифтов, который используется в процессах сжатия шрифтов Type2. (...) кубический формат Безье шрифтов Type1 более компактен по сравнению с квадратичным форматом шрифтов TrueType. Некоторые килобайты можно сохранить с помощью крупных и сложных шрифтов, что может стать преимуществом в Интернете. С другой стороны, более подробная информация о шрифтах TrueType полезна для очень обширной оптимизации для использования на экране.
- ^ «smooth_curve_bezier_example_file.xls» . Анализ вращающегося оборудования, Inc. Архивировано из оригинала 18 июля 2011 г. Проверено 5 февраля 2011 г.
- ^ Перейти обратно: а б Малик, Арыслан; Хендерсон, Трой; Праженица, Ричард (январь 2021 г.). «Генерация траектории многотельной робототехнической системы с использованием формулы продукта экспоненты» . Форум AIAA Scitech 2021 : 2016. doi : 10.2514/6.2021-2016 . ISBN 978-1-62410-609-5 . S2CID 234251587 .
- ^ Гросс, Ренан (2014). «Мосты, струнное искусство и кривые Безье». В Питичи, Мирча (ред.). Лучшее сочинение по математике 2013 года . Издательство Принстонского университета. стр. 77–89. дои : 10.1515/9781400847990-011 . ISBN 9780691160412 . JSTOR j.ctt4cgb74.13 .
Источники
[ редактировать ]- Рида Т. Фаруки (август 2012 г.). «Полиномиальный базис Бернштейна: столетняя ретроспектива» (PDF) . Компьютерное геометрическое проектирование . 29 (6): 379–419. дои : 10.1016/j.cagd.2012.03.001 .
- Пол Бурк (19 июля 2009 г.). Поверхности Безье (в 3D) . Архивировано из оригинала 19 июля 2009 г.
- Дональд Кнут (1986). Метафонт: Программа . Аддисон-Уэсли. стр. 123–131. Отличное обсуждение деталей реализации; доступен бесплатно как часть дистрибутива TeX.
- Томас Седерберг. Кривые Безье (PDF) . Архивировано из оригинала (PDF) 21 февраля 2006 г. Проверено 14 сентября 2005 г.
- Джей Ди Фоли; и др. (1992). Компьютерная графика: принципы и практика использования C (2-е изд.). Эддисон Уэсли.
- Раджив Чандел (20 марта 2014 г.). «Реализация кривых Безье в играх» .
Дальнейшее чтение
[ редактировать ]- Учебник по кривым Безье - онлайн-книга с открытым исходным кодом, объясняющая кривые Безье и связанные с ними графические алгоритмы, с интерактивной графикой.
- Кубические кривые Безье – Под капотом (видео) – видео Питера Ноуэлла, показывающее, как компьютеры отображают кубическую кривую Безье.
- От Безье до Бернштейна. Тематическая колонка Американского математического общества.
- «Кривая Безье» , Математическая энциклопедия , EMS Press , 2001 [1994]
- Праутч, Хартмут; Бём, Вольфганг; Палушны, Марко (2002). Методы Безье и B-сплайна . Springer Science & Business Media. ISBN 978-3-540-43761-1 .
- Галье, Жан (1999). «Глава 5. Полиномиальные кривые как кривые Безье» . Кривые и поверхности в геометрическом моделировании: теория и алгоритмы . Морган Кауфманн. Книга больше не издается и находится в свободном доступе у автора.
- Фарин, Джеральд Э. (2002). Кривые и поверхности для CAGD: Практическое руководство (5-е изд.). Морган Кауфманн. ISBN 978-1-55860-737-8 .
- Вайсштейн, Эрик В. «Кривая Безье» . Математический мир .
- Хоффманн, Гернот. «Кривые Безье» (PDF) . Архивировано из оригинала (PDF) 2 декабря 2006 г. (60 страниц)
- Ан, Ён Джун (2004). «Аппроксимация дуг окружностей и кривых смещения кривыми Безье высокой степени» . Журнал вычислительной и прикладной математики . 167 (2): 405–416. Бибкод : 2004JCoAM.167..405A . дои : 10.1016/j.cam.2003.10.008 .
- Дэвис, Джейсон. «Анимированные кривые Безье» .
- Хови, Чад (20 мая 2022 г.). «Геометрия Безье» . Гитхаб .
- Хови, Чад (2022 г.). Формулировка и реализация на Python геометрии Безье и B-сплайна. ПЕСОК2022-7702C . (153 страницы)
Внешние ссылки
[ редактировать ]- Компьютерный код