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

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

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

51

Точки схода в данном случае расположены на оси x [1/ p 0 0 1] и на оси y [0 1/ q 0 1] .

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

Аналогично, трехточечная или косая перспектива получается

 

 

 

 

 

 

1

0

0

p

 

 

 

 

 

 

 

 

 

 

 

 

 

y

z

= [x y z

1]

0

1

0

q

 

= [x y z px + qy + rz +1],

x

h

 

 

 

 

 

 

 

 

 

 

 

0

0

1

r

 

 

 

 

 

 

 

 

0

0

0

1

 

 

 

 

 

 

 

 

 

 

 

x

y

z

 

 

x

 

y

 

z

 

1

=

 

 

 

 

 

 

1 .

 

 

 

 

 

px + qy + rz +1

px + qy + rz +1

 

 

 

 

 

 

 

px + qy + rz +1

 

Точки схода лежат на всех трех осях:

[1/ p 0 0 1],[0 1/ q 0 1],[0 0 1/ r 1].

Пример построить самостоятельно.

При построении перспективных проекций для получения “правильных” (реалистических) изображений часто полезно выполнить ряд предварительных аффинных преобразований поворотов вокруг координатных осей и смещений. При этом может измениться вид перспективы.

Повернем единичный куб вокруг оси y на угол θ и сместим его к точке

[l m

n]

. Затем построим одноточечную перспективную проекцию с центром

в точке k

на оси z на плоскости z =1

 

 

 

 

 

 

 

 

Матрица:

 

 

 

 

 

 

 

 

 

 

 

 

 

cosθ

0

−sinθ

0 1

0

0

 

0

 

cosθ

0

−sinθ

−sinθ / k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

1

0

0 0 1

0

0

 

= 0

 

1

0

0

.

 

 

θ

 

cosθ

 

 

 

 

 

 

 

θ

 

cosθ

cosθ / k

 

sin

0

0 0

0

1

 

1/ k

 

sin

0

 

l

 

m

n

1 0 0

0

1

l

 

m

n

n / k +1

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

 

 

52

точка

Y*

точка

схода

схода

 

X*

Рисунок 2.12

 

При этом линии, которые были параллельны оси

y , остались

параллельны, а линии, которые были параллельны осям x и

z , сходятся в

точках [kctgθ 0] и [ktgθ 0] на оси x .

 

Трехточечная перспектива получается, если предварительно выполнено вращение вокруг двух координатных осей, например на угол θ вокруг оси y и

угол Φ вокруг оси x .

2.8.6 Восстановление трехмерной информации Восстановление трехмерной информации по его проекциям является

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

Проекция произвольного вида на плоскость z = 0 получается с помощью следующего преобразования общего вида:

53

 

T

T

0

T

 

 

 

 

 

 

 

11

12

0

14

 

 

 

 

 

 

[x y z 1]

T21

T22

T24

y

0

(3.8.6.1)

 

 

0

 

 

= x

h .

 

T31

T32

T34

 

 

 

 

 

 

 

T41

T42

0

T44

 

 

 

 

 

 

Аналогично можно записать проекции на плоскость x = 0 и y = 0 . Мы будем рассматривать вопросы восстановления в случае плоскости z = 0 . Остальные случаи, очевидно, легко могут быть рассмотрены по аналогии.

Раскроем уравнение (3.8.6.1):

 

 

 

 

*

;

 

 

 

 

 

 

a) T11x +T21 y +T31z +T41 = hx

 

 

 

 

 

 

 

 

 

 

*

;

 

 

 

 

 

(3.8.6.2)

b) T12 x +T22 y +T32 z +T42 = hy

 

 

 

 

 

 

c) T x +T y +T z +T = h .

 

 

 

 

 

 

 

 

 

14

24

34

44

 

 

 

 

 

 

 

 

Подставим (3.8.6.2) c) в a) и b) :

 

 

 

 

(T

T x ) x +(T

T x ) y +(T

T x ) z +(T

T

x ) = 0;

(3.8.6.3)

11

 

14

21

24

 

 

31

34

41

44

 

(T T y ) x +(T T y ) y +

(T T y ) z +(T T y ) = 0.

 

12

 

14

22

24

 

 

32

34

42

44

 

На систему уравнений (3.8.6.3) можно смотреть с трех точек зрения.

1. Пусть известны x , y , z и матрица T . Найти x* , y* . Это – задача построения проекции, которой мы уже занимались до сих пор. Решение получается непосредственно из уравнения (3.8.6.3).

2. Пусть известны матрица T и координаты x , y . Требуется найти координаты x, y, z . Это задача восстановления трехмерной информации по проекции известного вида. При этом система уравнений (3.8.6.3) не имеет решения (два уравнения с тремя неизвестными). Для получения искомых координат требуется иметь две различные проекции, матрицы которых T и T′′ известны, и, кроме того, известны координаты одной и той же точки пространства на каждой из этих проекций x1, y1 и x2 , y2 . (Пример – две фотографии объекта). Тогда имеем две пары уравнений вида (3.8.6.3), которое в матричном виде можно записать как

54

AX =T , где

 

 

 

 

T

T

 

x

 

11

14

 

1

T

T

y

A =

12

14

 

1

T

T

 

x

 

11

14

 

2

 

 

T14

 

T12

 

 

y2

X =[x

 

y

z]T ;

T21T24x1

T22T24y1

T21T24x2

T22T24y2

T

T x

 

31

34

 

1

 

T

T y

 

32

34

 

1

;

T

T

x

 

31

34

 

2

 

T32

T34

 

 

 

y2

 

B =

 

 

x

 

T

T

y

 

T

T

x

 

T

T

y

 

T

T

.

T

 

 

 

 

 

 

 

 

 

 

 

 

 

 

44

1

41

44

1

42

44

 

 

2

41

44

 

 

2

42

 

Получим систему из 4-х уравнений с тремя неизвестными. Решение этой системы может быть получено только приближенно, методом подбора. Тем не менее, то, что мы получили – это метод восстановления трехмерной информации по двум различным, но известным проекциям.

3.Пусть известны координаты точки в трехмерном пространствеx, y, z и

еекоординаты на проекции x, y . Необходимо определить матрицу T , то есть

вид проекции. Теперь два уравнения (3.8.6.3) содержат 12 неизвестных. Для получения решения нам нужно иметь 6 таких пар уравнений, т.е. знать координаты в пространстве и на проекции – 6 так называемых опорных точек. Имея такую априорную информацию, мы можем восстановить вид проекции, то есть найти элементы матрицы T , и затем использовать этот результат для восстановления трехмерных координат других, не опорных точек, по методу, рассмотренному в предыдущем случае.

В матричной форме система 12 – ти уравнений может быть записана следующим образом:

AT = 0 ,

где

55

x10x2

0x3

A′ = 0x40

x50

x60

T =[T11

0

x x *

 

1

1

x

x y *

1

1

1

0

x x *

 

2

2

x

x y *

2

2

2

0

x x *

 

3

3

x

x y *

3

3

3

0

x

x *

 

4

4

x

x y *

4

4

4

0

x x *

 

5

5

x

x y *

5

5

5

0

x x *

 

6

6

x

x y *

6

6

6

y1 0 0 y1 y2 0 0 y2 y3 0 0 y3 y4 0 0 y4 y5 0 0 y5 y6 0 0 y6

y1x1*

y1 y1*

y2 x2*

y2 y2*

y3 x3*

y3 y3*

y4 x4*

y4 y4*

y5 x5*

y5 y5*

y6 x6*

y6 y6*

z

0

z x *

 

1

 

 

 

1

1

0

z

z y *

 

 

 

1

 

1

1

z

2

0

z

x *

 

 

 

 

2

2

0

z

2

z

2

y *

 

 

 

 

2

z

0

z x *

 

3

 

 

 

3

3

0

z

z y *

 

 

 

3

 

3

3

z

4

0

z

x *

 

 

 

 

4

4

0

z

4

z

4

y *

 

 

 

 

4

z

5

0

z x *

 

 

 

 

5

5

0

z

5

z y *

 

 

 

 

5

5

z

6

0

z

x *

 

 

 

 

6

6

0

z

6

z

6

y *

 

 

 

 

6

T12 T14 T21 T22 T24 T31 T32 T34 T41 T42

1 0

01

10

01

10

01

10

01

10

01

10

01

T44 ]T .

x1*

y1*

x *

2*

y2

x3*

y3* ; x4*

y4* x5*

y *

x5* 6

y6*

56

3ПЛОСКИЕ КРИВЫЕ

3.1МАТЕМАТИЧЕСКОЕ ОПИСАНИЕ ПЛОСКИХ КРИВЫХ

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

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

Основные преимущества следующие:

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

2.оно компактно может быть занесено в память.

3.математическое описание позволяет легко менять форму кривых; результаты преобразования кривых известной матрице T могут быть также представлены в форме математического описания.

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

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

y = f (x),

либо в виде неявной функции f (x, y) = 0.

Задание в виде явной функции имеет один существенный недостаток: этим способом нельзя определить многозначные кривые, то есть такие, в которых одному значению x может соответствовать два и более значения y .

Неявные функции лишены этого недостатка.

57

При параметрическом задании кривой каждая координата точки на кривой представляется как функция одного параметра.

Плоские параметрические кривые с одним параметром представляются в

виде

x = f (t )y = f (t ),

где t – параметр.

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

Для непараметрических функций – это геометрическое место точек плоскости,

удовлетворяющих уравнениям

y = f (x) или f (x, y) = 0. То есть все точки

[x, y], удовлетворяющие этим

уравнениям, принадлежат кривой, и ни одна

точка, координаты которой не удовлетворяют уравнениям, не принадлежит

кривой.

Параметрические кривые интерпретируются как траектория движения некоего точечного объекта. При этом t имеет смысл времени. Положение конкретной точки (то есть в фиксированный момент времени) определяется

( ) ( )

парой f t ; g t .

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

– для явной непараметрической функции:

dy

 

df

 

dy

 

 

=

 

=

f x(x) Y y =

 

( X x) – уравнения касательных

dx

dx

dx

 

 

 

 

– для неявной непараметрической функции:

 

dy

= −

f

x

(из уравнения

f dx +

f dy = 0 ).

 

 

f

y

 

dx

 

x

y

Уравнения касательных:

 

 

 

F ( X x) +

F (Y y) = 0 ;

 

 

 

x

 

 

y

 

 

– для параметрической функции:

58

tgα =

dy

=

dy dt

=

g(t )

 

 

 

;

dx

dx dt

f (t )

Уравнения касательных:

X x = Y y ; xy

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

Конические сечения – это сечения правильного конуса некоторой плоскостью. В зависимости от взаимного расположения секущей плоскости и оси симметрии конуса сечение будет являться кривой, относящейся к следующим четырем типам:

окружность, эллипс, парабола и гипербола.

Все эти кривые относятся к кривым второй степени, то есть могут быть описаны уравнениями второй степени

ax2 +bxy + cy2 + dx + ey + f = 0 ,

(4.1.1.)

где хоть один из a,b,c 0 . Вопрос, о том, какую именно кривую представляет это уравнение, определяется значениями его коэффициентов. Можно показать, что если величина дискриминанта.

D = b2 4ac = 0, то это парабола;

если D < 0 – эллипс или окружность; если D > 0 – гипербола.

3.2ОКРУЖНОСТЬ

Окружность с центром в точке C[m,n] и радиусом r задается уравнением

(x m)2 +( y n)2 = r2 .

Раскрывая скобки, приведем его к виду (4.1.1):

x2 + y2 2mx 2ny + m2 + n2 r2 = 0

или

59

x2 + y2 + dx + ey + f = 0

где

d = −2m, e = −2n, f = m2 + n2 r2 .

Таким образом, уравнение окружности содержит три неизвестных коэффициента. Соответственно, для построения окружности (или дуги окружности) необходимо знать три точки, через которые она проходит: две концевые точки дуги и одну промежуточную. Однако построение дуги окружности через три заданные точки – это не единственный способ. Дуга окружности будет определена, если известны

две концевые точки и центр;

одна концевая точка и наклон в начале и в конце и т. д. Приведем пример.

1. Построить дугу окружности, проходящей через три точки:

(1, 1), (2, 2), (3, 2).

Уравнение окружности x2 + y2 + dx + ey + f = 0 в результате подстановки

координат этих точек: 2 + d + e + f = 0 ;

8 + 2d + 2e + f = 0;

13 +3d + 2e + f = 0.

Решением этой системы является d = 5; e = 1; f = 4 ,

то есть уравнение искомой дуги

x2 + y2 5x + y + 4 = 0; 1< x < 3 .

Центр этой окружности лежит в точке [m,n]

m = −d 2 = 5 2 = 2.5 ,

n = −e 2 =1 2 = 0.5.

Радиус этой окружности

r = m2 + n2 f = 6.25 + 0.25 4 = 2.5 .

60

2. Построить дугу окружности заданного радиуса r = 5, проходящую

через две точки (1, 1) и (3, 2). Тогда

2 + d + e + f = 0 13 +3d + 2e + f = 0

d 2 4 + e2 4 f = 25 .

Решение этой системы получается итерационным способом:

d = −8.4; e = 5.7; f = 0.7 .

Центр окружности [m,n] =[4.2;2.85] .

3. Построить окружность с начальной точкой (1 ,1) и с наклоном в начале 1, в конце – 0. (конечная точка здесь не известна и не может быть выбрана произвольно).

Определим уравнение наклона:

dy

= −

f

x = −

2x + d

.

 

f

 

dx

y

2y + e

Тогда исходные данные запишутся как y =1 при x =1;

dydx =1 при y =1 и x =1; dydx = 0 при x = 3 ;

то есть

2 + d + e + f = 0 ;

2 + d =1 , то есть 4 + d + e = 0 ; 2 + e

6 + d = 0.

Отсюда d = −6; e = 2; f = 2 .

Уравнение исходной окружности: x2 + y2 6x + 2y + 2 = 0 .

Радиус: r = (d / 2)2 + (e / 2)2 f = 9 +12 = 8 .