книги / Основы САПР. CAD CAM CAE
.pdf7.6. В-сплайновая поверхность |
213 |
7.6. В-сплайновая поверхность
Подобно тому как от уравнения кривой Безье мы перешли к уравнению поверх
ности Безье, мы можем перейти и от уравнения В-сплайна к уравнению В-сплю1:
новой поверхности:
11 т |
|
P(и,v)='L'LP;.JN;,k(и)NJ,I(v) (sk-t ~U~S11+1 ,t1_1 ~tт+1 ), |
(7.32) |
i=O j=O
где P;,j- задающие точки, расположенные в вершинах задающего многогранни ка, как и для поверхности Безье, а N;,k(u) и ~,~(v) - функции сопряжения, ис
пользуемые для построения В-сплайнов. Эти функции сопряжения определяют
ся узловыми значениями s0, s1, ... , sn+k и t0, t1, ... , t1+m соответственно. Диапазоны параметров используются в определении В-сплайна, поскольку функции сопря
жения N;,k(и) и ~,1(v) определены только на этих интервалах, что уже демонст
рировалось в главе 6. Это верно как для периодических узлов, так и для непе
риодических. Мы будем рассматривать тольконепериодические узлы по тем же
причинам, что и раньше. В этом случае функции сопряжения В-сплайна будут
совпадать с функциями сопряжения поверхности Безье, если k =n + 1, l =т+ 1.
Поэтому можно утверждать, что поверхность Безье является лишь частным слу чаем В-сплайновой поверхности, а уравнение (7.32) описывает как поверхности
Безье, так и В-сплайновые. Чаще всего порядки k и l принимаются равными 4,
поскольку степени уравнений, описывающих поверхности, не должны превы
шать 3.
В-сплайновая поверхностьснепериодическими узлами обладает свойствами, на
поминающими поверхность Безье (например, четыре угла задающего многогран
ника лежат на поверхности, а граничные кривые представляют собой В-сплайны,
определяемые соответствующими подмножествами задающих точек). Покажем, что значению параметра и = О соответствует граничная кривая, являющаяся В
сплайном. Подстановка и= О в уравнение (7.32) дает1
(7.33)
В соответствии с формулой (7.33), граничная кривая при и= О является В-сплай
ном с задающими точками Р0.о, Р0,1, ... , Po,rn· Аналогичным образом можно пока
зать, что и остальные граничные кривые являются В-сплайнами, а их задающие
точки являются краiiннми вершинами задающего многогранника.
7.6.1. Вычисление В-сплайновой поверхности
Координаты х, у и z точки на В-сплайновой поверхности, определяемой значе
ниями параметров и =u0, v =v0, вычисляются по формуле
11 т |
|
P(u 0 ,v0 ) = L ,LP;.jNi.k(и0 )Nj.l(и0 ). |
(7.34) |
i=O j =0
Выражение (7.34) можно переписать, раскрыв суммирование по i:
1 При uыводе (7.33) испо;tьзовался тот факт, что [L;=0 P;N;,k(u)Ju=O =Ро.
7.7. Поверхность NURBS |
215 |
Выражение (7.39) мы вычислим также при помощи алгоритма Кокса-де Бура
по задающим точкам Cj и узловым значениям v.
7.7. Поверхность NURBS
Перейдя к однородным координатам задающих точек, из уравнения В-сплайна
мы получили уравнение NURВS-кривой. Точно так же уравнение поверхности NURBS получается из В-сплайновой поверхности:
1/ |
т |
|
|
|
|
|
"'"' h . .Р. .N.k(u)N. |
1(v) |
|
|
|||
~ ~ |
1,) 1,) '· |
), |
|
|
|
|
P(u v) = i=O j=o |
|
( |
sk-1 |
~u~sn+l•tl-1 ~v~tm+l), (7.40) |
||
' |
1/ |
т |
|
|
L Lh~jN;,k(u)Nj.l(v)
i=O j=O
где P;j - векторы задающих точек с компонентами х, у и z, а h;j - однородные координаты задающих точек. Обратите внимание, что узловые значения и диа
пазоны значений параметров совпадают с указанными в формуле (7.32).
Уравнение (7.40) становится уравнением В-сплайновой поверхности при h;j = 1. Покажите самостоятельно, что при h;j = 1 знаменатель (7.40) тождественно равен
единице. Следовательно, уравнение В-сплайновой поверхности является част
ным случаем уравнения NURВS-поверхности. Поверхность NURBS к тому же
позволяет точно описать квадратичные поверхности, такие как цилиндр, конус,
сфера, параболоид и гиперболоид. Эти поверхности называются квадратичными, потому что их уравнения имеют степень 2 по и и v. Уравнение NURВS-поверх
ности часто используется для внутреннего представления. квадратичных поверх
ностей в системах геометрического моделирования.
Проиллюстрируем использование уравнений NURВS-поверхности в системах объемного моделирования на нескольких примерах. Первый пример: поверх
ность, полученная трансляцией кривой (рис. 7.6). Предположим, что трансли руемая кривая задана NURВS-уравнением. Это предположение не накладывает
никаких ограничений, поскольку уравнение любой кривой из рассмотренных нами может быть преобразовано к форме NURBS. Пусть порядок этой кривой/,
узловые значения t" (р =О, 1, ..., т+/), задающие точки Pj (т+ 1 штук).
(7.41)
Граничная кривая поверхности NURBS представляет собой NURВS-кривую с
соответствующими задающими точками, которые являются крайними вершинами задающего многогранника поверхности. Порядок и узловые значения граничной
кривой совпадают с теми же характеристиками поверхности в соответствующем
направлении. Мы уже показали, что этим свойством обладают В-сплайновые по
верхности. Следовательно, задающие точки, порядок и узловые значения поверх
ности в одном из направлений, совпадающем с направлением изменения пара
метра кривой, получаются из характеристик транслируемой кривой, поскольку она является одной из граничных кривых. В частности, задающими точками на
216 |
Глава 7. Представление поверхностей и работа с ними |
|
|
|
|
одном из краев поверхности буДут точки Pi (рис. 7.6). Далее, порядок поверхно
сти в направлении v будет равен /, а узловые значения будут равны tP (если на
правления параметров выбрать так, как показано на рис. 7.6).
Рис. 7.6. Поверхность трансляции
Однако нам нужна информация о характеристиках поверхности в направле
нии и. Предполагается, что направление и совпадает с направлением трансляции
(рис. 7.6), а значит, в этом направлении достаточно линейного уравнения. Сле
довательно, порядок NURВS-кривой в этом направлении будет равен 2 и задаю щих точек тоже будет две. Узловые значения в направлении и будут равны О, О, 1, 1, а наборов узловых точек будет два. Один набор, как уже отмечалось, получа
ется из Pi, а второй набор получается трансляцией Pj на расстояние d в направ
лении трансляции. Однородные координаты для обоих наборов будут совпадать с hi транслируемой кривой. Итак, координаты х, у и z задающих точек P;,j и одно родные координаты h;j описываются следующими выражениями:
Po.j =Pj;
P 1.j |
= Pj |
+ da; |
(7.42) |
h0 . |
= h1 . |
= h., |
|
.) |
.J |
J |
|
где d- расстояние трансляции, а а - |
единичный вектор в направлении трансля |
ции.
Уравнение NURВS-поверхности может быть записано так, как показано ниже. Вычисление осуществляется подстановкой нужных значений параметров:
1 т |
1(v) |
|
|
|
|
|
"""" h. .Р. .N. 2(и)N. |
|
|
|
|
|
|
~ ~ 1,} 1,) '· ). |
|
|
|
1 |
) |
|
- ;.о j ~о |
|
(О |
~и ~ |
(7.43) |
||
р(и,V) - --=--т-------- |
|
, tl-l ~ V ~ tm+l |
. |
1
L L;h;,jN;.2(и)Nj,t(v)
i•O j20
Обратите внимание, что ~;(v) в уравнении (7.43) определяется узловыми значе
ниями tp.
NURВS-уравнение (7.43) может использоваться для представления любой по
верхности, полученной трансляцией кривой. Например, это NURВS-уравнение
может быть применено для описания цилиндрической поверхности, полученной
трансляцией полуокружности, лежащей в плоскости ху, вдоль оси z (рис. 7.7).
Сначала нам нужно задать NURВS-представление полуокружности. Воспользу-
7.7. Пов.ерхность NURBS |
217 |
емся результатами примера 6.6. Задающие точки будут иметь следующие коор
динаты:
Р0 |
= (1,0,0), |
h0 |
= 1; |
|
Р1 |
|
= (1, 1,0), |
h1 |
1 |
|
= .J2; |
|||
Р2 |
=(0,1,0), |
h2 |
=1; |
|
Р3 |
=(-1,1,0), |
h3 |
1 |
|
= .fi; |
||||
р4 |
=(-1,0,0), |
h4 |
= 1. |
порядок кривой должен быть равен 3, а ее узловые значения равны О, О, О, 1, 1, 2, 2. 2. Координаты задающих точек цилиндрической поверхности будут такими:
|
Р0,0 |
=Р0 , |
Р1,0 |
=Р0 |
+Hk, h0,0 |
=h1,0 |
=1; |
|
|
Р0,1 |
= Рр Рц |
= Р1 |
+ Hk, |
h0,1 |
= hц |
1 |
|
|
= .fi; |
|||||||
|
Ро.2 |
= р2' |
pl.2 |
= р2 |
+ Hk, |
ho,2 |
= h\,2 |
= 1; |
|
Ро.з |
= Рз' |
Р~,з |
= Рз + Hk, |
hо.з |
= h,:J |
1 |
|
|
= .fi; |
|||||||
|
Ро.4 |
= Р4' |
Р,,4 |
= Р4 |
+ Hk, |
ho,4 |
= h,,4 |
= 1, |
где Р0.о, |
Р0,1, ·~0•2, Р0,3 и Р0.4 обозначают задающие точки нижней дуги, а Р1.0, Р1.1, |
|||||||
Р1,2, Р1,3 |
и Р1,4 - задающие точки верхней дуги; k- единичный вектор в направ |
лении оси z. NURВS-уравнение цилиндрической поверхности получается под
становкой P;j и h;j в уравнение (7.43) с учетом того, что l = 3 и т= 4. Узловые
значения в направлении v равны О, О, О, 1, 1, 2, 2, 2, а в направлении и они равны
О, О, 1, 1.
Рис. 7.7. Трансляция полуокружности
Рассмотрим другой пример - поверхность вращения. Пусть вращаемая кривая
лежит в плоскости xz, ось вращения совпадает с осью z, а направление кривоii
совпадает с направлением параметра v создаваемой поверхности (рис. 7.8).
Предположим, что мы имеем дело с NURВS-кривой порядка l с узловыми значе-
7.8. Интерполяционная поверхность |
|
|
|
|
219 |
в т |
|
|
|
|
|
"""" h. .Р. .N. |
3 |
(u)N. |
1(v) |
|
|
L.." L.." 1,) 1.) |
1, |
|
;. |
|
|
_ i=Oj=O |
|
|
|
|
(7.44) |
р(u,v ) ---;;8- , . -------- |
L L h;.iN;.з(u)Ni.l(v)
i=O j=O
Обратите внимание, что порядок поверхности в направлении и равен 3, потому
что степени 2 достаточно для представления окружности. Узловые значения ~.1 получаются из NURВS-представления вращаемой кривой, а узловые значения
N;.з следуют из узловых значений представления полуокружности: О, О, О, 1, 1, 2,
2, 3, 3, 4, 4, 4.
Чтобы вычислить координаты х, у и z точки на NURВS-поверхности, мы должны
подставить соответствующие ей значения параметров и = u0 и v = v0 в уравне
ние (7.44). Тогда мы сможем заметить,что числитель и знаменатель в этом выра
жении имеют тот же вид, что и в уравнении В-сплайновой поверхности. Поэтому мы можем воспользоваться методом для вычисления В-сплайновых поверхно
стей, правда, с небольшим изменением для учета однородных координат: при
вычислении числителя h;,jPi.j подставляется вместо P;,j• а при вычислении знаме
нателя h;,j подставляется вместо P;.j·
Кроме того, можно вычислить производные NURВS-поверхности, применив мето
дЬI, использованные для вычисления В-сплайновой поверхности и ее производных. Проверку этого утверждения предоставляем читателю в качестве упражнения.
7.8. Интерполяционная поверхность
Мы уже рассматривали проблему создания кривой, проходящей через заданные точки, - интерполяционной кривой. Часто возникает необходимость построе
ния поверхности, проходящей через заданные точки. Особенно часто это требу
ется при создании геометрической модели по существующей физической. Суще
ствует множество методов интерполяции точек данных; эти методы основаны на
различных уравнениях интерполяционных поверхностей. В этом разделе мы вы
ведем уравнение В-сплайновой поверхности, проходящей через заданные точки.
Обозначим точки ~•.q (р =О, 1, ..., n; q =О, 1, ..., т) в соответствии с рис. 7.9. По
скольку эти точки накладывают ( n + 1) х (т+ 1) ограничений, можно выбрать лю
бую В-сплайновую поверхность с числом задающих точек не менее
(n + 1) х (т+ 1). Для простоты мы рассмотрим В-сплайновую поверхность, число
задающих точек которой в точности равно указанному произведению.
n |
т |
(7.45) |
P(u,v) = L |
LPi.iN;.k(u)Ni.l(v), |
i=O j=O
где P;,j- задающие точки. Пусть каждой заданной точке Qp.q соответствуют зна
чения параметров uP и Vq 1, тогда
(7.46)
1Значение u1, может быть получено методом, описанным о разделе 6.7.2 из узловых значе
ний, определенных о процессе интерполяции точек Qo.q• Qt.ч• ..., Qп.q В-сплайном. Точно
так же и l'q получается из узловых значений после интерполяции Q.,.o. Qp.t• ..., Qp.m·
220 Глава 7. Представление поверхностей и работа с ними
Можно переписать выражение (7.46), обозначив 'L7=0P;,jNj.l(vч )символом C;(Vq):
|
|
|
n |
(7.47) |
||
|
Q".ч = 'LC;(vч)N;,k(up). |
|||||
|
|
|
i=O |
|
||
Qo.m |
• |
|
|
Qп.т |
|
|
• |
|
|
• |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Qp,q |
|
|
Qo.t• |
|
|
|
|
|
|
|
• |
|
|
• |
|
|
|
|
|
|
|||
|
Qt,O |
|
|
Q,;,o |
|
|
Рис. 7.9. Интерполяция заданных точек |
|
|||||
Подсталовка значений q = О...т в выражение (7.47) дает |
|
|||||
|
Q".o |
" |
|
|
|
|
|
= LC;(v0 )N;,k(up ); |
|
||||
|
|
|
i=O |
|
||
|
Q,,,1 |
n |
|
|||
|
= 'LC;(v1 )N;,k(up); |
(7.48) |
||||
|
|
|
i=O |
|||
|
|
|
|
|||
|
Q",m |
" |
|
|
|
|
|
= LC;(Vm )N;,k(u 1, ); |
|
i=O
Подставив значения р = O...n в первую строку выражения (7.48), мы получим за дающие точки C;(v0) (i =О, 1, ..., n) В-сплайна, интерполирующего точки Qo,0, Q1.0, ~.о...., Q",0, - первой горизонтальной кривой на рис. 7.10. Аналогично, C;(v1) (i =О, 1, ... , n) -задающие точки В-сплайна, интерполируJQщего точки Qo.1• Q1,1, ~.1.... , (1,,1, - второй горизонтальной кривой на том же рисунке, и т. д. Эти за дающие точки интерполяционного В-сплайна получаются методом, описанным в
разделе 6.7.2.
Теперь вычислим задающие точки P;j по C;(vq) (q = О, 1, ..., m). Для этого заnи
шем определение C;(vq) еще раз:
(7.49)
Если теперь подставить значения q = О...т в формулу (7.49), мы обнаружим, что
P;j - задающие точки В-сплайна, интерполирующего точки C;(v0 ), C;(v1), С;(vт). В частности, точки Poj- это задающие точки В-сплайна, интерполирую
щего C0(v0), C0(v 1), ... , С0(vт), крайние слева точки на рис. 7.10.
Приведем краткое ОП}'IСание процедуры вывода значений Р;,;:
О заданные точкн интерполируются В-сплайном в одном направлении
(рис. 7.10);
Озадающие точки В-сплайнов, полученных на первом этапе, интерполируются n поперечном направлении: берутся i-e задающие точки всех В-сплайнов из