Параметрические кубические кривые

Для визуализации кривых линий с помощью компьютера надо знать их математическое описание [7, 10, 11, 14, 16, 18 20].

Существуют два основных способа представления кривых.

Первый способ заключается в задании кривой с помощью функций переменных x, y, z:

z = f(x, y), или F(x, y, z) = 0.

Этот способ представления влечет за собой многие ограничения, особенно, если некоторым значениям координат x и y будут соответствовать несколько значений z, т.е. если кривая образует петлю. Кроме того, в некоторых точках кривой значение тангенса угла наклона может оказаться равным бесконечности.

Эти проблемы снимаются в случае параметрического способа представления кривых, когда координаты x, y и z описываются как функции от некоторого параметра t:

x = f(t),

y = f(t),

z = f(t).

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

В качестве функций от параметра t наиболее часто используются многочлены третьей степени (кубические):

x(t) = axt3 + bxt2 + cxt + dx,

y(t) = ayt3 + byt2 + cyt + dy,

z(t) = azt3 + bzt2 + czt + dz.

Формулы для x(t), y(t) и z(t) аналогичны друг другу, поэтому далее будут рассматриваться только уравнения для координаты x.

Диапазон изменения параметра t может быть любым, но наиболее часто его ограничивают 0 £ t £ 1. Все последующие выводы будут рассмотрены для этого диапазона.

Значение касательного вектора к кривой определяется как первая производная функции x(t) по параметру t:

dx/dt = 3axt2 + 2bxt + cx.

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

Существует несколько способов описания параметрических кубических кривых. Рассмотрим основные: формы Эрмита, Безье и В-сплайны. Каждая из этих форм имеет свои достоинства и недостатки.

В рамках формы Эрмита кривая задается через координаты конечной и начальной точек (P1 и Р4) и значений касательных в этих точках (R1 и R4). Точкам присваиваются индексы 1 и 4, а не 1 и 2 для совместимости с выражениями, которые используются при построении кривых методами Безье и В-сплайнов. При этом полагают, что для начальной точки t=0, а для конечной t=1.

Перепишем формулы для функции x(t) и касательной x’(t) в матричном виде:

x(t) = [t3, t2, t, 1] Параметрические кубические кривые - student2.ru = T Cx, x’(t) = [3t2, 2t, 1, 0] Cx.

Задача построения кривой сводится к нахождению значений элементов матрицы Cx (т.е. коэффициентов ax, bx, cx, dx), удовлетворяющих условиям:

х(0) = Р = [0, 0, 0, 1] Сх,

х’(0) = R = [0, 0, 1, 0] Сх,

х(1) = Р = [1, 1, 1, 1] Сх,

х’(1) = R = [3, 2, 1, 0] Сх.

Объединяя полученные выражения в одно матричное уравнение, получим:

Ghx = Параметрические кубические кривые - student2.ru = Параметрические кубические кривые - student2.ru Сх.

Искомое выражение для Сх:

Сх = Параметрические кубические кривые - student2.ru Параметрические кубические кривые - student2.ru = Mh Ghx,

где Mh – эрмитова матрица, Ghx – геометрический вектор Эрмита.

Итоговое уравнение для координаты х:

x(t) = T Mh Ghx = P1x(2t3 – 3t2 + 1) + P4x(– 2t3 + 3t2) +

+ R1x(t3 – 2t2 + t) + + R4x(t3 – t2).

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

Для обеспечения условий непрерывности при стыковке сегментов кривой необходимо, чтобы конечная точка первого сегмента совпадала с начальной точкой второго сегмента, а касательные вектора к сегментам в этих точках имели одинаковое направление (длина векторов может быть разной):

P4I = P1II, R4I = kR1II.

В форме Безье для задания кубической кривой используются четыре управляющих точки: Р1, Р2, Р3 и Р4. Данная форма задания кубической кривой очень близка к эрмитовой форме, но касательные вектора в конечных точках R1 и R4 задаются отрезками Р1Р2 и Р3Р4:

R1x = 3(Р2x – Р1x) = x’(0), R4x = 3(Р4x – Р3x) = x’(1).

Переход от геометрического вектора Безье Gb к геометрическому вектору Эрмита Gh определяется как:

Ghх = Параметрические кубические кривые - student2.ru = Параметрические кубические кривые - student2.ru Параметрические кубические кривые - student2.ru = Mhb Gbх,

где Mhb – матрица перехода от геометрического вектора Безье к геометрическому вектору Эрмита.

Выражение для функции выглядит x(t) так:

x(t) = T Mh Ghx = T Mh Mhb Gbx = T Mb Gbx,

Mb = Mh Mhb = Параметрические кубические кривые - student2.ru .

Отсюда:

x(t) = (1 – t)3P1x + 3t(t – 1)2P2x + 3t2(1 – t)P3x + t3P4x.

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

Четыре управляющих точки в форме Безье определяют выпуклый четырехугольник, внутри которого находится сама кривая. Выпуклый многоугольник оказывается полезным при выполнении многих операций, например, при отсечении кривой по видимому объему. При выполнении этой операции вместо того, чтобы сразу проводить проверку отсечения кривой, сначала проверяется ее выпуклая оболочка и только в случае пересечения выпуклой оболочкой видимого объема возникает необходимость в проверке самой кривой.

Для обеспечения условий непрерывности при соединении сегментов кривой необходимо, чтобы конечная точка первого сегмента совпадала с начальной точкой второго сегмента, а точки P3I и P2II лежали на одной прямой, проходящей через точку соединения сегментов:

P4I = P1II, (P4I – P3I) = k(P2II – P1II).

Форма В-сплайнов является более гладкой, чем другие формы представления, т.к. непрерывностью изменения обладают ее касательный вектор и кривизна (т.е. первая и вторая производные кривой непрерывны в конечных точках) в отличие от форм Эрмита и Безье (у которых в конечных точках непрерывны лишь первые производные) [11, 14, 20].

Термин «сплайн» происходит от названия длинных гибких реек, которыми пользовались чертежники при разметке поверхности самолетов, кораблей.

В-сплайн описывается следующей формулой:

x(t) = T Ms Gsx,

где Ms = 1/6 Параметрические кубические кривые - student2.ru .

При аппроксимации управляющих точек Р1, Р2, …, Рn последовательностью В-сплайнов между каждой парой соседних точек Рi и Рi+1 последовательно используются геометрические матрицы:

Gisх = Параметрические кубические кривые - student2.ru , 2 £ i £ n – 2.

В общем случае управляющие точки В-сплайна не лежат на кривой, однако, при определенных условиях В-сплайн может проходить через любые управляющие точки. В-сплайн, описываемый приведенной выше формулой, пройдет через управляющую точку Рi в случае, если точки Рi, Рi+1 и Рi+2 совпадают. Обычно форму В-сплайнов применяют для аппроксимации продолжительных отрезков кривых, задаваемых значительным (более пяти) числом управляющих точек.

Наиболее широко в компьютерной графике используются так называемые неравномерные рациональные В-сплайны (NURBS – Non-Uniform Rational B-Splines). NURBS широко применяются в системах геометрического моделирования и трехмерной графике.

Наши рекомендации