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

Компьютерная геометрия и графика

..pdf
Скачиваний:
10
Добавлен:
05.02.2023
Размер:
634.52 Кб
Скачать

91

Z

B

C

 

e3

 

Φ

 

Θ

e

e2

 

1

A

D

X

Y

Рисунок 5.2

Можно записать векторное уравнение для сферической поверхности:

S = (cosΘ sin Φ)e1 + (sin Θ cosΦ)e2 + cosΦ e3 ,

где e1,e2 ,e3 - единичные векторы в прямоугольной системе координат; s - вектор положения точки на поверхности.

Поверхность, изображенная на рисунке 5.2, характеризуется следующим изменением параметров (углов Θ и Φ ):

0 ≤ Θ ≤π 2 π4 ≤ Φ ≤π2 .

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

Для участка сферической поверхности касательные векторы получаются:

 

dS

 

= −sin Θ sin Φe + cosΘ cosΦe

 

 

 

 

 

dΘ

1

 

 

2

 

 

 

 

 

 

.

 

dS

 

 

 

 

 

 

= −cosΘ cosΦe

= sin Θ cosΦe

sin Φe

 

 

 

dΦ

1

 

 

2

3

 

 

 

 

 

 

Тогда в граничных точках:

 

 

 

Α: (Θ = 0;Φ =π 2)

 

 

dS

= e ;

 

 

 

 

dΘ

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

92

 

dS

= −e

 

 

 

 

 

 

 

 

dΦ

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Β: (Θ = 0;Φ =π 4)

 

 

dS

=

1

e ;

 

 

dΘ

 

 

 

 

 

 

 

2

 

2

 

dS

=

1

 

(e e );

 

 

 

dΦ

2

 

 

 

 

 

 

1

3

 

 

 

C : (Θ =π 2;Φ =π 4)

 

dS

= −

1

e ;

 

dΘ

 

 

 

 

 

 

2

1

 

dS

=

1

(e

e );

 

 

 

dΦ

 

 

 

 

 

2

 

 

2

3

 

 

 

D : (Θ =π 2;Φ =π 2)

 

dS

= −e ;

 

 

 

dΘ

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

dS = −e . dΦ 3

Вектора кривизны описываются смешанными производными

 

2S

=

 

2S

= −sin Θ cosΦ e + cosΘ cosΦ e .

 

∂Θ∂Φ

 

∂Φ∂Θ

 

 

 

 

 

1

2

 

 

 

 

 

 

 

 

В угловых точках имеем:

 

 

 

 

 

0

 

â

À

 

 

2S

 

 

2e2

 

Β

 

 

=

1

â

 

 

 

 

 

 

 

.

 

 

∂Θ∂Φ

 

 

 

 

 

 

1

 

2e1

â

Ñ

 

 

 

 

 

0

 

â

D

 

 

 

 

 

 

 

Для указания формы и ориентации участка поверхности можно использовать нормаль к поверхности. Нормали задаются векторным смешанным произведением двух касательных векторов. Для сферического участка имеем:

 

S dS

 

e1

 

 

 

Ν =

 

 

 

= det

sin Θsin Φ

dΘ dΦ

Θ Φ

cos cos

e2

e3

 

cosΘsin Φ

0

.

sin ΘcosΦ

 

 

sin Φ

В угловых точках получим следующие вектора нормалей:

93

 

e1 e2

e3

 

 

Α: Ν = det

 

0

1

0

 

= −e ,

 

 

 

 

 

 

1

 

 

 

0

1

 

 

 

0

 

 

Β: Ν = −1 (e1 + e2 ), 2

C : Ν = −1 (e2 + e3 ), 2

D : Ν = −e2 .

Единичная нормаль определяется величиной n = Ν Ν .Раскрывая

матричное выражение для Ν , получим:

Ν = −cosΘsin2 Φe1 sin Θsin2 Φe2 sin ΦcosΦe3 .

То есть

Ν = cos2 Θsin4 Φ −sin2 Θsin4 Φ −sin2 Φcos2 Φ = sin Φ .

Таким образом

n = −cosΘsin Φe1 sin Θsin Φe2 cosΦe3 .

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

аналитическое описание (неявное и параметрическое);

описание участка с помощью четырех граничных кривых;

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

нормали к поверхности.

Рассмотрим теперь примеры более сложных поверхностей. Для этого сделаем ряд предварительных замечаний.

1.Будем использовать параметрическое представление поверхностей.

2.Будем использовать следующее описание:

Q(u,w) =[x(u, w), y(u,w), z(u, w)] – векторная функция, описывающая

положение точки на поверхности. Любая точка на поверхности может быть

94

получена фиксацией u и w, то есть Q(u,w). Фиксация одного из параметров Q(u,w) даст описание кривой на поверхности;

P – векторная функция, описывающая входные данные поверхности (точки, кривые и так далее);

Q – векторная функция, описывающая конструируемую поверхность,

соответствующую входным данным, то есть P и Q совпадают только в заданных точках.

5.2БИЛИНЕЙНЫЕ ПОВЕРХНОСТИ

Это один из простейших видов поверхностей. Предположим, что четыре угловые точки поверхности заданы на плоскости u,w вершинами единичного

квадрата P(0,0), P(0,1), P(1,0), P(1,1). Необходимо, построить поверхность

Q(u,w)(u,w[0;1]) , на которой любая точка может быть получена путем линейной интерпретации. Получим следующую функцию:

 

Q(u,w) = P(0,0)(1u)(1w) + P(0,1)(1u) + P(1,0)u(1w)w + P(1,1)uw

или

Q(u,w) =[1u

u]

P(0,0)

P(0,1) 1w

 

 

 

,

 

 

 

 

P(1,0)

P(1,1)

w

 

или Q(u,w) =UP,

 

 

 

 

 

где

U =[(1u)(1w)

(1u)w

u(1w)

uw];

 

 

P =[P(0,0)

P(0,1) P(1,0) P(1,1)] .

 

 

 

Здесь легко проверить, что Q(0,0) = P(0,0)

и так далее. Точка в центре

поверхности

 

 

(u = w = 0.5)

получится

Q(0.5;0.5) = 14 (P(0,0) + P(0,1) + P(1,0) + P(1,1)).

 

95

 

Z

 

w = const = 0.5

P(1,0)

P(1,1)

 

Q(0.5,0.5)

 

u = const = 0.5

 

P(0,0)

X

P(0,1)

Y

Рисунок 5.3

5.3ЛИНЕЙЧАТЫЕ ПОВЕРХНОСТИ

Линейчатые поверхности часто применяют в авиационной и кораблестроительной промышленности. Строятся они следующим образом. Предполагаются, что известны две граничные кривые. Допустим, что это P(u,0) и P(u,1) . Эти кривые могут быть заданы любым из способов, которые мы рассматривали в разделе «Пространственные кривые». Линейчатая поверхность в этом случае получается с помощью линейной интерполяции между этими кривыми.

Q(u,w) = P(u,0)(1w) + P(u,1)w

Здесь Q(0,0) = P(0,0)

Q(0,1) = P(0,1)

Q(1,0) = P(1,0) .

Q(1,1) = P(1,1)

96

 

Z

 

P(ui,0)

 

P(u,0)

 

P(ui,1)

Y

 

P(u,1)

 

X

 

Рисунок 5.4

 

Кроме того, края конструируемой поверхности совпадают с заданными кривыми, то есть Q(u,0) = P(u,0)èQ(u,1) = P(u,1) .

Аналогично можно рассмотреть случай, когда известны P(0, w) и P(1,w) :

Q(u,w) = P(0,w)(1u) + P(1, w)u .

5.4ЛИНЕЙНЫЕ ПОВЕРХНОСТИ КУНСА

Логика получения этих поверхностей следующая. Пусть известны четыре граничные кривые P(u,0), P(u,1), P(0, w), P(0, w). Линейная поверхность Кунса получается суммированием координат точек линейчатых поверхностей между кривыми P(u,0), P(u,1), P(0, w), P(1, w). Однако при этом границы полученной поверхности не будет совпадать с заданными граничными кривыми:

Q(u,w) = P(u,0)(1w) + P(u,1)w + P(0,w)(1u) + P(1, w)u;

Q(0,0) = P(0,0) + P(0,0);

Q(0, w) = P(0,0)(1w) + P(0,1)w + P(0,w).

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

Правильный результат дает следующее уравнение поверхности:

97

Q(u,w) = P(u,0)(1− w) + P(u,1)w + P(0, w)(1− u) + P(1,w)u P(0,0)(1− u)(1− w) −

P(0,1)(1− u)w P(1,0)u(1− w) − P(1,1)uw.

P(0,1)

 

P(0,w)

P(u,1)

 

 

 

 

P(0,0)

Q(0.5,w)

Q(0.5,0.5)

P(1,1)

 

 

 

 

 

Q(u,0.5)

P(u,0)

P(1,w)

 

P(1,0)

Рисунок 5.5 В матричной форме это уравнение имеет вид:

 

P(0, w)

 

 

 

1− w

Q(u,w) = [1− u u]

+ [P(u,0)

P(u,1)]

 

 

P(1, w)

 

 

 

 

w

 

P(0,0)

P(0,1)

1− w

 

 

 

 

[1− u u]

P(1,1)

 

 

,

 

 

 

P(1,0)

 

w

 

 

 

 

или в более компактной форме

P(0,0)

O(u,w) = [1− u u 1] P(1,0)

P(u,0)

P(0,1)

P(0, w) 1− w

P(1,1)

 

 

 

P(1, w)

w

.

P(u,1)

 

1

 

0

 

Функции 1− u,u,1− w,w называются весовыми функциями.

5.5 УЧАСТОК БИКУБИЧЕСКОЙ ПОВЕРХНОСТИ Бикубическую поверхность можно рассматривать как частный случай

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

кубические сплайновые

сегменты, то

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

P(u,0), P(u,1), P(0,w), P(1,w)

используются

параметрические многочлены

третьего порядка. Вспомним этот вид:

 

uawb

98

P(t) = B1 + B2t + B3t2 + B4t3

Ограничим изменение параметра t: 0 t 1, то есть будем использовать нормализованный многочлен. Мы уже записывали уравнение для коэффициентов Bi в этом случае:

или

где

B

 

 

2

2

1

1

P(0)

 

4

 

 

 

 

 

 

 

 

B3

= 3

3

2

1 P(1)

.

B

 

 

0

0

1

0

P(0)

2

 

 

 

0

0

0

 

 

B1

1

P(1)

 

Подставим значения Bi в выражение для P(t) и сгруппируем члены:

P(t) = P(0) + P(0)t 3P(0)t2 + 3P(0)t2 2P(0)t P(1)t2 + 2P(0)t3 − −2P(1)t3 + P(0)t3 + P(1)t3 = P(0)(1 3t2 = 2t2 ) + P(1)(3t2 2t3 ) − −P(0)(t 2t2 + t3 ) + P(1)(t2 + t3 )

P(t) = F1(t)P(0) + F2 (t)P(1) + F3 (t)P(0) + F4 (t)P(1),

 

 

 

 

 

 

 

 

 

 

 

 

2

2

1

1

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

[F1(t) F2 (t) F3 (t) F4

(t)] =

t

3

t

2

3 3

1

.

 

 

 

t 1

 

 

 

 

 

 

 

 

 

 

 

 

0

0

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

0

0

0

 

Используем полученные результаты для построения бикубического участка. Сделаем это также, как мы строили линейную поверхность Кунса. Сначала построим линейчатую поверхность, удовлетворяющую кривым P(u,0), P(u,1) , а затем объединим эти результаты, то есть просуммируем и вычтем угловые точки с соответствующими весами. Для удобства введем систему обозначений для произвольных от вектора положения.

Ρa,b (u,w) = a+bΡ(u, w)

и

Ρa,b (u

, w

) =

a+bΡ(u,w)

 

u = ui

 

uawb

 

w = wj

 

i

j

 

 

 

 

 

 

 

 

 

99

Например,

Ρ1,1(u

, w ) =

2Ρ(u, w)

 

u = ui

.

 

uw

 

w = wj

i

j

 

 

 

 

 

 

 

 

 

 

 

 

Тогда линейчатая поверхность между кривыми P(0, w) и P(1,w)

получится:

Q(u,w) = P(0,w)(1− 3u2 + 2u3 ) + P(1,w)(3u2 − 2u3 ) −

P0,1(0, w)(u − 2u2 u3 ) + P0,1(1, w)(−u2 + u3 ),

а между кривымиP(u,0) и P(u,1) :

Q(u,w) = P(u,0)(1− 3w2 + 2w3 ) + P(w,1)(3w2 − 2w3 ) −

P0,1(u,0)(w − 2w2 w3 ) + P0,1(u,1)(−w2 + w3 ).

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

Q(u,w) = [F1(u) F2 (u) F3 (u) F 4(u)]

P(0,0)

P(0,1)

P0,1(0,0)

P0,1(0,1)

F

P(0,1)

 

 

 

 

1

P(1,1)

P0,1(1,0)

P0,1(1,1)

F2

P1,0 (0,0)

P1,0 (0,1)

P1,1(0,0)

P1,1(0,1)

 

F

1,0

1,0

1,1

1,1

 

3

P (1,0)

P (1,1)

P (1,0)

P (1,1)

 

F4

(w)

(w) .

(w) (w)

Матрицу P здесь можно рассматривать как матрицу граничных условий. Ее можно подразделить на четыре части:

 

 

óãëî âû å

w касат ельн ы е

 

 

 

.

 

 

 

êî ðäèí àò û

âåêò î ðû

 

P =

 

 

. ............................

 

....................

.

 

u касат ельн ы е

âåêò î ðû

 

 

 

 

.

 

 

 

кривизн ы

 

âåêò î ðà

 

То есть задание участка бикубической поверхности связано с заданием координат угловых точек, а также касательных векторов и векторов кривизны в этих точках. В этом заключается основное неудобство с точки зрения машинной графики – эти исходные данные имеют существенно различные порядки (значения); кроме того, интуитивно очень сложно понять, как повлияет

100

изменение некоторого вектора (касательной или кривизны) на результирующую форму поверхности.

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

– так называемые F – участки. В них принимается, что все векторы кривизны равны 0.

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

5.6ПОВЕРХНОСТИ БЕЗЬЕ

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

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

Q(u, w) = (1− u)

Ρ Ρ Ρ

Ρ21 Ρ22 Ρ23Ρ31 Ρ32 Ρ33Ρ41 Ρ42 Ρ4312 1311

3(1− u)

u 3(1− u)u u

 

 

 

 

 

 

 

Ρ14

 

(1− w)3

 

Ρ24

 

 

w)

2

 

 

3(1

 

w .

Ρ

34

 

3(1

w)w2

Ρ

 

 

 

 

 

 

 

 

w

 

 

 

44

 

3

 

 

 

 

 

В матрице P записаны координаты точек, образующих участок поверхности. При этом самой поверхности принадлежат лишь угловые точки

P11, P14 , P41, P44.

Участок поверхности с характеристическим многогранником 4 4.