GK 9 Przekształcenia geometryczne

background image

Wykład

Przekształcenia geometryczne

- podstawy matematyczne
- przekształcenia 2D
- współrzędne jednorodne i macierzowa reprezentacja

przekształce

ń 2D

- składanie przekształceń 2D
- układy współrzędnych
- przekształcenia 3D
- składanie przekształceń 3D
- model procesu rzutowania 3D
- rzut perspektywiczny
- rzut ortogonalny
- okno zobrazowania (viewport)

background image

AB

AB

AB

AC

Podstawy matematyczne


1.

Wektory


Wektorem

nazywamy uporz

ądkowaną parę punktów. Pierwszy z tych

punktów nazywamy początkiem wektora, a drugi końcem wektora.

- wektor o pocz

ątku w punkcie A i końcu w punkcie B


Długo

ścią wektora (moduł wektora) nazywamy długo

ść odcinka

ł

ączącego początek wektora z jego końcem.


oznaczenie: lub AB

Kierunkiem

wektora niezerowego nazywamy kierunek prostej, na której

ten wektor le

ży.


Zwrotem

wektora niezerowego

nazywamy ten zwrot prostej AB, w

którym punkt A poprzedza punkt B. Dwa niezerowe wektory równoległe
maj

ą ten sam kierunek, ich zwroty mogą być zgodne lub przeciwne.


Dwa wektory niezerowe nazywamy równymi, je

śli mają ten sam

kierunek, ten sam zwrot i równe moduły.

Dodawanie wektorów

.

v
B C

u u+v

A D

= u + v


- przemienne: u + v = v + u
- ł

ączne:

(u + v) + w = u + (v + w)

background image

Mno

żenie wektora przez liczbę. Iloczynem wektora u przez liczb

ę k

nazywamy wektor, który:

1) jest równoległy do wektora u
2) ma długo

ść │k│u

3) ma zwrot wektora u je

śli k>0, u≠0, względnie zwrot wektora –u, jeśli

k<0, u

≠0. Wektor ten oznaczamy ku lub uk.


Wła

ściwości:

- (

αβ)ν = α(βν)

- 1

ν = ν

- (

α + β)ν = αν + βν

-

α(ν + w) = αν + αw



Kombinacj

ą liniową wektorów u

1

, ....., u

n,

, o współczynnikach a

1

, ....., a

n,

,

gdzie n jest liczb

ą naturalną, nazywamy wektor


a

1

u

1

+ a

1

u

2

+ ... + a

n

u

n

background image

2.

Iloczyn skalarny


Iloczynem skalarnym

dwóch wektorów u i v nazywamy liczb

ę, którą

oznaczamy symbolem u · v i która w przypadku, gdy oba wektory s

ą

niezerowe,

jest

równa

iloczynowi

modułów

tych

wektorów

pomno

żonemu przez cosinus kąta między nimi

u · v = uv cos{u, v}

a która jest zerem w przypadku, gdy co najmniej jeden z tych wektorów
jest zerowy.

Wła

ściwości:

1. Iloczyn skalarny dwóch wektorów u i v jest zerem wtedy i tylko

wtedy, gdy wektory te s

ą prostopadłe

u · v = 0

 u

v

2. Iloczyn skalarny dowolnego wektora u przez ten sam wektor jest

równy kwadratowi modułu tego wektora

u ·u = u

2

3. Dla dowolnych wektorów u, v, a, b i dowolnej liczby k zachodz

ą

nast

ępujące równości:

u · v = v ·u

- przemienno

ść mnożenia skalarnego

(ku) · v = k(u · v) = u · (kv)

- ł

ączność mnożenia skalarnego z

mno

żeniem wektora przez liczbę

u · (a+b) = u ·a + u · b

- rozdzielno

ść mnożenia skalarnego

wzgl

ędem dodawania wektorów

background image

n

m

m

m

n

n

a

a

a

a

a

a

a

a

a

,

2

,

1

,

,

2

2

,

2

1

,

2

,

1

2

,

1

1

,

1

...

...

...

...

...

...

...

3. Macierze

DEF.:
Ci

ąg dwuwskaźnikowy skończony

[a

i,j

]

i

≤m,j≤n

gdzie: m, n – liczby naturalne

którego wyrazy a

i,j

s

ą liczbami rzeczywistymi nazywamy macierzą

wymiaru (m, n) i zapisujemy w postaci tablicy:

A

= [a

i,j

]

i

≤m,j≤n

=




Wyrazy s

ą ustawione w m wierszach i n kolumnach w taki sposób, że

wyraz a

i,j

znajduje si

ę w i-tym wierszu i j-tej kolumnie. Jeżeli w

macierzy m = n, to macierz t

ę nazywamy macierzą kwadratową stopnia

n

.

Mnożenie macierzy przez liczbę. Iloczynem macierzy

A

=[a

i,j

] przez

liczb

ę s nazywamy macierz

s

A

= s[a

i,j

] = [sa

i,j

]

któr

ą otrzymujemy, mnożąc każdy wyraz macierzy

A

przez liczb

ę s.

Dodawanie i odejmowanie macierzy. Sum

ą macierzy

A

=[a

i,j

] i

B

=

[b

i,j

] tego samego wymiaru nazywamy macierz

A+B

= [a

i,j

] + [b

i,j

] = [a

ij,

+ b

i,j

]

któr

ą otrzymujemy, dodając do każdego wyrazu macierzy

A

odpowiedni

wyraz macierzy

B

. Analogicznie okre

ślamy różnicę dwóch macierzy

A-B

= [a

i,j

] - [b

i,j

] = [a

ij,

- b

i,j

]

background image

Mnożenie macierzy przez macierz. Niech b

ędą dane dwie macierze

A

=[a

i,j

]

m,n

B

= [b

i,j

]

n,p

Których wymiary (m,n) i (n,p) s

ą dostosowane tak, aby w każdym

wierszu pierwszej macierzy było tyle wyrazów, ile jest w ka

żdej

kolumnie drugiej macierzy. Iloczynem i-tego wiersza pierwszej macierzy
przez k-tą kolumnę drugiej macierzy nazywamy liczb

ę

Iloczynem macierzy

A

przez macierz

B

nazywamy macierz

C = AB

= [c

ik

]

m,p

Której ka

żdy wyraz c

ik

jest iloczynem i-tego wiersza macierzy

A

przez

k-t

ą kolumnę macierzy

B

.


Przykład: mno

żenie macierzy przez macierz

[

]

=

=

=

n

j

jk

ij

nk

k

in

i

ik

b

a

b

b

a

a

c

1

1

1

...

,...,

+

+

+

+

+

+

+

+

=

3

3

2

2

1

1

3

3

2

2

1

1

3

3

2

2

1

1

3

3

2

2

1

1

3

3

2

2

1

1

3

2

1

3

2

1

y

b

y

b

y

b

x

b

x

b

x

b

y

a

y

a

y

a

x

a

x

a

x

a

y

x

y

x

y

x

b

b

b

a

a

a

background image

Własno

ści działań na macierzach


1. Mno

żenie macierzy przez liczbę jest łączne i rozdzielne względem

dodawania liczb i dodawania macierzy

r(s

A

) = (rs)

A

(r+s)

A

= r

A

+ s

A

s(

A

+

B

) = s

A

+ s

B


2. Dodawanie macierzy jest przemienne i ł

ączne

A+B = B+A

(A+B)+C = A+(B+C)


3. Mno

żenie macierzy przez macierz nie jest przemienne

AB

≠ BA


4. Mno

żenie macierzy przez macierz jest łączne i rozdzielne względem

dodawania macierzy

(AB)C=A(BC)

F(G+H)=FG+FH

(G+H)K=GK+HK


5. Mno

żenie przez macierz zerową

A0=0 0A=0

background image

Wyznaczniki macierzy kwadratowej

n –

stopie

ń macierzy


n

=2



n

=3


Własno

ści:

1. Je

śli macierze

A

i

B

s

ą kwadratowe tego samego stopnia, to

det

AB =

det

A

det

B

2. Macierz kwadratow

ą A nazywamy:

- osobliwą, gdy det

A

= 0

- nieosobliwą, gdy det

A

≠ 0

21

12

22

11

22

21

12

11

det

a

a

a

a

a

a

a

a

A

=

=

33

21

12

32

23

11

31

22

13

32

21

13

31

23

12

33

22

11

33

32

31

23

22

21

13

12

11

det

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

A

+

+

=

=

background image

Macierz transponowana
Niech b

ędzie macierz dowolnego wymiaru

A

=[a

i,j

]

i

≤,n ,j≤m

Macierz

ą transponowaną macierzy

A

nazywamy macierz

A*

=[a*

i,j

]

i

≤,n ,j≤m

gdzie:

a*

i,j

= a

,ji


Własno

ści:

1. Dla ka

żdych macierzy

A

,

B

,

C

, których wymiary s

ą dostosowane

tak, aby istniały iloczyny

AB

i

BC

, zachodzi równo

ść

(AB)* = B*A* (ABC)* = C*B*A*

2. Dla ka

żdej kwadratowej macierzy

A

zachodzi równo

ść

det

A* =

det

A

background image

Macierz odwrotna

Je

śli

A

jest macierz

ą nieosobliwą, to macierz

X

spełniaj

ącą związki

AX = E

XA = E

nazywamy macierzą odwrotną do macierzy

A

i oznaczamy

A

-1

.

A

-1

=

X

Własno

ści:

1. Wyznacznik macierzy odwrotnej jest odwrotno

ścią wyznacznika

macierzy danej

det

A

-1

=

(

det

A)

-1

2. Je

śli macierze

A

i

B

s

ą nieosobliwe i tego samego stopnia, a liczba s

jest ró

żna od 0, to

(

s

A)

–1

=

s

–1

A

–1

(A

–1

)

–1

= A

(AB)

–1

= B

–1

A

–1

(A

–1

)* = (A*)

–1

background image
background image

Własności działań na macierzach

5. Mno

żenie macierzy przez liczbę jest łączne i rozdzielne względem

dodawania liczb i dodawania macierzy

r(s

A

) = (rs)

A

(r+s)

A

= r

A

+ s

A

s(

A

+

B

) = s

A

+ s

B


6. Dodawanie macierzy jest przemienne i ł

ączne

A+B = B+A

(A+B)+C = A+(B+C)


7. Mno

żenie macierzy przez macierz nie jest przemienne

AB

≠ BA


8. Mno

żenie macierzy przez macierz jest łączne i rozdzielne względem

dodawania macierzy

(AB)C=A(BC)

F(G+H)=FG+FH

(G+H)K=GK+HK


5. Mno

żenie przez macierz zerową

A0=0 0A=0

background image

+

=

y

x

d

d

y

x

y

x

'

'

Przekształcenia geometryczne 2D


1.

Translacja (przesunięcie) – zmiana lokalizacji









P = {P

x

, P

y

}

- punkty obiektu przed przekształceniem

P’ = {P’

x

, P’

y

} - punkty obiektu po przekształceniu

T = [d

x

, d

y

]

- wektor translacji


Zapis macierzowy:

albo

P’ = P + T



T

y

x

P

P’

background image

=

y

x

s

s

y

x

y

x

0

0

'

'

2.

Skalowanie – zmiana rozmiaru

S = [s

x

, s

y

]

s

x

i s

y

,

- współczynniki skalowania























Zapis macierzowy:

albo

P’ = SP



y

x

P

P’

s

x

= s

y

P

P’

s

x

< s

y

y

x

P

P’

s

x

> s

y

y

x

background image

=

y

x

y

x

θ

θ

θ

θ

cos

sin

sin

cos

'

'

3.

Obrót – zmiana orientacji


Obrót o k

ąt θ wokół początku układu współrzędnych







Wyprowadzenie wzoru:











x = r cos

Φ, y = r sinΦ

(1)


x’ =r cos(

θ

+Φ) = r cosΦ cosθ – r sinΦ sinθ

(2)

y’ =r sin(

θ

+Φ) = r cosΦ sinθ + r sinΦ cosθ

(3)


Po podstawieniu (2) i (3) do (1) otrzymamy:

x’ = x cos

θ

– y sinθ,

y’ = x sin

θ

+ y cosθ

(4)

Zapis macierzowy:

albo

P’ = RP

θ = 45º

y

x

P

P’

rcos(

θ+Φ)

rcos(

Φ)

r

r

Φ

θ

P=(x,y)

y

x

P’=(x’,y’)

background image

=

1

1

0

0

1

0

0

1

1

'

'

y

x

d

d

y

x

y

x

=

1

1

0

0

0

0

0

0

1

'

'

y

x

s

s

y

x

y

x

=

1

1

0

0

0

cos

sin

0

sin

cos

1

'

'

y

x

y

x

θ

θ

θ

θ

4.

Współrzędne jednorodne



Translacja


albo

P’ = TP


gdzie:

T

– macierz translacji



Skalowanie

albo

P’ = SP


gdzie:

S

– macierz skalowania



Obrót

albo

P’ = RP


gdzie:

R

– macierz obrotu


=

=

1

'

'

'

1

y

x

P

y

x

P

background image

=

1

0

0

1

0

0

1

1

0

0

0

cos

sin

0

sin

cos

1

0

0

1

0

0

1

)

,

(

)

(

)

,

(

1

1

1

1

1

1

1

1

y

x

y

x

y

x

T

R

y

x

T

θ

θ

θ

θ

θ

5.

Składanie przekształceń 2D


Obrót obiektu wokół dowolnego punktu P

1

o k

ąt θ


1)

2)










3)

4)













Macierz przekształcenia

P

1

(x

1

,y

1

)

-T[x

1

,y

1

]

θ = 45º

Oryginalny rysunek

y

x

P

1

(x

1

,y

1

)

T[x

1

,y

1

]

Po przesuni

ęciu o wektor T do

pocz

ątku układu współrzędnych

y

x

Po obrocie o k

ąt θ

y

x

Po przesuni

ęciu o wektor -T do

pocz

ątkowego punktu P

1

y

x

background image

=

1

0

0

1

0

0

1

1

0

0

0

0

0

0

1

0

0

1

0

0

1

)

,

(

)

,

(

)

,

(

1

1

1

1

1

1

1

1

y

x

s

s

y

x

y

x

T

s

s

S

y

x

T

y

x

y

x

Skalowanie obiektu wzgl

ędem dowolnego punktu P

1

[x

1

,y

1

]


Kolejne kroki:
1. Przesuni

ęcie o wektor T tak aby punkt P

1

znalazł si

ę w początku

układu współrz

ędnych

2.

Skalowanie ze współczynnikami s

x

, s

y

3. Przesuni

ęcie o wektor –T


Macierz przekształcenia






background image

=

=

1

0

0

1

0

0

1

1

0

0

0

cos

sin

0

sin

cos

1

0

0

0

0

0

0

1

0

0

1

0

0

1

)

,

(

)

(

)

,

(

)

,

(

2

2

1

1

2

2

1

1

y

x

s

s

y

x

y

x

T

R

s

s

S

y

x

T

y

x

y

x

θ

θ

θ

θ

θ

Skalowanie i obrót wzgl

ędem punktu P

1

b

ędącym środkiem obrotu i

skalowania i przesuni

ęcie obiektu do punktu P

2


Kolejne kroki:
1. Przesuni

ęcie o wektor T[x

1

,y

1

] tak aby punkt P

1

znalazł si

ę w

pocz

ątku układu współrzędnych

2. Skalowanie ze współczynnikami s

x

, s

y

3. Obrót o k

ąt θ wokół początku układu współrzędnych

4. Przesuni

ęcie o wektor T

2

[x

2

,y

2

] do punktu P

2


Macierz przekształcenia








background image

Przypadki przemienno

ści mnożenia macierzy

M

1

M

2

= M

2

M

1

M

1

M

2

Translacja

Translacja

Skalowanie

Skalowanie

Obrót

Obrót

Skalowanie z s

x

=s

y

Obrót


W tych przypadkach nie musimy dba

ć o kolejność składania macierzy



Własno

ści przekształceń odwrotnych

T

-1

(x,y

) = T

(-x,-y)

R

-1

(

θ)

= R

(-

θ)

S

-1

(s

x

,s

y

) = S

(1/s

x

,1/s

y

)







background image

Przekształcenia 3D

Układy współrzędnych 3D

Prawoskrętny układ współrzędnych (wykorzystywany w OpenGL)






















Dodatnie kąty obrotów w kierunku przeciwnym do ruchu wskazówek
zegara, gdy patrzymy od strony dodatniej osi w kierunku początku układu.







Y

Z

X

background image

Lewoskrętny układ współrzędnych


















Dodatnie kąty obrotów w kierunku zgodnym z ruchem wskazówek zegara,
gdy patrzymy od strony dodatniej osi w kierunku początku układu.



Y

Z

X

background image

=

=

1

0

0

0

0

1

0

0

0

0

1

0

0

0

0

1

R

L

L

R

M

M

Macierz konwersji:


background image

Przekształcenia geometryczne 3D

Operacje obrotu, translacji oraz skalowania można przedstawić za pomocą
macierzy, przez którą należy pomnożyć współrzędne wierzchołka którego
chcemy zmodyfikować. Ogólna postać takiej macierzy to:

[

] [

]

=

44

43

42

41

34

33

32

31

24

23

22

21

14

13

12

11

1

z

y

x

1

z'

y'

x'

M

M

M

M

M

M

M

M

M

M

M

M

M

M

M

M

background image

1. Macierz translacji:






a więc operację translacji można przedstawić za pomocą wzorów:

x' = x * 1 + y * 0 + z * 0 + 1 * Tx = x + Tx
y' = x * 0 + y * 1 + z * 0 + 1 * Ty = y + Ty
z' = x * 0 + y * 0 + z * 1 + 1 * Tz = z + Tz

gdzie:
- x',y',z' - współrzędne wierzchołka po translacji
- x,y,z - współrzędne wierzchołka przed translacją
- Tx,Ty,Tz - wartości wektora translacji dla kolejnych osi X,Y,Z

[OpenGL: glTranslate* (Tx,Ty,Tz);]












[

] [

]

=

1

0

1

0

0

0

0

1

0

0

0

0

1

1

z

y

x

1

z'

y'

x'

z

y

x

T

T

T

background image

2. Macierz obrotu

a) obrót wokół osi X







za pomocą wzorów:
y' = yo + (y - yo)*cos(θ)+(z-zo)*sin(θ);
z' = zo + (z - zo)*cos(θ)-(y-yo)*sin(θ);
x' = xo

gdzie:
- x, y, z - współrzędne punktu przed obrotem
- x', y', z' – współrzędne punktu po obrocie
- xo, yo, zo - punkt wokół którego nastąpi obrót
- θ - kąt o jaki nastąpi obrót


[

] [

]

=

1

0

0

0

0

)

cos(

)

sin(

0

0

)

sin(

)

cos(

0

0

0

0

1

1

z

y

x

1

z'

y'

x'

θ

θ

θ

θ

background image

b) wokół osi Y








za pomocą wzorów:
x' = xo + (x - xo)*cos(θ)-(z-zo)*sin(θ);
z' = zo + (z - zo)*cos(θ)+(x-xo)*sin(θ);
y' = yo

gdzie:
- x, y, z - współrzędne punktu przed obrotem
- x', y', z' – współrzędne punktu po obrocie
- xo, yo, zo - punkt wokół którego nastąpi obrót
- θ - kąt o jaki nastąpi obrót

[

] [

]

=

1

0

0

0

0

)

cos(

0

)

sin(

0

0

1

0

0

)

sin(

0

)

cos(

1

z

y

x

1

z'

y'

x'

θ

θ

θ

θ

background image

c) wokół osi Z








za pomocą wzorów:
x' = xo + (x - xo)*cos(θ)+(y-yo)*sin(θ);
y' = yo + (y - yo)*cos(θ)-(x-xo)*sin(θ);
z' = zo

gdzie:
- x, y, z - współrzędne punktu przed obrotem
- x', y', z' – współrzędne punktu po obrocie
- xo, yo, zo - punkt wokół którego nastąpi obrót
- θ - kąt o jaki nastąpi obrót

[

] [

]

=

1

0

0

0

0

1

0

0

0

0

)

cos(

)

sin(

0

0

)

sin(

)

cos(

1

z

y

x

1

z'

y'

x'

θ

θ

θ

θ

background image



[OpenGL: glRotate* (θ, x, y, z);]

θ – k

ąt obrotu w stopniach;

( x, y, z) o

ś obrotu.


( x, y, z) = ( 1, 0, 0) - obrót wokół os X;

( x, y, z) = ( 0, 1, 0) - obrót wokół os Y;

( x, y, z) = ( 0, 0, 1) - obrót wokół os Z;



Przykład:

glRotatef(45.0, 0.0, 0.0, 1.0);






background image

3. Macierz skalowania





za pomocą wzorów:
x' = x * s

x

y' = y * s

y

z' = z * s

z


gdzie:
- x, y, z – współrzędne przed skalowaniem
- x', y', z' – współrzędne po skalowaniu
- s

x

, s

y

, s

z

– współczynniki operacji skalowania

-
[OpenGL: glScale* (s

x

, s

y

, s

z

);]



Przykład:

glScalef (2.0, -0.5, 1.0);


















- odbicie względem płaszczyzny XZ
- dwukrotne wydłużenie wzdłuż osi X
- dwukrotne zmniejszenie wzdłuż osi Y

[

] [

]

=

1

0

0

0

0

0

0

0

0

0

0

0

0

1

z

y

x

1

z'

y'

x'

z

y

x

s

s

s

background image

Składanie przekształceń


a) obrót + translacja

b) translacja + obrót


{

{

glTranslatef (50.0, 0.0, 0.0);

glRotatef (45.0, 0.0, 0.0,1.0);

glRotatef (45.0, 0.0, 0.0, 1.0);

glTranslatef (50.0, 0.0, 0.0);

draw_object();

draw_object();

}

}

Uwaga:

Przekształcenia macierzowe w OpenGL wykonywane są w odwrotnej
kolejności niż wynikałoby to z kodu programu.

background image

Model procesu rzutowania 3D


WEJŚCIE: Modele obiektów 3D

(układ współrzędnych obiektu)


1. Macierz modelowania sceny:

(układ współrzędnych rzeczywistych -ziemskich)

- translacja
- skalowanie
- obrót

2. Macierz rzutowania:

(układ współrzędnych odciętych - płaszczyzny rzutowania )

- rzut perspektywiczny [OpenGL: glFrustum(); glPerspective();]
- rzut ortogonalny [OpenGL: glOrtho();]

3. Dzielenie perspektywiczne - przekształcenie normalizujące:

(układ współrzędnych urządzenia zobrazowania – współrzędne znormalizowane)

4. Definiowanie okna zobrazowania [OpenGL: glVievport();]

(układ współrzędnych obszaru zobrazowania - współrzędne ekranowe)

WYJŚCIE: obraz sceny w oknie zobrazowania










background image

Model procesu rzutowania 3D
















WEJŚCIE:
Modele obiektów 3D (układ współrzędnych obiektu)

1. Macierz modelowania sceny

M

- (układ współrzędnych rzeczywistych -ziemskich)

-

translacja

-

skalowanie

-

obrót

2. Macierz rzutowania

P

- (układ współrzędnych odciętych – współrzędne płaszczyzny rzutowania )

-

rzut perspektywiczny [OpenGL: glFrustum(); glPerspective();]

-

rzut ortogonalny [OpenGL: glOrtho();]

3. Dzielenie perspektywiczne - przekształcenie normalizujące:

(układ współrzędnych urządzenia zobrazowania – współrzędne znormalizowane <-1;1>)

4. Definiowanie okna zobrazowania [OpenGL: glVievport();]

(układ współrzędnych obszaru zobrazowania - współrzędne ekranowe)

WYJŚCIE: obraz sceny w oknie zobrazowania

Macierz

modelowania

M

Macierz

rzutowania

P

Dzielenie

perspektywiczne

Definiowanie

okna

zobrazowania

o

o

o

o

w

z

y

x

Współrzędne

odcięte

Znormalizowane

współrzędne

urządzenia

Współrzędne

ekranowe

s

s

s

z

y

x

=

o

o

o

o

e

e

e

e

w

z

y

x

M

w

z

y

x

=

e

e

e

e

c

c

c

c

w

z

y

x

P

w

z

y

x

=

c

c

c

c

c

c

d

d

d

w

z

w

y

w

x

z

y

x

/

/

/

Współrzędne w

układzie

obserwatora

Współrzędne

obiektu

background image

Rzut perspektywiczny





OpenGL: glFrustum(left, right, bottom, top, near, far);

parametry:

- left, bottom, near - współrzędne (x, y, -z) lewego dolnego wierzchołka
- right, top, near - współrzędne (x, y, -z) prawego górnego wierzchołka
- near, far – odległość płaszczyzn odcięcia

Funkcja generuje macierz przekształcenia perspektywicznego R:


gdzie:
- l: left, r : right, b: bottom, t: top, n: near, f: far
- l ≠ r, t ≠ b, n≠ f

background image



















background image






OpenGL: gluPerspective(fovy, aspect, near, far);

parametry:

- fovy - kąt pola widzenia w płaszczyźnie pionowej YZ [0,180

]

- aspect - stosunek szerokości obszaru rzutowania do jego wysokości
- near, far – odległość płaszczyzn odcięcia (-z)


Przykład:

Zdefiniować obszar rzutowania obejmujący cały ekran monitora 15”

(28 cm x 20 cm). Obserwator znajduje się w odległości 80 cm od monitora,
obiekty znajdujące się w odległości większej niż 5 m nie będą rysowane.

1. glFrustum(-28.0/2, 28.0/2, -20.0/2, 20.0/2, 80.0, 500.0);

2. gluPerspective(14.25, 1.4, 80.0, 500.0);

=

near

h

arctg

2

2

fovy

background image

Rzut ortogonalny (równoległy)





OpenGL: glOrtho(left, right, bottom, top, near, far);

parametry:

- left, bottom - współrzędne (x, y) lewego dolnego wierzchołka
- right, top - współrzędne (x, y) prawego górnego wierzchołka
- near, far – odległość płaszczyzn odcięcia

Funkcja generuje macierz przekształcenia ortogonalnego R:


gdzie:
- l: left, r : right, b: bottom, t: top, n: near, f: far
- l ≠ r, t ≠ b, n≠ f

background image

Definiowanie pozycji obserwatora


OpenGL:

gluLookAt(eyex, eyey, eyez, centerx, centery, centerz, upx, upy, upz);


Funkcja umiejscawia obserwatora w punkcie o współrzędnych
(

eyex, eyey, eyez

), punkt (

centerx, centery, centerz)

definiuje dowolny

punkt leżący na osi widzenia, typowo jest to centralny punkt sceny
(punkt obserwacji). Współrzędne (

upx, upy, upz

) wyznaczają

kierunek obserwacji (up vector) w oknie zobrazowania – typowo
(0,1,0).

background image

Definiowanie okna zobrazowania

OpenGL: glVievport(
x, y, width, hight);


Funkcja służy do zdefiniowania prostokątnego obszaru okna
graficznego, w którym odwzorowywany będzie obraz.

parametry:

- x, y - współrzędne (x, y) lewego dolnego wierzchołka okna względem

lewego dolnego wierzchołka okna zobrazowania ekranu

- width, hight - szerokość i wysokość okna

Uwaga:

Wszystkie wartości wyrażone w pikselach


Obszar zobrazowania

Okno graficzne

(Viewing Volume)

(Viewport)

background image

Odwzorowanie obszaru zobrazowania w okno graficzne


zachowana proporcja

brak proporcji

(równe aspekty okien)



Wyszukiwarka

Podobne podstrony:
Przekształcenia geometryczne, Matematyka
Przekształcenia geometryczne powtórzenie
Zadania dotyczace przeksztalcen geometrycznych, Matematyka, Matematyka(3)
matematyka, File187, PRZEKSZTAŁCENIA GEOMETRYCZNE
opengl przeksztalcenia geometryczne
PRZEKSZTAŁCENIA GEOMETRCZNE
,algebra liniowa z geometrią analityczną, PRZESTRZENIE I PRZEKSZTAŁCENIA LINIOWE zadania
,algebra liniowa z geometrią analityczną, PRZESTRZENIE I PRZEKSZTAŁCENIA LINIOWE zadania


więcej podobnych podstron