Домой
назад Оглавление вперед




[стр.-39]

Глава 7

Представление поверхностей и работа с ними

Системам геометрического моделирования приходится хранить уравнения кривых (или эквивалентные характеристические параметры) для всех ребер и уравнения поверхностей (или эквивалентные параметры) для всех граней. Полезно знать, какими бывают уравнения поверхностей и какими параметрами они характеризуются. Мы говорили, что для реализации булевских операций необходимо рассчитывать точки пересечения кривых. В системах поверхностного моделирования с той же целью приходится определять кривые, по которым пересекаются поверхности. Например, если поверхность в процессе моделирования отсекается другой поверхностью, это требует вычисления кривой, по которой они пересекаются. Эта задача требует вычисления координат точек на поверхностях, а также производных в этих точках. В настоящей главе мы коротко рассмотрим различные типы уравнений поверхностей и методы работы с ними: методы вычисления координат, дифференцирования и обработки пересечений. Все эти вопросы рассматриваются более подробно в книгах по вычислительной геометрии [9, 49, 48, 129, 72, 112].

7.1. Типы уравнений поверхностей

Уравнения поверхностей, как и уравнения кривых, делятся на два основных типа. К первому типу относятся параметрические уравнения, связывающие значения координат х, у и z со значениями параметра. Ко второму относятся непараметрические уравнения, связывающие координаты х, у и z непосредственно друг с другом какой-либо функцией. Поясним эти определения на простом примере. Рассмотрим сферу радиуса R с центром в начале координат. Параметрическое уравнение этой сферы будет иметь вид:

P(u,v) = Rcosu cosv i + Rsinu cosv j + Rsmv k;

(0 <u <2n,-n/2 <v <n/2), где параметр и может рассматриваться как долгота, a v - как широта. Ту же сферу можно описать и без параметров и и v:

или

х2 +у2 +z2 -R2 = 0

(7.2)

Уравнение (7.2) называется неявным пепараметрическим, а уравнение (7.3) - явным непараметрическим.

У каждого типа уравнений есть свои преимущества и недостатки, но мы будем рассматривать только параметрические уравнения. Как отмечалось в главе 6, параметрическое уравнение позволяет эффективно вычислять точки на поверхности или кривой, отстоящие друг от друга на небольшие расстояния, что облегчает интерактивное отображение объекта и работу с ним. Это одна из главных причин, по которым параметрические уравнения используются для представления поверхностей в большинстве систем автоматизированного проектирования1.

7.2. Билинейная поверхность

Билинейная поверхность (bilinear surface) строится по четырем заданным точкам и описывается линейными уравнениями с параметрами и и v. Эти точки оказываются в углах построенной поверхности. Мы обозначим их буквами Р0 0, Pi.o, P<u> рм (Рис- 7.1). Вывести уравнение билинейной поверхности - это значит найти выражение для координат произвольной точки по значениям параметров и и v. Предположим, что эта точка делит отрезок [Ро.,,,?!,,, ] в отношении и:(\ - и) (рис. 7.1). Точки Р0г и РЛ, делят отрезки Р00Р0, и Pli0Plfl соответственно в отношении v:(\ - v). Определенная таким образом точка P(u.v) будет перемещаться по всей поверхности при изменении параметров и и а от 0 до 1. С учетом сделанных предположений координаты точек Р0(, иР( запишутся следующим образом:

Р0,„ = (l-v)Pop+vPol;(7.4)

Ptv=(l-v)Pl0+vPu.(7.5)

Pi,i

Рис. 7.1. Билинейная поверхность и ее опорные точки

Кривые, по которым пересекаются поверхности, в некоторых случаях бывает удобно рассчитывать, представляя одну из этих поверхностей параметрическим уравнением, а другую - непараметрическим. Поэтому в некоторых системах могут использоваться и непараметрическпе уравнения поверхностей, хотя и не как основной тин уравнений для хранения сведений о кривых. В этом случае возникает потребность в процедуре преобразования из параметрической формы в непараметрическую и обратно. Такое преобразование рассматривается в работе [69].


Аналогичным образом получаются координаты точки P(u,v):

P(u,v) = (i-u)P0v+uPu,.(7.6)

Подстановка уравнений (7.4) и (7.5) в (7.6) даст нам приведенное ниже уравнение билинейной поверхности:

P(u,v) = (\-u)[(\-v)Pw +vP0A] + u[(\-v)Plf) +vPu] =

= [(1-m)(1-i0 u(l-v) (i-u)v uv\

00

P.,o Po,

p...

(0<u < 1,0 <ȣ!).

(7.7)

Мы можем убедиться, что заданные точки расположены по углам билинейной поверхности, подставив соответствующие комбинации нулей и единиц в уравнение (7.7). Это уравнение говорит нам также о том, что билинейная поверхность представляет собой сопряжение угловых точек при помощи функций сопряжения (1 - ы)(1 - v), и(1 - »), (1 - u)v, uv. Из-за того что эти функции сопряжения линейны по соответствующим параметрам, билинейная поверхность обычно оказывается плоской.

7.3. Лоскут Куна

Сопряжение углов дает билинейную поверхность. Сопряжение граничных кривых произвольной формы дает поверхность, называемую лоскутом Куна (Coons patch). Слово «лоскут» указывает на то, что описываемая поверхность представляет собой сегмент, соответствующий значениям параметров 0 < ы < 1, 0 < о < 1. Комбинирование лоскутов позволяет образовать поверхность произвольной формы и размера.

Уравнение лоскута Куна выводится следующим образом. Предположим, что нам известны уравнения четырех граничных кривых: P0(v), Р, (v), Q0(w) и Q,(w) (рис. 7.2). Предположим также, что направление кривых Q0(u) И Q, (и) совпадает (на рис. 7.2 эти кривые направлены вправо, что обозначено стрелкой). То же предположение мы выскажем и относительно P0(v) и Р, (v).

Qi(")

Pi(f)

иQfl(K)

Рис. 7.2. Граничные кривые, определяющие лоскут Куна

Если граничные кривые не удовлетворяют этим требованиям, вам придется выполнить преобразование их к описанному выше виду. Направление и интервал изменения параметра легко изменить инверсией или масштабированием [120].

\

Удовлетворяющие описанным требованиям кривые интерполируются так, как показано ниже.

Выберем две кривые, расположенные друг напротив друга, например P0(v) и P,(rj). Интерполяция этих кривых в направлении и осуществляется линейным уравнением

Pl(u,v) = (i-u)P0(v) + uPl(v).(7.8)

Поверхность, определенная уравнением (7.8), будет ограничена кривой Р0 (v) при и = 0 и кривой Р, (v) при и = 1. Однако две другие границы будут отрезками прямых, соединяющих угловые точки. Убедиться в этом можно, подставив в уравнение (7.8) v = 0 или о=1. Таким образом, полученная поверхность не ограничивается кривыми QoQ., (и).

Определим вторую поверхность, интерполируя Q0(u) и Q0(a) в направлении v.

P2(u,v) = (l-v)Q0(u) + vQ,(u). (7-9)

Подставляя граничные значения и и v в уравнение (7.9), можно убедиться, что новая поверхность ограничивается кривыми Q0(u) и Q0(a), но не P0(v) или Р, (р). Попробуем определить еще одну поверхность Р3 (u, v), сложив Р, (и, v) и P2(u,v), и проверим, не будет ли она ограничиваться требуемыми кривыми.

Р3 (u,v) = (1 -и)Р0 (v) + и Р, (v) + (1 -v)Q0(u) + vQ, (и).(7.10) Подстановка граничных значений и и v в (7.10) дает:

Р3(0,о) = Р0(о) + (1 -o)Q0(0)+oQ, (0);(7.11)

P3(i,v) = Р, (v) + (1 -»)Q„(1) + vQ{ (1);(7.12)

Р3 (".0) = Qo(«) + (1 - и)Р„(0) + и Р, (0);(7.13)

P3(«,l) = Q,(«) + (l-«)Po(l) + "Pi(l)-(7-14)

Если P3(u,v) удовлетворяет поставленным требованиям к граничным кривым, правые два слагаемых в уравнениях (7.11)-(7.14) должны быть равны нулю. Заметьте, что эти слагаемые представляют собой интерполяцию конечных точек соответствующих граничных кривых. Другими словами, слагаемые, которые должны быть равны нулю, описывают границы билинейной поверхности. Следовательно, правильное выражение для лоскута Куна получается вычитанием уравнения билинейной поверхности из P3(u,v):

P(u,v) = (1 -и)Р0(о) + uPt(v) + (1 -v)Q0(u) + vQt (u)-(l-u)(\-v)P„ - (7 l5) -u(\-v)Pl0-(\-u)vP0A-uvPu (0<u<i, 0uv<l).

Здесь P0.o=Po(0)=Qo(0),P,.o =Qo(l)=P.(0),Po., =P0(l)=Q.(0).p... =P,0)=Q.(1)-

Благодаря простоте концепции и уравнений лоскут Куна использовался достаточно широко. Однако он непригоден для точного моделирования поверхностей, поскольку форма поверхности не может задаваться одними лишь ее границами.


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

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

P(u,v) = X J a,vuV (0 < u < 1, 0 < v < 1).(7.16)

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

P(u,v) = [l и и

"00 "01

а,0 о.

"02"03

«12«13

20 21 2223

ЯЧ5

?33

2

В

3

(7.17)

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

Первый набор граничных условий мы получим, потребовав, чтобы четыре граничные точки Р(0,0),Р(0,Г),Р(1,0),Р(1,Г) удовлетворяли уравнению (7.17). Чтобы получить второй набор граничных условий, мы зададим векторы касательных к граничным кривым поверхности в угловых точках по параметрам иикР, (0,0), Рн(0,1), Ри(1,0), Рв(1,1) и РД0.0), Рц(0,1), РД1.0), РД1.1). Перечисленные граничные условия определяют форму граничных кривых поверхности, поскольку они определяют конечные точки этих кривых и векторы касательных в этих точках. Через заданные граничные кривые можно провести бесконечно много поверхностей, поэтому нам придется добавить граничные условия, которые определяли бы форму внутренней области поверхности. Мы потребуем, чтобы вторая производная в угловых точках имела определенные значения Риг,(0,0), Рив(0,1), Рк!,(1,0), PO.l). Под второй производной мы понимаем следующее выражение, называемое вектором кручения (twist vector):

d2P(u,v)

ди dv

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

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

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

P(u,v)-

I I

= [F[(u) F2(u) Fa(u) Ft(u)]

F2(v)

ад

(7.18)

(7.19)

P(0.0) P(0,1) P,.(0,0) P„(0,1) P(1,0) P(l,l) РД1.0) РД1.1) P„(0,0) P.(1,0) P„„(0,0) PM.(0,1) P„(1,0) P„(l,l) P„(1,0) PM,(1,1)

(0<w <1,0<в<1), где функции сопряжения Ft, F2, F3 и F4 определяются следующим образом:

F,(u) = 1-3m2 +2ы3; F2(u) = 3u2 -2u3; F3(u) = u-2u2 +u3; РЛ(и) = -и2 +u3.

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

РИД)

Р(о,оугP(i,o)

Рис. 7.3. Изопараметрическая кривая v = v0

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



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13] [стр.14] [стр.15] [стр.16] [стр.17] [стр.18] [стр.19] [стр.20] [стр.21] [стр.22] [стр.23] [стр.24] [стр.25] [стр.26] [стр.27] [стр.28] [стр.29] [стр.30] [стр.31] [стр.32] [стр.33] [стр.34] [стр.35] [стр.36] [стр.37] [стр.38] [стр.39] [стр.40] [стр.41] [стр.42] [стр.43] [стр.44] [стр.45] [стр.46] [стр.47] [стр.48] [стр.49] [стр.50] [стр.51] [стр.52] [стр.53] [стр.54] [стр.55] [стр.56] [стр.57] [стр.58] [стр.59] [стр.60] [стр.61] [стр.62] [стр.63] [стр.64] [стр.65] [стр.66] [стр.67] [стр.68] [стр.69] [стр.70] [стр.71] [стр.72] [стр.73] [стр.74] [стр.75] [стр.76] [стр.77] [стр.78] [стр.79] [стр.80] [стр.81] [стр.82] [стр.83] [стр.84] [стр.85] [стр.86] [стр.87] [стр.88] [стр.89] [стр.90] [стр.91] [стр.92] [стр.93] [стр.94] [стр.95] [стр.96]