Эрмитовы кривые

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

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

Эрмитовы кривые

В формуле (6.10) ао, а1, а2, а3 — векторные коэффициенты параметрического уравнения, то есть векторы-строки с компонентами x, у и z3. Эти коэффициенты являются обычными алгебраическими коэффициентами2 уравнения, поэтому их изменение не приводит к интуитивно понятному изменению формы кривой.

Чтобы преодолеть этот недостаток алгебраических коэффициентов, мы заменим их векторами, обладающими конкретным геометрическим значением. Один из возможных вариантов — использование радиус-векторов конечных точек кривой Р0 и Р1, а также векторов Р0' и Р1', задающих направление касательных в этих точках. Добавление граничных условий в виде векторов Р0, Р1, Р0', Р1' к формуле (6.10) дает:

Эрмитовы кривые

Уравнения (6.11) могут быть решены относительно ао, а1, а2, а3:

Эрмитовы кривые

Подстановка (6.12) в (6.10) даст нам уравнение кривой в новом виде:

Эрмитовы кривые

Теперь в уравнение кривой уже не входят алгебраические коэффициенты — вместо них стоят векторы Р0, Р1, Р0', Р1'. Новые векторные коэффициенты называются геометрическими (geometric coefficients), а уравнение (6.13) называется уравнением эрмитовой кривой (Hennite curve)1. Преимущество эрмитовой кривой в том, что изменение ее формы может быть интуитивно предсказано по изменению геометрических коэффициентов. Например, изменение Р0 или Р1 вызовет такое изменение кривой, что ее концы переместятся в новое положение, задаваемое измененными векторами Р0 и Р1. Точно так же изменение P0' или Р1' приведет к тому, что касательные к кривой на ее концах станут совпадать с новыми векторами Рo' и Р1' (рис. 6.2).

Эрмитовы кривые

Матрица геометрических коэффициентов обозначается буквой [В] и включает векторы P0, P1, P0', P1' . Каждый вектор записывается в своей строке, в той последовательности, в которой они перечислены выше. Рисунок демонстрирует только влияние изменения векторов, определяющих направление и длину касательных. Обратите внимание на то, что происходит с кривой, если меняется только длина, но не направление вектора касательной. Можно заключить, что длина вектора определяет, насколько далеко вдоль кривой по направлению к ее середине распространяется влияние этого вектора.

Формулу (6.13) можно интерпретировать и так, как это сделано ниже. Векторы P0, P1, P0', P1' влияют на форму кривой, причем относительная степень их влияния определяется функциями

Эрмитовы кривые

Можно сказать, что эти функции «сопрягают» граничные условия P0, P1, P0', P1'  друг с другом, поэтому и называют их функциями сопряжения (blending functions).

 


1 Координаты точки мы представляли вектором-столбцом, следуя соглашениям, принятым создателями OpenGL Здесь же мы используем векторы-строки, потому что это делает более удобным представление матрицы геометрических коэффициентов, приведенной на рис. 6.2.

2 Уравнение (6.10) называется, соответственно, алгебраическим уравнением.

3  Эрмитова кривая определяется четырьмя векторами, поэтому они вводятся при ее создании и сохраняются в качестве задающих ее параметров.

Смотрите также