background image

 

 

Wykład 1 – Wprowadzenie:

Układ współrzędnych 3D

Operacje na wektorach

Transformacje 3D

Rzutowanie

Matematyka grafiki 3D

Wykład

z grafiki komputerowej

(3D)

(C) 2009 Grzegorz Łukawski
Politechnika Świętokrzyska w Kielcach

background image

 

 

● R. S. Wright jr, M. Sweet: „OpenGL – księga eksperta”,

Helion 1999

● Wojciech Jawor: „Principia Silnika”

Literatura (3D)

background image

 

 

Kartezjański, lewoskrętny układ współrzędnych:

0, 0, 0

X

Y

Z

Kartezjański układ współrzędnych

background image

 

 

X

Y

Z

P

P'

R

φ

ψ

0, 0, 0

R - promień wodzący;
φ - kąt pomiędzy płaszczyzną X-Z

a promieniem wodzącym.

ψ - kąt pomiędzy rzutem

promienia wodzącego na 

płaszczyznę X-Z a osią X;

Przejście na układ kartezjański:

x = R * cos φ * cos ψ
y = R * sin φ

z = R * cos φ * sin ψ

Sferyczny układ współrzędnych

background image

 

 

Obliczenie długości wektora:

∣ 

W∣=

x

2

y

2

z

2

Normalizacja wektora (wektor znormalizowany ma długość jednostkową):

W ' =

W

∣ 

W

Iloczyn skalarny (wynikiem jest liczba):

a⋅=∣a∣⋅∣b∣⋅cos a , b

a⋅x

1

x

2

y

1

y

2

z

1

z

2

Operacje na wektorach

background image

 

 

A×B=det

[

x

x

1

x

2

y y

1

y

2

z

z

1

z

2

]

A×

B=

[

y

1

z

2

y

2

z

1

, x

2

z

1

x

1

z

2

, x

1

y

2

x

2

y

1

]

A

B

A x B

B x A

Wektor A = [x

1

, y

1

, z

1

]

Wektor B = [x

2

, y

2

, z

2

]

Wynikiem  iloczynu  wektorowego  jest  wektor  prostopadły  do  mnożonych 

wektorów. Iloczyn wektorowy nie jest przemienny!

Iloczyn wektorowy

background image

 

 

O

x

=

[

1

0

0

0

0 cosφ −sin φ 0
0 sin φ

cos φ

0

0

0

0

1

]

● Wokół osi X:

O

y

=

[

cosφ 0 −sin φ 0

0

1

0

0

sin φ 0

cosφ

0

0

0

0

1

]

● Wokół osi Y:

O

z

=

[

cosφ −sin φ 0 0

sin φ

cosφ

0 0

0

0

1 0

0

0

0 1

]

● Wokół osi Z:

Obrót  względem  dowolnej  osi  realizuje  się  poprzez  rozkład  na  obroty 

cząstkowe wokół osi X, Y i Z.

Transformacje 3D – Obrót

3) Obrót:

background image

 

 

R=

[

1 0

0

0

0 1

0

0

0 0 −1 0
0 0

0

1

]

4) Zmiana orientacji układu współrzędnych z lewoskrętnego

na prawoskrętny i vice versa:

Transformacje 3D

background image

 

 

Rzutowanie  pozwala  pokazać  trójwymiarową  scenę  na  płaskim  ekranie 

monitora. W grafice 3D stosuje się dwa podstawowe rodzaje rzutowania:

● Perspektywiczne (środkowe) – nie zachowuje kątów

i równoległości linii. Obiekty położone dalej są pozornie mniejsze.

● Równoległe – zachowuje kąty i równoległość linii.

Rzutowanie

background image

 

 

Rzutowanie  równoległe  przenosi  wszystkie  punkty  sceny  równolegle  na 

płaszczyznę rzutowania.

Płaszczyzna 

rzutowania (ekran)

Z

P

1

P

2

P

1

'

P

2

'

Obserwator

Jeżeli obserwator znajduje się na osi Z
rzutowanie  równoległe  polega  na 
usunięciu  współrzędnej   wszystkich 
punktów sceny.

Rzutowanie równoległe

background image

 

 

Obserwator

Płaszczyzna 

rzutowania (ekran)

Z

P

1

P

2

P

1

'

P

2

'

Obiekty  położone  dalej  od  obserwatora  wydają  się  mniejsze.  Dzięki 

zachowaniu  perspektywy  rzutowanie  takie  daje  bardziej  realistyczne  efekty 
niż rzutowanie równoległe. 

Dla obserwatora na osi Z w odległości d od 

środka układu współrzędnych:

x ' =

xd

zd

y ' =

yd

zd

Rzutowanie perspektywiczne

background image

 

 

Równanie płaszczyzny w przestrzeni euklidesowej 3D:

ax bycz =0

det

[

x

x

1

x

2

x

3

y y

1

y

2

y

3

z

z

1

z

2

z

3

1

1

1

1

]

=

0

Trzy punkty (które nie leżą na jednej prostej) określają płaszczyznę z pomocą 
równania:

Równanie płaszczyzny

background image

 

 

Trzy płaszczyzny (nie posiadające wspólnej prostej) przecinają się w punkcie 

o współrzędnych będących minorami wyznacznika*:

det

[

a a

1

a

2

a

3

b b

1

b

2

b

3

c

c

1

c

2

c

3

d d

1

d

2

d

3

]

=

0

* rozwinięcie Laplace'a względem pierwszej kolumny

Przecięcie płaszczyzn

background image

 

 

Prosta w przestrzeni 3D może być określona przez:

● Przecięcie dwóch płaszczyzn
● Dwa punkty

Równanie  prostej  przechodzącej  przez 

dwa punkty P

1

 i P

(postać kanoniczna):

x

1

x

2

x

1

=

y− y

1

y

2

y

1

=

z− z

1

z

2

z

1

Prosta  przechodząca  przez  punkt 

P=(x

, y

, z

) i równoległa do wektora

U = [ x

, y

, z

 ]:

xx

P

x

U

=

y− y

P

y

U

=

z

P

z

U

Proste

background image

 

 

Parametryczna postać równania prostej:

Wektor kierunkowy U = [x

, y

, z

] przechodzi przez punkt A = (x

, y

, z

):

x=x

A

tx

U

yy

A

ty

U

z=z

A

tz

U

Parametr osiąga dowolne wartości ze zbioru liczb rzeczywistych.

Proste

background image

 

 

Punkt: 

P = (x

, y

, z

)

Płaszczyzna:

Ax + By + Cz + D = 0 

Odległość punktu P od płaszczyzny:

=

Ax

p

By

p

Cz

p

D

A

2

B

2

C

2

Odległość punktu od płaszczyzny

background image

 

 

Wartość d wyznacznika określa orientację układu punktów (wektorów):

=det

[

x

1

x

2

x

3

y

1

y

2

y

3

z

1

z

2

z

3

]

Trzy punkty (wektory) P1P2 i P3 tworzą względem początku układu

współrzędnych układ:

● prawoskrętny, jeżeli d > 0
● lewoskrętny, jeżeli d < 0

Orientacja układu punktów

background image

 

 

Założenie:  Płaszczyzna  określona  jest  przez  trzy  punkty,  uporządkowane 

prawoskrętnie względem początku układu współrzędnych.

Punkt P = (X, Y, Z)

Punkty P1P2 i P3 definiują płaszczyznę:

D=det

[

X

x

1

x

2

x

3

Y

y

1

y

2

y

3

Z

z

1

z

2

z

3

1

1

1

1

]

D > 0 – punkt P leży po tej samej stronie płaszczyzny

co początek układu współrzędnych;

D < 0 – punkt P leży po przeciwnej stronie;
D  = 0 – punkt P leży na płaszczyźnie.

Położenie punktu względem płaszczyzny


Document Outline