Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Основы САПР. CAD CAM CAE

.pdf
Скачиваний:
12
Добавлен:
19.11.2023
Размер:
29.79 Mб
Скачать

Глава 7

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

и работа с ними

Системам геометрического моделирования приходится хранить уравнения кривых

(или эквивалентные характеристические параметры) для всех ребер и уравнения

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

зуются. Мы говорили, что для реализации булевских операций необходимо рас­

считывать точки пересечения кривых. В системах поверхностного моделирова­

ния с той же целью приходится определять кривые, по которым пересекаются

поверхности. Например, если поверхность в процессе моделирования отсеi<ается

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

производных в этих точках. В настоящей главе мы коротко рассмотрим различ­

ные типы уравнений поверхностей и методы работьr с ними: методы вычисления

координат, дифференцирования и обработки пересечений. Все эти вопросы рас­

сматриuаются более подробно в книгах по вычислительной геометрии [9, 49, 48,

129, 72, 112].

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

Уравнения поверхностей, как и уравнения криuых, делятся на два основных типа. К первому типу относятся параметрические уравиеиия, связывающие значения

координат х, у и z со значениями параметра. Ко второму относятся иепарамет­

рические уравиеиия, связывающие координаты х, у .и z непосредственно друг с

другом какой-либо функцией. Поясним эти определения на простом примере.

Рассмотрим сферу радиуса R с центром в начале координат. Параметрическое

уравнение этой сферы будет иметь вид:

P(u,v) = Rcosu cosv i + Rsinи cosv j + Rsinv k;

(7.1)

(О~ и ~ 2n, 1 2 ~ v ~ 1t 1 2),

х2 +у2 +zz -R2 =0

(7.2)

где параметр и может рассматриваться как долгота, а v -

(7.3)

как широта.

Ту же сферу можно описать и без параметров и и v:

 

или

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

203

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

явным иепараметрическим.

У каждого типа уравнений есть свои преимущества и недостатки, но мы бу­

дем рассматривать только параметрические уравнения. Как отмечалось в гла­

ве 6, параметрическое уравнение позволяет эффективно вычислять точки на

поверхности или кривой, отстоящие друг от друга на небольшие расстояния, что облегчает интерактивное отображение объекта и работу с ним. Это одна

из главных причин, по которым параметрические уравнения используются

для представления поверхностей в большинстве систем автоматизированного

проектирования1

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

Билиuейиая поверхиостъ (Ьilinear sшface) строится по четырем заданным точкам

и описывается линейными уравнениями с параметрами и и v. Эти точки ока­

зьшаются в углах построенной поверхности. Мы обозначим их буквами Р0,о, Р1,0, Р0.1, Рц (рис. 7.1). Вывести уравнение билинейной поверхности - это значит

найти выражение для координат произвольной точки по значениям параметров

и и v. Предположим, что эта точка делит отрезок [Р0,,,,Р1,.,] в отношении и:(1 -и) (рис. 7.1). Точки Р0,,, и P1.v делят отрезки Р0.0Р0.1 и Р1.0Р1.1 соответственно в отно­

шении v:(1 - v). Определенная таким образом точка Р(и,r1) будет перемешаться

по всей поверхности при изменении параметров и и v от О до 1. С учетом сделан­ ных предположений координаты точек Р0.,, и Р,,,, запишутся следующим образом:

Po.v = (1-v)Po.u + vP0. 1 ;

(7.4)

P1.v = (1-v)P1.0 + vP1•1 •

(7.5)

Рц

--------п

1- v

и

v

v~~----­

Poo __.

. и

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

1 Кривые, по которым пересекаются поверхности, в некоторых случаях бывает удобно рас­

считьшать, представляя о;щу из этих поверхностей параметрическим уравнением, а дру­

гую - непараметрическим. Поэтому в некоторых снетемах могут использовап.ся и

непараметрические уравнешtя поверхностей, хотя и не как основноlt тип уравнений для

хранения сведений о кривых. В этом случае возникает потребность в 11роцедуре преобра­

зования из параметрической формы в непараметричсскую и обратно. Такое преобразова­ ние рассматривается в работе [69].

204

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

 

 

 

 

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

 

Р(и,v)=(1-и)Р0,v +иР1,,,.

(7.6)

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

Р(и,v) = (1-и)[(1-v)Р0,0 + vP0,1 ] [(1-v)P1.0 + vP~,~] =

Po.o]

(7.7)

Р10

=[(1-и)(1-v) и(1-v) (1-и)v иv]IPo.t·

(0:5:и:5:1,0:5:v:5:1).

Р,,,

 

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

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

линейны по соответствующим параметрам, билинеймая поверхность обычно

оказывается плоской.

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

Сопряжение углов дает билинейную поверхность. Сопряжение граничных кри­

вых произвольной формы дает поверхность, называемую лоскутом. Куна ( Coon 's patch). Слово 4:Лоскут» указывает на то, что описываемая поверхность представ­

ляет собой сегмент, соответствующий значениям параметров О :5: и :5: L О :5: v :5: 1.

Комбинирование лоскутоn позволяет образовать поверхность произвольной

формы и размера.

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

известны уравнения четырех граничных кривых: P 0 (v), Р1 (v), Q0(и) и Q1 (и)

(рис. 7.2). Предположим также, что направление кривых Q0(и) и Q1 (и) совпада­ ет (на рис. 7.2 эти кривые направлены вправо, что обозначено стрелкой). То же

предположение мы выскажем и относительно P 0 (v) и Р1 (v).

v~~

~

 

 

 

'U

Qo(u)

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

Если граничные кривые не удовлетворяют этим требованиям, вам придется вы­

полнить преобразование их к описанному выше виду. Направление и интервал

изменения параметра легко изменить юшерсией или масштабированием [120].

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

205

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

показано ниже.

Выберем две кривые, расположенные друг напротив друга, например P 0 (v) и

Р1 (v). Интерполяция этих кривых в направлении и осуществляется линейным

уравнением

Р1 (и,v) = (1-и)Р0(v)+ иР1 (v).

(7.8)

Поверхность, определенная уравнением (7.8), будет ограничена кривой P 0 (v) при и= О и кривой Р1 (v) при и= 1. Одна'Ко две другие границы будут отрезками пря­

мых, соединяющих угловые точки. Убедиться в этом можно, подставив в уравне­

ние (7.8) v =О или v = 1. Таким образом, полученная поверхность не ограничива­ ется кривыми Q0 (и~Q1 (и).

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

Р2 (и,v) = (1-v)Q0(и) + vQ1(и).

(7.9)

Подставляя граничные значения и и v в уравнение (7.9), можно убедиться, что

новая поверхность ограничивается кривыми Q0 (u) и Q0 (v),

но

не P 0 (v) или

Р1 (v). Попробуем определить еще одну поверхность Р3 (и, v),

сложив Р1 (и, v) и

Р2 (и,v), и проверим, не будет ли она ограничиваться требуемыми кривыми.

Р3 (и,v) = (1-u)P0 (v) + иР1 (v)+ (1-v)Q0(и)+ vQ1 (и).

(7.10)

Подстапоnка граничных значений и и v в (7.10) дает:

 

 

Р3 (O,v) = Р0

(v) + (1-v)Q0 (О)+ vQ1 (О);

 

(7.11)

Р3(1,v) = Р1

(v) + (1-v)Q0 (1) + vQ1(1);

 

(7.12)

Р3 (и,О) = Q0(и) + (1-и)Р0

(0) +и Р1 (О);

 

(7.13)

Р3 (u,1) = Q 1 (и)+ (1-и)Р0

(1) +и Р1 (1).

 

(7.14)

Если Р3(и,v) удовлетворяет поставленным требованиям к граничным кривым,

правыедва слагаемых в уравнениях (7.11)-(7.14) должны быть равны нулю. За­ метьте, что эти слагаемые представляют собой интерполяцию конечных точек

соответствующих граничных кривых. Другими словами, слагаемые, которые

должны быть равны нулю, описывают границы билинейной поверхности. Следо­

вательно, правильное выражение для лоскута Куна получается вычитанием

уравнения билинейной поверхности из P 3 (u,v):

P(u,v) = (1-u)P0 (v)+ иР1 (v)+ (1-v)Q0(и)+ vQ1 (и) -(1-и)(1-v)Р00 -

(7.15)

-и(1-v)Р10 -(1-u)vP0.1 -иvР11 (05-u 5.1, 05.v5.1).

ЗдесЬ Р0.0 =P0 (0)=Q0 (0), Р1=Q0 (1)=P1 (0), Р01 =P0 (1)=Q1 (0), Рц =Р1 (1)=Q1 (1).

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

стей, поскольку форма поверхности не может задаваться одними лишь ее гра­

ницами.

206

Глава 7. Представление nоверхностей и работа с ними

7 .4. &икубический лоскут

Бикубический лоскут (ЬiсиЬiс patch)- это поверхность, определяемая полиноми­

альным уравнением третьего порядка по параметрам и и v:

3 :i

(7.16)

P(и,v)=:L:Laijиivi (О~и~1. O~v~1).

i=O j=O

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

г

QOI

 

 

 

Р(и,v) =(1 и и2 из] aiO

а••

(7.17)

а2о й21

 

йзо

аз•

 

В уравнениях (7.17) a!i -алгебраические вектор1:1ые коэффициенты с компонен­

тами х, у и z. Влияние этих коэффициентов на форму поверхности не является

интуитивно понятным, точно так же, как по алгебраическим коэффициентам

уравнения (6.10) нельзя было представить себе форму кривой. Возникает жела­

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

ентов для поверхности насчитывается 16 штук, нам нужно ввести 16 граничных

условий.

Первый набор граничных условий мы получим, потребовав, чтобы четыре гра­

ничные точки Р(О,О},Р(О,1},Р(1,0),Р(1,1) удовлетворяли уравнению (7.17). Что­

бы получить второй набор граничных условий, мы зададим nекторы касательных

к граничным кривым поверхности в угловых точках по параметрам и и v: Pu(O,O), Pu(0,1}, Pu(1,0), Ри(1,1) и Р,.(О,О}, Pv(0,1), Р,.(1,0), Р,,(1,1). Перечисленные гранич­

ные условия определяют форму граничных кривых поверхности, поскольку они

определяют конечные точки этих кривых и векторы касательных в этих точках.

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

бы форму внутренней области поверхности. Мы потребуем, чтобы вторая произ­

водная n угловых точках имела определенные значения Pu,,(O,O}, Риv(О,1}, Риv(1,0), Р",,(1,1). Под второй производной мы понимаем следующее выражение, называе­

мое вектороАt кручеиил (twist vector):

д2Р(и,v)

дидv

Ниже мы обсудим влияние nекторов кручения в углоnьiх точках на форму внут­

ренней области поверхности.

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

подставляется обратно в уравнение (7.17)1, что дает нам приведеиное ниже урав­

нение бикубического лоскута:

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

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

 

207

Р(и,v) =

 

 

 

Р(О,1)

Р,.(О,О)

Р(1,1)

Р,.(1 ,0)

Р11

(1,0)

Р11,,(0,0)

Р11

(1,1)

Р111,(1,0)

(О~ и~ 1, О~ v ~ 1),

 

 

 

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

F1 (и)= 1-Зи2 + 3 ;

F2(и) = Зи2 -2и3 ;

(7.19)

F3(и) =и -2u 2 3 ;

F4(и)=-uz +из

Это те же функции сопряжения, что и n уравнении эрмитоnой кривоi:i. Вообще говоря, уравнение (7.18) представляет собой попросту расширение уравнения

эрмитовой кривой для описания поверхности. Уравнение (7.18) может быть

редуцировано до уравнения кривой путем подстаноnки конкретного значения

одного из параметров, например v = v0 Произведение последних двух матриц в

правой части уравнения (7.18) дает вектор-столбец. Это умножение может быть

интерпретировано следующим образом. Первая строка дает уравнение левой

граничной кривой между Р(О,О) н Р(О,1), а вторая строка дает уравнение правой

граничной кривой между Р(1,0) и Р(1,1) (рис. 7.3). При подстапоnке конкретно­

го значения v0 первые две строки дают нам I<онечные точки А и В. Последние две

строки столбца для v = v0 задают nекторы касательных в направлении и в точках

А и В. Последнее утверждение мы проверим позже. Следовательно, уравне­

ние (7.18) представляет собой объединение уравнений эрмнтовых кривых, соот­

ветствующих разным значениям v. Граничные кривые, определяемые условиями v =О и v = 1, будут эрмитовыми кривыми. АналогичнЫ!\! образом можно пока­ зать, что и граничные I<риnые для и = О, и = 1 тоже будут эрмитовыми.

\

 

-

Р(О,1)

р 1,1)

 

-

 

 

 

 

 

 

А

 

v+

 

 

 

 

\

 

 

 

 

 

P(O,O)"t"

Р(1,0)

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

При попытке воспользоваться уравнением (7.18) мы столкнемся с проблемой за­

дания векторов кручения, влияние которых на форму поверхности не является

интуитивно понятным. Иногда для простоты нм присnаивают нулевые значения.

Получаемая таким способом поверхность называется лоскутом Фергюсона или

F-лоскутом (Ferguson 's patch или F-patch). Поскольку нулевые nекторы кручения

208

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

делают поверхность более плоской, F-лоскут не может использоваться для моде­

лирования поверхностей с большой кривизной. Однако он хорошо описывает поверхности с нулевой кривизной по крайней мере в одном направлении во всех

точках.

Покажем теперь, как векторы кручения влияют на форму внутренней области поверхности. Если мы сможем показать, что векторы кручения определяют фор­ му изопараметрической кривой .v = v0 на рис. 7.3, мы сможем утверждать, что эти векторы влияют на любую внутреннюю изопараметрическую кривую, а значит, и

на всю внутреннюю область лоскута. Точки А и В определяются граничными

кривыми - эрмитовыми кривыми, которые не зависят от векторов кручения.

Следовательно, мы должны показать, что векторы касательных в точках А и В

определяются векторами кручения. Сделаем это, продифференцировав уравне­

ние (7.18) по параметру и:

дР(и,v) =

 

 

 

 

ди

 

 

 

 

 

 

 

Р(О,1)

Р.,(О,О)

= [df1 (и) df2(и)

dF3(и)

Р(1,1)

Р.,(1,0)

Pu(1,0)

Puv(O,O)

 

 

 

Pu(1,1)

Puv(1,0)

=[-6и+6и2

6и-6и2 1- + Зи 2

-2и+ Зи2]~~:~~~~G3(v) -

 

 

 

 

(7.20)

G 4 (v)

Обратите внимание, что произведение второй и третьей матриц мы записали в

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

рами Pu(O,O), Pu(0,1), Puv(O,O) и Puv(0,1), мы заключаем, что векторы кручения

Puv(O,O) и Puv(0,1) определяют Pu(A).

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

GI

(v0 )]

Ри(В)=[О О О 1] 2 (vo) =

Gз(Vo)

G4 (vo)

(7.21)

7.5. Поверхность Безье

209

Мы показали, что вектор касательной в точке В зависит от векторов кручения

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

форму бикубического лоскута.

7.5. Поверхность Беэье

Можно расширить концепцию кривой Безье, определяемой задающим много­ угольником, на одно измерение, в результате чего получится поверхность Безье,

определяемая задающим многогранником. Уравнение поверхности Безье выгля­

дит следующим образом:

n ",

 

Р(и,v) = L LP;,j B;,"(и)Bj.rп(v) (О~ и ~ 1, О~ v ~ 1),

(7.22)

i=O j=O

где P;,j - радиус-векторы задающих точек, находящихся в вершинах задающего

многогранника (рис. 7.4), а В;," и Bj.rпфункции сопряжения, обычные для кри­

вых Безье. Таким образом, степень уравнения поверхности по и и v определяется

количеством задающих точек в соответствующих направлениях.

Уравнение (7.22) можно раскрыть, записав сумму по j в явном виде:

"

(7.23)

Р(и,v) = L[P;,0 B0,",(v)+P;,1B1,",(v)+ ... +Р;.тВт,т(v)]В;,"(и).

i=O

Уравнение (7.23) иллюстрирует, что поверхность Безье получается сопряжени­

ем n + 1 кривых Безье, каждая из которых определяется задающими точками Р;.о, Р;,1 , Р;.2 , ... , Р;,т, сопрягаемыми функциями В;,"(и). Можно показать, что та же по­ верхность Безье получается при сопряжении т + 1 кривых Безье, определяемых

задающими точками Po.j, Рц, Р2.. , , P".j и функциями Bj.т(v). Итак, поверх­

иость Безье получается, если задающие точки кривой Безье за.меиить кривыми

Безье.

Рис. 7.4. Поверхность Безье с задающим многогранником

Займемся исследованием свойств поверхности Безье. Сначала нужно показать,

что четыре угловые задающие точки задающего многогранника лежат на по-

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

верхиости Безье. Для этого мы подставим граничные значения параметров и и v

в уравнение (7.22). Подстапавка и= О и v =О дает:

Р(О,О)= ta~Pi,jB;,п(O)Bj,m(O)= to[~P;,jBj,m(O)]В;,п(О)=

 

= t[fP;,j(~)vj(1-v)m-j]

В;,11(0)=

 

(7.24)

 

r=O J=O

J

 

 

,..о

 

= t(m)P;,oB;,n(O) =(m)tP;JI(~)и;(1-и)"-;]

и=О

=

r=O

О

О

r=O

~ l

 

 

=(~)Ро.о(~)=Ро,о·

Равенство (7.24) показывает, что задающая точка Р0,0 лежит на поверхности и соответствует значениям параметра и =О, v =О. Та же процедура позволяет про­ верить, лежат ли остальные угловые задающие точки (Pn.O• Po,m• Р11.т) на поверх­

ности.

В дополнение к этому мы можем показать, что граничные кривые поверхности

Безье также являются кривыми Безье, определяемыми соответствующим коли­

чеством задающих точек. Подставим и = О в уравнение (7.22), чтобы получить

уравнение одной из граничных кривых.

 

 

 

P(O,v) = i: fP;,jB;,n(O)Bj,m (v) = f[tP;,j (~)и;(1-иу-;]

 

Bj,m(v) =

i=O j =0

j =0 i=O

l

и=О

(7.25)

rn

= L,P0,jBj,m(v).

j=O

Уравнение (7.25) говорит нам о том, что граничная кривая, соответствующая значению параметра и = О, является кривой Безье с задающими точками Р0,0,

Р0.1, ..., Po.m· Аналогичным образом можно показать, что оставшиеся три гранич­

ные кривые также являются кривыми Безье, а их задающие точки являются

крайними вершинами задающего многогранника. Поскольку вектор касательной на конце кривой Безье определяется соседней с концом задающей точкой, векто­

ры касательных в направлении v в точках Р0,0 и Po,m определяют точки Р0,1 и Po,m-l соответственно. Следовательно, Р0,1 и Po.m-l играют ту же роль, что и

Р,,(О,О) и Pv(0,1) для бикубического лоскута. Если с этой точки зрения подойти

к поверхности Безье степени 3 по и и v (см. рис. 7.4), мо)Кно сделать следующее

утверждение. Задающая точка Р1.0 играет ту же роль, что и Ри (0,0) для бикубиче­ ского лоскута, Р2,0 - ту же, что Pu(1,0), Р1,3 - ту же, что Pu(0,1), Р2,3 - ту же, что Pu(1,1), Ро,1 - ту же, что Pv(O,O), Р02 - ту же, что Р11(0,1), Р3,1 - ту же, что Р,,(1,0), Р32 - ту же, что Pv(1,1). Следовательно, эти восемь задающих точек вместе с че­

тырьмя угловыми задающими точками определяют граничные кривые поверхно­

сти. Оставшиеся четыре задающие точки Рц. Р2.1, Р1.2, Р2,2 определяют форму

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

лоскута.

Мы уже отмечали, что степень поверхности Безье определяется количеством за­

дающих точек. Уравнения поверхностей высоких степеней страдают теми же не-

7.5. Поверхность Безье

211

достатками, что и уравнения кривых высоких степеней, поэтому при молелира­ nании поверхностей обычно используются поверхности Безье степени 3 по и и r;,

точно так же как при моделировании кривых использоnались кривые Безье сте­

пени 3. При необходимости смоделировать сложную поверхность приходится создавать несколько поверхностей Безье третьей степени и соединять их друг с

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

непрерывность на границе, по которой осуществляется соедннение. Это достига­

ется наложением ограничений на задающие точки, расположенные слева и спра­ ва от границы. Ограничение состоит в том, что эти точки должны лежать на пря­

мой линии, проходящей через задюощую точку, лежащую на общей границе (рис. 7.5). Если это требование выполняется, первая производная оказывается непрерывной во всех точках границы [72, 138, 46].

Рис. 7.5. Обьединение лоскутов Безье

7.5.1. Вычисление поверхности Беэье

Координаты х, у и z точки поверхности Безье, соответствующей значениям пара­ метров и = u0 и v = v0 , вычисляются по формуле:

1/ т

 

P(u 1pv0 ) = L L Pi.j В;.~~(u 0 1(v0 ).

(7.26)

i=O j =0

Перепишем уравнение (7.26), раскрыв сумму по i:

" ",

P(u 0 ,r10 ) =L L P;,J В;,"(u 0 1(v0 ) =

i=!l )=0

(7.27)

В уравнении (7.27) сумма I7=0 P 0.1 B;.",(v 0 ) вычисляется при помощи алгоритма

де Кастильо по задающим точкам Р0.1. Алгоритм де Кастильо описан в приложе-

Соседние файлы в папке книги