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

kniga

.pdf
Скачиваний:
254
Добавлен:
17.05.2015
Размер:
29.65 Mб
Скачать

 

1

0

0

1

X =

0

1

0

1 .

 

0

0

1

 

 

1

Подіємо на X матрицею аксонометричного проектування А. Маємо

X* = X A = 1 0 0 10 1 0 10 0 1 1

ϕ ψ

 

cosψ

sinψ sin ϕ

 

0

cosϕ

 

sinψ

cosψ sin ϕ

 

 

0

0

0 0

 

cosψ

sinψ sinϕ 0 1

0 0

 

 

=

0

cosϕ

0 1 .

0 0

 

 

 

 

 

0 1

 

sinψ cosψ sinϕ 0 1

 

 

 

 

 

Рис. 12.6. Триметричні проекції зрізаного куба

231

Квадрат довжини проекції одиничного орта вздовж осі x (коефіцієнт спотворення) дорівнює

k x2 = cos 2 ψ +sin 2 ψ sin 2 ϕ = 1sin 2 ψ +sin 2 ψ sin 2 ϕ =

 

= 1sin 2 ψ cos 2 ϕ 1.

(12.1)

Аналогічно квадрати довжин проекцій одиничних ортів вздовж осей

y та z дорівнюють, відповідно,

 

k y2 = cos 2 ϕ 1,

(12.2)

k z2 = sin 2 ϕ +cos 2 ϕ sin 2 ψ = 1cos 2 ϕ cos 2 ψ 1.

(12.3)

Масштабні коефіцієнти kx, ky, kz є довжинами проекцій одиничних ортів на КП. Із формул (12.1), (12.2), (12.3) випливає умова взаємозв’язку

k x2 + k y2 + k z2 =1sin 2 ψ cos 2 ϕ +cos 2 ϕ +1cos 2 ϕ cos 2 ψ = 2 (12.4)

між коефіцієнтами kx, ky, kz.

Часто для аксонометричної проекції задають не кути, а масштаби kx, ky, kz, тоді з формул (12.2), (12.3) можна знайти параметри ϕ та ψ, тобто

2

2

 

2

 

1

k 2

 

 

 

 

 

z

 

cos

ϕ = k y

,

cos

ψ =

 

 

 

.

 

 

k y2

 

 

 

 

 

 

 

 

Інколи необхідно забезпечити бажані співвідношення масштабів

kx : ky : kz = mx : my : mz.

Тоді коефіцієнти kx, ky, kz повинні бути пропорційні значенням mx, my,

mz, тобто kx = cmx, ky = cmy, kz = cmz

і c2( mx2 + m2y + mz2 ) = kx2 + ky2 + kz2 = 2.

Звідси випливає, що

 

 

 

 

c =

2

,

ki = cmi, і = 1, 2, 3.

(12.5)

mx2 + m2y + mz2

Диметрія характеризується тим, що довжини двох проекцій одиничних ортів збігаються. Прирівнюючи коефіцієнти масштабування kx і ky, одержуємо

cos2ψ + sin2ψsin2ϕ = cos2ϕ,

 

а, враховуючи формули cos2ψ = 1 – sin2ψ, cos2ϕ = 1 – sin2ϕ, маємо

 

sin2ψ (1 – sin2ϕ) = sin2ϕ,

(12.6)

або

 

sin2ψ = tg2ϕ.

(12.7)

Фіксуючи один із кутів, наприклад ψ, з (12.7) знаходимо

ϕ = arctg(±sinψ).

Тоді, наприклад, якщо вибрати ψ = 600, з (12.7) одержуємо tg2ϕ = 34 і для

232

кута ϕ можна вибрати значення ϕ = arctg( 23 ) 40,90.

Окремим випадком диметрії є стандартна диметрична проекція, при якій співвідношення масштабів складає kx : ky : kz = 2 : 2 : 1. За

формулами (12.5) знаходимо kx =

 

2 2 ,

ky

=

2

2 ,

kz =

2

. Тоді

 

 

 

 

 

 

 

 

 

3

 

 

 

 

3

 

 

 

 

3

 

 

 

 

cos2ϕ = ky2 =

 

8

,

 

cos2ψ =

 

1 kz2

=

7

,

 

 

 

 

 

9

 

 

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ky2

 

 

 

 

 

 

а отже, ϕ = arccos

98 19.470,

 

ψ = arccos

87

20.70.

 

 

 

Матриця стандартного диметричного проектування має вигляд

 

 

7

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

0

 

 

0,935

 

0,118

0

0

 

 

 

8

72

 

 

 

 

 

 

 

 

8

 

 

 

 

 

 

0

 

 

 

0,943

0

0

 

 

0

 

0

 

 

0

 

 

 

 

 

A димст =

 

 

9

 

 

 

 

 

 

 

0,312

0

0

.

 

 

1

 

7

 

 

 

 

 

0,354

 

 

0

 

 

0

 

 

0

 

 

 

0

 

0

1

 

 

8

72

 

 

 

 

 

 

 

 

 

 

 

0

 

0

0

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Умова kx = ky kz для диметричної проекції дозволяє знаходити розміри спроектованого об’єкта з однаковим масштабом по осях x та y, а виміри вздовж осі z вимагають іншого масштабного коефіцієнта. Це може призвести до помилок у випадку, коли потрібне точне масштабування розмірів спроектованого об’єкта.

Цей недолік усуває ізометрична проекція. У випадку ізометрії маємо

kx2 = ky2 = kz2 . Раніше з умови kx2 = ky2 випливало рівняння (12.6) або

 

 

 

 

 

sin2ψ =

 

sin2 ϕ

 

,

 

 

 

 

 

(12.8)

1 sin2

ϕ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

аналогічно з умови ky2 = kz2 одержуємо

 

 

 

 

 

 

 

 

 

 

 

 

2

1 2 sin2 ϕ

 

 

 

 

 

 

 

 

 

 

sin ψ =

1 sin 2 ϕ .

 

 

 

 

 

(12.9)

Прирівнюючи праві частини (12.8) і (12.9), знаходимо

 

sin2ϕ =

1

,

 

3

або ϕ = arcsin( ± 1 ) ≈ ±35,260. Тоді з (12.8) sin2ψ =

1

:

1

1

 

=

1

, а

3

 

 

3

 

 

 

 

 

 

3

2

 

 

 

отже, ψ = ±450.

233

Коефіцієнт спотворення для ізометричної проекції ky = cos2 ϕ =

2 / 3 0,8165 і є однаковим уздовж усіх осей (kx = ky = kz). Тому можна проводити виміри вздовж осей координат з одним і тим же масштабом.

Отже, перетворення ізометричного проектування, що одержується при ψ = 450 та ϕ = 35,260 , має вигляд

 

 

1

 

1

 

 

 

 

 

 

 

 

 

 

 

0

0

 

 

0,707

0,408

0

0

 

 

 

2

6

 

 

 

 

 

2

 

 

 

 

0

0,816

0

0

 

 

0

 

0

0

 

 

Aізо =

 

 

3

 

=

0,707

0,408

0

0

.

 

 

1

 

1

 

 

 

 

 

 

0

0

 

 

0

0

0

1

 

 

2

6

 

 

 

 

 

0

 

0

0

1

 

 

 

 

 

 

Якщо взяти куб із відрізаною вершиною, який задається матрицею Х, яка була наведена вище, і подіяти на неї матрицею ізометричного проектування Aізо, то одержимо координати ізометричної проекції куба, тобто

0,707

0,408

0

1

 

0

0,816

0

 

 

1

 

0

0,408

0

1

 

0,354

0,204

0

 

 

1

 

0,707

0,408

0

1

X= X Aізо =

0

0

0

.

 

1

 

0,707

0,408

0

 

 

1

 

0,707

0,408

0

1

 

0

0,816

0

 

 

1

 

0,354

0,204

0

 

 

1

На рис. 12.8 зображено чотири можливі ізометричні проекції зрізаного куба з кутами ψ = ±45о, ϕ = ±35,26о.

12.4. Косокутна проекція

На відміну від ортографічної і аксонометричної проекцій, для яких проектори перпендикулярні до КП, косокутна проекція формується паралельними проекторами, що проходять не під прямим кутом до КП.

Косокутні проекції показують загальну форму просторового об’єкта, але істинні розміри та форма зберігаються лише для граней об’єкта, які паралельні КП, тобто кути і довжини при косокутному проектуванні

234

зберігаються тільки для цих граней. Грані, які не паралельні площині проекції, спотворюються.

Косокутні проекції – основний інструмент для побудови тіні об’єкта на площину і для відображення об’єкта в плоскому дзеркалі.

Рис. 12.8. Ізометричні проекції зрізаного куба

Щоб побудувати матрицю косокутного проектування, необхідно задати напрям проектування. Для цього на осі z вибираємо одиничну точку P(0, 0, 1), а в площині проекцій (z = 0) – точку P1 (рис. 12.9) і вва-

жаємо, що напрям PP1 задає напрям проектування. Позначимо довжину OP1 через l і нехай OP1 утворює з віссю x кут α, тоді xp1 = lcosα, y p1 =

lsinα. Отже, маємо координати точки P1(lcosα, lsinα, 0) і напрям PP1 =

(lcosα, lsinα, –1).

Крім цього, при косокутному проектуванні відрізок OP проектується у відрізок OP1, тобто одиничний відрізок проектується у відрізок довжиною l, тому l можна назвати коефіцієнтом спотворення при косокутному проектуванні. Як видно з рис. 12.9, l = ctgβ (arcсtgl = β), де β – кут нахилу косих проекторів до площини проекції z = 0.

235

Нехай тепер задано довільну точку Q(x, y, z). Знайдемо матричне перетворення косокутного проектування, тобто перетворення, яке точку Q перетворює в точку Q.

x

Q(x, y, 0)

 

L

P1 β α

Q(x, y, z)

 

O

z

P(0, 0, 1)

y

Рис. 12.9. Напрям косокутного проектування

Рівняння прямої, що проходить через точку Q паралельно вектору PP1 , має вигляд

X x

=

Y y

=

Z z

,

l cosα

l sin α

1

 

 

 

де X, Y, Z – біжучі точки прямої L, тому для точки Qзнаходимо x= x + lzcosα,

y= y + lzsinα,

або в матричній формі

 

 

1

0

0

0

 

 

 

0

1

0

0

 

(xy0 1) = (x y z 1)

 

 

 

 

l sin α

0

0

.

 

l cosα

 

 

 

0

0

0

1

 

 

 

 

Це і є матриця косокутного проектування. Змінюючи значення α, β, одержуємо різні варіанти косокутної проекції. Надалі для спрощення запису для матриці косокутного проектування будемо виписувати тільки верхню ліву частину розміром 3×3.

Зауваження 2. Якщо напрям проектування PP1 задати вектором

(px, py, pz), то

l = ctgβ =

px2 + p2y

, sinα =

py

, cosα =

px

,

pz2

px2 + p2y

px2 + p2y

і матриця косокутного проектування набуває вигляду

236

 

1

0

0

 

p

 

 

py

 

 

 

x

 

 

Kz = 0

1

0 , де qx =

 

, qy =

 

.

 

 

pz

 

 

 

0

 

pz

 

qx qy

 

 

 

 

 

 

Аналогічно можна виписати матриці косокутного проектування Kx, Ky

 

1

 

0

0

 

 

px

 

 

 

pz

 

Ky = qx

0

qz

, де qx =

 

, qz =

,

py

 

 

 

0

 

0

1

 

 

 

 

 

py

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

qy

qz

 

py

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

 

z

 

 

Kx =

0

1

0

 

, де qy =

 

 

, qz =

 

 

.

px

 

 

 

 

 

0

 

0

1

 

 

 

 

 

px

 

 

 

 

 

 

 

 

 

 

 

 

Деякі напрямки вектора PP1 дають стаціонарні косокутні проекції.

Особливий інтерес являють собою дві косокутні проекції – проекція Кавальє (вільна проекція) і кабінетна проекція. Проекція Кавальє одержується тоді, коли кут між проекторами і площиною проекції дорівнює 450 (l = 1), однак результат цієї проекції виглядає неприродно потовщеним (рис. 12.10).

Рис. 12.10. Проекція Кавальє

237

Цього недоліку немає в кабінетній проекції, в якій коефіцієнт спотворення l = 12 , тобто кут між проекторами і КП β = arcctg(1/2) = 63,430.

Проекція Кавальє визначається вектором PP1 = (1, 1, 2 ) і задається матрицею

 

1

0

 

 

 

1

0

0

 

 

0

 

0

1

0

 

 

0

1

0

 

Kкав =

 

.

 

1

1

0

 

0,707

0,707

0

 

2

2

 

 

 

 

 

 

 

 

 

 

Кабінетна проекція визначається вектором (1, 1, 2 2 ) і задається матрицею

 

 

 

 

 

 

1

0

0

 

 

1

0

0

 

 

 

 

0

1

0

 

Ккаб=

0

1

0

 

=

 

 

1

1

0

 

0,354

0,354

0

 

2

2 2

 

 

2

 

 

 

 

 

 

 

Проекція Кавальє зрізаного куба наведена на рис. 12.10, а кабінетна проекція – на рис. 12.11.

Рис. 12.11. Кабінетна проекція

238

12.5. Одноточкова (однофокусна) перспективна проекція

Спочатку розглянемо простіший випадок центрального проектування. Припустимо, що проективна площина перпендикулярна осі координат, наприклад z, і проходить через точку C(0,0) на осі z, а сам спостерігач (камера) знаходиться в початку координат. Нехай задана точка P(x, y, z) у просторі. Знайдемо координати проекції точки P на КП. Позначимо шукану точку через P(x, y, z) (рис. 12.12).

З подібностітрикутників(рис. 12.12) запишемопропорції cz = yy, cz = xx,

звідки x= cxz , y= cyz . Якщо розглядати однорідні координати точок

P(x, y, z, 1), P( z x/ c , z y/ c , c, 1) = (x, y, z, cz ), то перетворення точки P у P

можна задати матричною формулою P= P M1, де

 

1

0

0

0

 

 

0

1

0

0

 

 

 

M1 =

0

0

1

1/ c

.

 

 

 

0

0

0

0

 

 

 

z

 

 

 

 

z

y

 

x

 

 

 

P(x, y, z)

 

 

 

 

c

 

y

Площина проектування

x

 

 

 

P( x, y, c)

 

O

х

 

уРис. 12.12. Перспективна проекція

Розглянемо інший варіант центрального проектування. Нехай КП знаходиться у площині z = 0, а камера – в точці C(0, 0, c) (рис. 12.13).

239

y

P

 

 

y

 

x

P

x

 

x

y

 

 

z

C(0, 0, c) Рис. 12.13. Інший варіант перспективної проекції

 

Візьмемо в просторі довільну точку P(x, y, z) і побудуємо пряму, що проходить через точки C та P. Параметричне рівняння цієї прямої має вигляд

 

 

 

 

 

 

 

 

X = xt, Y = yt, Z = c + (z c)t.

 

 

 

 

 

 

 

 

 

 

 

 

Знайдемо координати точки перетину побудованої прямої з площи-

ною z = 0. З умови Z = 0 маємо t =

 

c

 

, а отже, x=

 

xc

=

 

x

 

, y=

c

z

c

z

 

z

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

yc

 

 

 

y

 

 

 

 

 

 

 

x

 

 

 

y

 

 

 

 

c

 

 

z

 

 

 

=

 

 

, тобто одержуємо точку Р(

 

 

,

 

 

,0,1 ) = Р(x,y,0, 1–

).

 

c z

 

 

z

 

 

 

z

 

 

 

z

 

 

 

1

 

 

 

 

 

 

1

 

 

1

 

 

 

 

 

 

 

 

 

 

c

 

 

 

c

 

 

 

 

 

 

c

 

 

c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ці ж перетворення можна записати і в матричній формі

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(xy0 1) = (x y 0 1–

 

z

) = (x y z 1) M2 ,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

де M2 – матриця перспективного проектування на площину z = 0:

 

1

0

0

0

 

 

0

1

0

0

 

 

 

M2 =

0

0

0

1

.

 

c

 

 

 

 

 

 

0

0

0

1

 

 

 

Зауважимо, що наявність нульового третього стовпця в матриці M2 зумовлена тим, що z-координата проекції нульова. Очевидно, що при такому перетворенні повністю губиться інформація про глибину сцени. Формально зберегти z-координату при виконанні перспективного перетворення можна шляхом заміни в матриці M2 нуля на перетині третього рядка та третього стовпчика на 1. При цьому одноточкове перспективне перетворення (без проектування на площину) з центром проектування на осі z задається формулою X= X Pc, де

240

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]