Бикубический лоскут

Бикубический лоскут (bicubic patch) — это поверхность, определяемая полиномиальным уравнением третьего порядка по параметрам u и v.

Бикубический лоскут

Уравнение (7.16) можно переписать в матричной форме:

Бикубический лоскут

В уравнениях (7.17) aij алгебраические векторные коэффициенты с компонентами х, у и z. Влияние этих коэффициентов на форму поверхности не является интуитивно понятным, точно так же, как по алгебраическим коэффициентам уравнения (6.10) нельзя было представить себе форму кривой. Возникает желание заменить алгебраические коэффициенты на геометрические, что было сделано ранее при выводе эрмитовой кривой. Поскольку алгебраических коэффициентов для поверхности насчитывается 16 штук, нам нужно ввести 16 граничных условий.

Первый набор граничных условий мы получим, потребовав, чтобы четыре граничные точки Р(0,0),Р(0,1),Р(1,0),Р(1,1) удовлетворяли уравнению (7.17). Чтобы получить второй набор граничных условий, мы зададим векторы касательных к граничным кривым поверхности в угловых точках по параметрам u иvРu (0,0), Pu(0,1), Рu(1,0), Рu(1.1) И Рv(0.0), Рv(0.1), Рv(1,0), Рv(1.1). Перечисленные граничные условия определяют форму граничных кривых поверхности, поскольку они определяют конечные точки этих кривых и векторы касательных в этих точках. Через заданные граничные кривые можно провести бесконечно много поверхностей, поэтому нам придется добавить граничные условия, которые определяли бы форму внутренней области поверхности. Мы потребуем, чтобы вторая производная в угловых точках имела определенные значения Puv(0,0), Puv(0,l), Рuv(1,0), Рuv (1,1). Под второй производной мы понимаем следующее выражение, называемое вектором кручения (twist vector):

Бикубический лоскут

Ниже мы обсудим влияние векторов кручения в угловых точках на форму внутренней области поверхности.

Подстановка 16 граничных условий в уравнение (7.17) даст нам 16 линейных по аij уравнений. Эти уравнения образуют систему, результат решения которой подставляется обратно в уравнение (7.17)' что дает нам приведенное ниже уравнение бикубического лоскута:

Бикубический лоскут

(0 ≤ u ≤1,0≤ v ≤1),

где функции сопряжения F1 F2F3 и F4 определяются следующим образом:

Бикубический лоскут

Это те же функции сопряжения, что и в уравнении эрмитовой кривой. Вообще говоря, уравнение (7.18) представляет собой попросту расширение уравнения эрмитовой кривой для описания поверхности. Уравнение (7.18) может быть редуцировано до уравнения кривой путем подстановки конкретного значения одного из параметров, например v=v0. Произведение последних двух матриц в правой части уравнения (7.18) дает вектор-столбец. Это умножение может быть интерпретировано следующим образом. Первая строка дает уравнение левой граничной кривой между Р(0,0) и Р(0,1), а вторая строка дает уравнение правой граничной кривой между Р( 1,0) и Р(1,1) (рис. 7.3). При подстановке конкретного значения v0 первые две строки дают нам конечные точки А и В. Последние две строки столбца для v = v00 задают векторы касательных в направлении и в точках А и В. Последнее утверждение мы проверим позже. Следовательно, уравнение (7.18) представляет собой объединение уравнений эрмитовых кривых, соответствующих разным значениям v. Граничные кривые, определяемые условиями v = 0 и v = 1, будут эрмитовыми кривыми. Аналогичным образом можно показать, что и граничные кривые для и = 0, и = 1 тоже будут эрмитовыми.

Бикубический лоскут

При попытке воспользоваться уравнением (7.18) мы столкнемся с проблемой задания векторов кручения, влияние которых на форму поверхности не является интуитивно понятным. Иногда для простоты им присваивают нулевые значения. Получаемая таким способом поверхность называется лоскутом Фергюсона или F-лоскутом (Ferguson's patch или F-patch). Поскольку нулевые векторы кручения делают поверхность более плоской, F-лоскут не может использоваться для моделирования1 поверхностей с большой кривизной. Однако он хорошо описывает поверхности с нулевой кривизной по крайней мере в одном направлении во всех точках.

Покажем теперь, как векторы кручения влияют на форму внутренней области поверхности. Если мы сможем показать, что векторы кручения определяют форму изопараметрической кривой v = v0 на рис. 7.3, мы сможем утверждать, что эти векторы влияют на любую внутреннюю изопараметрическую кривую, а значит, и на всю внутреннюю область лоскута. Точки A и В определяются граничными кривыми — эрмитовыми кривыми, которые не зависят от векторов кручения. Следовательно, мы должны показать, что векторы касательных в точках А и В определяются векторами кручения. Сделаем это, продифференцировав уравнение (7.18) по параметру и:

Бикубический лоскут

Обратите внимание, что произведение второй и третьей матриц мы записали в виде вектора-столбца с элементами G1(v), G2(v), G3(v), G4(v). Чтобы вычислить производную по и в точке A, мы должны подставить в уравнение (7.20) значения и = 0, v = v0. Подстановка и = 0 в вектор-строку делает ее равной [0 0 1 0], благодаря чему получается, что Рu(A) = G3(v0 ). Поскольку G3(v0) определяется векторами Pu (0,0), Рu (0,1), Рuv(0,0) и Рuv(0,1), мы заключаем, что векторы кручения Рuv(0,0) и Рuv(0,1) определяют Рu(А).

Подставим и = 1, v = v0 в уравнение (7.20), чтобы выяснить, от чего зависит Рu ( В):

Бикубический лоскут

 

Мы показали, что вектор касательной в точке В зависит от векторов кручения
Рuv(1,0) и Рuv(1,1). Отсюда мы делаем вывод, что векторы кручения влияют на
любую внутреннюю изопараметрическую кривую, а следовательно, определяют
форму бикубического лоскута.

 


1 Уравнение эрмитовой кривой получается при помощи аналогичной процедуры.

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