68
Számítógépes grafika, PPKE-ITK, Benedek Csaba, 2010 Geometriai transzformációk

Geometriai transzformációk

  • Upload
    keilah

  • View
    33

  • Download
    3

Embed Size (px)

DESCRIPTION

Geometriai transzformációk. Számítógépes grafika feladata. illúzió. modellezés. számok. Virtuális világ modell. képszintézis. számítás. Metafórák: optika 2D rajzolás festés analógiák. Képpontok: vörös kék zöld. mérés. Mindent számmal. axiómák. pont. számok. sík. - PowerPoint PPT Presentation

Citation preview

Page 1: Geometriai transzformációk

Számítógépes grafika, PPKE-ITK, Benedek Csaba, 2010

Geometriai transzformációk

Page 2: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Számítógépes grafika feladata

képszintézis

Virtuális világmodell

modellezés

Metafórák:• optika• 2D rajzolás• festés• analógiák

számítás

mérés

illúzió

Képpontok:• vörös• kék• zöld

számok

Page 3: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Mindent számmal

geometria

pont

síkegyenes

metszi

illeszkedik

axiómák

algebra

számok

műveletek

egyenletmegfeleltetés

függvény

Page 4: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Koordinátageometriai gyorstalpaló -Pontok, alakzatok megadása

Mindent számmal! Koordináta rendszer Koordináták megadása

Koordináta rendszerek Descartes Polár Homogén

Page 5: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Koordináta rendszerek

x

y

r

Xh

Yh

w

Descartes Polár BaricentrikusHomogén

1

1

Page 6: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Pontfüggvények: Mozgatás Vektor = eltolás: v Iránya és hossza (|v|) van Helyvektor

De vektor ≠ pont !!! Vektorműveletek

v = v1 + v2 (kommutatív, asszoc) v1 = v - v2 (összeadásnak van inverze) v1 = av (összeadásra disztributív)

origó

pont

helyvektor

v1 v2

vav

Page 7: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Skaláris szorzás Definíció

v1v2 = |v1||v2|cos Jelentés

Egyik vektor vetülete a másikra x másik hossza Tulajdonságok

Kommutatívv1v2 = v2v1

Összeadással disztributív v3(v2+v1) = v3v2 + v3v1

vv = |v|2

v1

v2

|v1|cos

v1

v2

|v1|cos

v3

Page 8: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

VektoriVektoriális szorzásális szorzás Definíció

– |v1 v2| = |v1||v2|sin – Merőleges, jobbkéz szabály

Jelentés– Paralelogramma területe, síkjára merőleges– (Egyik vektor vetülete a másikra merőleges síkra + 90 fokos

forgatás) x másik hossza

Tulajdonságok – Alternáló

v1 v2 = - v2 v1

– Összeadással disztributív v3 (v2+v1) = v3 v2 + v3 v1

v1

v2

|v1|cos

v1 v2

v2v1

|v1|sin

v1v2

90 fok

Page 9: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Descartes koordinátarendszer

x i

y j

origó i

jv = xi + yj

Egyértelmű (x = vi, y = vj) Műveletek koordinátákban

Összeadás: v1 + v2 = (x1+x2)i + (y1+y2)j

Skaláris szorzás: v1 v2 = (x1i + y1 j) (x2i + y2 j) = (x1 x2 + y1y2)

Vektoriális szorzás:v1 v2 = (x1i + y1 j + z1k) (x2i + y2 j + z2k) = (y1z2 – y2z1) i + (x2z1 – x1z2) j + (x1y2 – y1x2)k

Abszolút érték:|v| = vv = x2 + y2 + z2

i j kx1 y1 z1

x2 y2 z2

Page 10: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Vektor és Pont nem ugyanaz!

2D: vektor (x, y) Pont (x, y) 3D: vektor (x, y, z) Pont (x, y, z) Műveletek:

Vektor + Vektor = Vektor Pont + Vektor =Pont (eltolás)

Vektor – Vektor = Vektor Pont – Pont = Vektor

Vektor Vektor = Vektor

Vektor Vektor = Skalár

Vektor * Skalár = Vektor

Page 11: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Vektor osztálystruct Vector { float x, y, z;

Vector(float x0, float y0, float z0) { x = x0; y = y0; z = z0;

} Vector operator*(float a) {

return Vector(x * a, y * a, z * a); } Vector operator+(Vector& v) { return Vector(x + v.x, y + v.y, z + v.z); } Vector operator-(Vector& v) { return Vector(x - v.x, y - v.y, z - v.z); } float operator*(Vector& v) {

return (x * v.x + y * v.y + z * v.z); } Vector operator%(Vector& v) {

return Vector(y*v.z-z*v.y, z*v.x - x*v.z, x*v.y-y*v.x); } float Length() { return sqrt(x * x + y * y + z * z); }};

Page 12: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

2D egyenes

n(r – r0) = 0

nx (x – x0) + ny (y – y0) = 0

ax + by + c = 0

(x, y, 1) (a, b, c) = 0

yr0

r

v irányvektor

n normálvektor

r = r0 + v t, t [-∞,∞]

x = x0 + vx ty = y0 + vy t

x

Page 13: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

SSíkík

n(r – r0) = 0

nx (x – x0) + ny (y – y0) + nz (z – z0) = 0

ax + by + cz + d = 0

(x, y, z, 1) (a, b, c, d) = 0

y

n normálvektor

z

x

r0

r

Page 14: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

… és akkor tényleg folytassuk a transzformációkkal Affin transzformáció:

Párhuzamos egyeneseket párhuzamos egyenesekbe viszi

Lineáris transzformációk ilyenek

Page 15: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Elemi affin transzformációk

Eltolás: r’ = r + p Skálázás: x’= Sx x; y’= Sy y;

Forgatás: x’= cosφ x- sinφ y; y’= sinφ x+ cosφ y;

r’ = rSx 0

0 Sy

r’ = rcos φsin φ

-sin φ cos φ

Fix pont: origó

Fix pont: origó

Megj: r itt sorvektor

Page 16: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Elemi transzformációkElemi transzformációk

Nyírás: x’= x; y’= y + a x;

Tükrözés:

r’ = r1 a

0 1

r’ = r10

0 -1

Page 17: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Transzformáció fix pontja: pivot point: (xp, yp)

Skálázás:x’= Sx (x-xp) + xp; y’= Sy (y-yp) + yp;

Forgatás:x’= (x-xp)*cos - (y-yp)* sin + xp;y’= (x- xp)*sin + (y- yp)* cos + yp;

Page 18: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Alapműveletek: eltolás origó fixpontú skálázás origó középpontú forgatás

Modellezési feladatα

vméret: s=1.5x

Alap objektummodell

Várt elhelyezés

Page 19: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Műveletek sorrendje

Page 20: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Modellezés: 2 csuklójú robotkar

α

β

yh

w

Page 21: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

x

y

x

y

β

Page 22: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

x

y

β

x

y

β

h

Page 23: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

α

β

y

α

β

y

h

Page 24: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

α

β

x

y

Page 25: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Összetett transzformáció

Affin transzformáció: r’ = r A + p A: lineáris transzformáció

forgatás, skálázás, tükrözés, nyírás, stb.

p: eltolásAmíg lineáris transzformáció:

konkatenáció r’ = (...(r A1) A2)... An) = r (A1A2... An )

Page 26: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Homogén koordinátás transzformációk

Eltolás nem fér bele a 2x2-es mátrixba Dolgozzunk 3x3-as mátrixokkal

[r’, 1] = [r, 1] = [r A + p, 1]a11 a12 0

a21 a22 0

p1 p2 1

A

p

[r’,1] = (...([r,1] T1) T2)... Tn) = [r,1] (T1T2... Tn)

Page 27: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Transzformációk projektív geometriai megközelítése

Homogén koordináták – nem csak az eltolás egységes kezeléséért!

3D grafika központi eleme a 3D-s világ 2D-s megjelenítése Vetítés, mint dimenziócsökkentő művelet Centrális (középponti) vetítés

Az euklideszi térben nem minden pont vetíthető centrálisan -> euklideszi helyett un. projektív geometria

Page 28: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Képsíkkal párhuzamos vetítősugarakkal jellemzett pontok végtelenbe tűnnek C. projekció nem minden euklideszi pontot visz euklideszi pontba –

projektív geometria: tömjük be a lyukakat!

Centrális projekció

tárgysík

képsík

Vetítési középpont

Eltűnő egyenesIdeálispontok

Page 29: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Projektív geometria Euklideszi geometria

2 pont meghatároz egy egyenest 2 különböző egyenes legfeljebb 1 pontban metszi egymást 1 ponton keresztül pontosan 1 egyenes megy át, amely nem metsz egy, a

pontra nem illeszkedő másik egyenest (párhuzamosság) centrális projekcióra lyukas (ideális pontok) algebrai alap: Descartes koordináta rendszer

Projektív geometria Projektív sík = Euklideszi sík pontjai + ideális pontok Minden egyeneshez vegyünk hozzá egy ideális pontot úgy, hogy két

egyenes akkor kapja u.a. pontot, ha párhuzamos Az egyenesek halmazát egészítsük ki az ideális pontokat tartalmazó

egyenessel 2 pont meghatároz egy egyenest 2 különböző egyenes pontosan 1 pontban metszi egymást

algebrai alap: homogén koordináták

Page 30: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Homogén koordináták

Xh

Yh

w

Homogén

Szemléltetés: mechanikai rendszer súlypontja

Összsúly: h = Xh+ Yh + w

Pont homogén koordinátái:

[Xh ,Yh ,h]

[0,0,0] nem pont

P2

P1P3

Ha az összsúly h ≠ 0 a súlypont Ps euklideszi pont:Xh P1+Yh P2 +w P3

Xh+ Yh + wPs=

[Xh ,Yh ,h] és [λXh , λYh , λ h] súlypontja ugyanaz!

Ps

Page 31: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Homogén-Descartes kapcsolat affin pontokra

Xh

Yh

w

[0,0][1,0]

[0,1]

r(Xh ,Yh ,h) = Xh [1,0]+Yh [0,1]+w[0,0]

h

r(Xh ,Yh ,h) = ( , )Xh

hYh

h

x = Xh

hYh

hy =

•Keressük egy adott affin (h ≠ 0) projektív térbeli pont megfelelőjét az euklideszi térben (azaz a Descartes koordinátarendszerben)•Súlypont analógia: tegyük a súlyokat i=[1 0], j=[0 1] és 0=[0,0] pontokba, és olvassuk ki a súlypont koordinátáit

Page 32: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Következmények

Minden affin ponthoz van: [Xh ,Yh ,h] (x, y) [x, y,1]

Ha h 0, akkor [Xh ,Yh ,h] affin pont

( , )Xh

hYh

h

Page 33: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Mi az ideális pont?h=0

x

y

(x,y,1)(2x,2y,1) = (x,y,1/2)

(x,y,1/3)

(x,y,0)

),,(lim~)0,,( 1nn yxyx

Page 34: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Egyenes egyenlete

0 cybxa

átírás homogén koordinátás alakra:

0ch

Yb

h

Xa hh 0 hcYbXa hh

(a,b,c): egy egyenes; (Xh, Yh,h) egy pont

Dualitás: pont és egyenes formailag analóg – az összespontokra érvényes tétel igaz lesz az egyenesekre

Page 35: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Párhuzamos egyenesek metszéspontja Párhuzamos egyenesek metszéspontja Descartes koordinátákkalDescartes koordinátákkal

a1 x + b1 y +c1 = 0a2 x + b2 y +c2 = 0

x, y

a x + b y + c1 = 0a x + b y + c2 = 0

c1 - c2 = 0 nincs megoldás

a1 /b1 /≠ a2 /b2

Page 36: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Descartes: a x + by +c = 0a Xh/h + b Yh/h +c = 0

Homogén: a Xh + b Yh +c h = 0

a Xh + b Yh + c1 h = 0a Xh + b Yh + c2 h = 0

(c1 - c2) h = 0 h = 0, Xh = b, Yh = -a

Párhuzamos egyenesek metszéspontja Párhuzamos egyenesek metszéspontja homogén koordinátákkalhomogén koordinátákkal

[b ,-a ,0]

Page 37: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Beágyazott modell

[Xh ,Yh ,h]

Xh

Yh

h

x

y1

[Xh ,Yh ,0]

[ , ]Xh

hYh

h(x, y) =

[0,0,0] nem pont

[Xh ,Yh ,h]·a u.a. pont

3D euklideszi tér

2D projektív sík

Page 38: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Projektív egyenes paraméteres egyenlete

[X1 ,Y1 ,h1]

Xh

Yh

h

[X2 ,Y2 ,h2]

[X(t) ,Y(t) ,h(t)]=[X1 ,Y1 ,h1]·t + [X2 ,Y2 ,h2]·(1-t)

Szakasz: Konvex kombináció!

Page 39: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Homogén lineáris transzformációk

Euklideszi sík affin transzformációi:

[x’, y’] = [x, y] A + p Homogén koordináták lineáris függvényei:

[Xh’ ,Yh’ ,h’] = [Xh,Yh,h] T + p Homogén lineáris transzformációk bővebbek:

a11 a12 0

a21 a22 0

p1 p2 1

T =

Page 40: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Homogén lineáris transzformációk tulajdonságai Pontot-pontba, egyenest-egyenesbe

(pontba), konvex kombinációkat, konvex kombinációkba visznek át

Példa: egyenest egyenesbe:

[X(t) ,Y(t) ,h(t)]=[X1 ,Y1 ,h1]·t + [X2 ,Y2 ,h2]·(1-t)

P(t) = P1·t + P2·(1-t) // · T

P*(t) = P(t)·T = (P1·T) ·t + (P2·T) ·(1-t)

Page 41: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Példa: Euklideszi geometriában nem lineáris transzformáció: Q pont vetítése e egyenesre

10 p

0 1 q

0 0 0[x, y, 1] [ x, y, px+qy]

xpx+qy

ypx+qy

Q=[x, y]

Q’=[x’, y’]

e: px+qy=1

px’+qy’=1

e

x’y’

xy=Q’ a OQ egyenesen van

O

Q’ az e egyenesen van

xpx+qy

y’ =y

px+qyy’ =

Ugyanez mátrixokkal:

Page 42: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

x

y

(x,y,1)(2x,2y,1) = (x,y,1/2)

(x,y,1/3)

(x,y,0)

(-x,-y,1)=(x,y,-1)

(-2x,-2y,1)=(x,y,-1/2)

(x,y,0)

Projektív egyenes: körszerű topológia

Ideális pont

Page 43: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Veszélyek: átfordulási probléma

=Projektív egyenes (topológia)

Ideális pont

Szakasz ?????

e

e

Page 44: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

A projektív tér, 3D pontok homogén koordinátái

Yh

Zh

w

Homogén

Összsúly: h = Xh+ Yh + Zh + w

Pont homogén koordinátái:

[Xh ,Yh ,Zh,h]

Xh

Page 45: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

A projektív tér egyenesei és síkjai

Egyenes:

Sík:

[X(t),Y(t),Z(t),h(t)]=[X1,Y1,Z1,h1]·t + [X2 ,Y2,Z2,h2]·(1-t)

Euklideszi, Descartes koord: nx x + ny y + nz z + d = 0Euklideszi, homogén koord: nx Xh/h + ny Yh/h + nz Zh/h +d = 0

Projektív: nx· Xh + ny ·Yh + nz · Zh +d · h = 0

[Xh ,Yh ,Zh,h]· = 0

nx

ny

nz

d

Page 46: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Invertálható homogén lineáris transzformációk síkot síkba visznek át

P·NT = 0

TP P* = P·T

T-1

(P*·T-1)·NT = 0P*·(T-1·NT) = 0P*·(N·(T-1)T)T = 0P*·N*T = 0

N*=N·(T-1)T Inverse-transpose

Page 47: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Projektív geometria a Projektív geometria a számítógépes grafikábanszámítógépes grafikában

Világ:Euklideszi tér Projektív tér

Projektív térKép:

Euklideszi tér

[x,y,z] (x, y,z,1)(Xh ,Yh ,Zh ,h) (T1T2... Tn)

[ , , ]Xh

hYh

hZh

h

Page 48: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Koordináta-rendszer transzformációk

Analógia a műtermi fényképkészítés és az OpenGL képalkotás között Fényképezőgép elhelyezése, ráirányítása a

lefényképezendő térrészre - nézőpontba transzformálás

A lefényképezendő objektumok elhelyezése a kívánt pozícióba –modell-transzformáció

A megfelelő lencse kiválasztása, zoom beállítása – vetítési transzformáció

Papírkép a negatívról – képmező transzformálás

Page 49: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

OpenGL transzformációk Homogén lineáris transzformáció (p itt

oszlopvektor)

p’=Mp Transzformációk kompozíciója

p’=M1p és p’’= M2p’ → p’’=M2M1p

a közös transzformáció M2M1

Page 50: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

OpenGL csővezeték

Virtuális világKamera transzformáció,illumináció

Perspektívtranszformáció +Vágás homogén koordinátákban

1.2.

Képernyő transzf+Raszterizáció+interpolációmegjelenítés

szín mélység

MODELVIEW PROJECTION

Page 51: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Transzformációk

xyzh

Modelviewmatrix

Stack

Projectionmatrix

Stack

Homogénosztás

Viewporttranszf.

window

Lokálismod. kamera homogén

Normalizáltképernyő

illumináció

vágás Backface cullingRaszterizáció,textúrázás

modellező, kamera

(nyírás), normalizáló perspektív

Page 52: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

OpenGL transzformációs mátrixok kezelése

Műveletek: aktuális mátrix kijelölése, betöltése, vagy megszorzása jobbról egy új mátrixszal

Page 53: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

OpenGL transzformációs mátrixok kezelése void glMatrixMode(GLenum mode);

Állapotváltozó: megadjuk, hogy melyik mátrixot akarjuk a következő parancsokkal állítani

mode lehet: GL_MODELVIEW – modell-nézeti transzformáció (objektumok

és a kamera elhelyezkedése és iránya) GL_PROJECTION – kamera modell kiválasztás és fókuszálás GL_TEXTURE – textúra

glLoadIdentity(); aktuális mátrix beállítása az egységmátrixra

Page 54: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Mátrix betöltése, szabad szorzása void glLoadMatrix{fd}(const TYPE *m);

m pointer által címzett 16 elemű vektor elemeit betölti az aktuális mátrixba oszlopfolytonosan

void glMultMatrix{fd}(const TYPE *m); m pointer által címzett 16 elemű vektor elemeiből

képzett mátrixszal szorozza az aktuális mátrixot

m1m5 m9 m13m2 m6 m10 m14m3 m7 m11 m15m4 m8 m12 m16

M:

Page 55: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

OpenGL transzformációs mátrixok kezelése void glTranslate{fd}(TYPE x, TYPE y, TYPE z) előállítja az [x,y,z,1]T vektorral való eltolás mátrixát és

megszorozza vele (jobbról) a kurrens mátrixot void glRotate{fd}(TYPE angle, TYPE x, TYPE y, TYPE z) előállítja az origón áthaladó, [x,y,z]T irányvektorú

egyenes körül angle szöggel elforgató mátrixot és megszorozza vele a kurrens mátrixot. A szög előjeles, fokban kell megadni

void glScale{fd}(TYPE x, TYPE y, TYPE z); - skálázás

Page 56: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Nézőpont és nézeti irány beállítása Alapértelmezés: nézőpont a modellkoordináta-

rendszer origója, nézési irány a negatív z-tengely Új nézőpont megadása:

OpenGL: az objektumot toljuk/forgatjuk ellentétes irányban (glTranslate*, glRotate*)

GLU: a nézőpont és a kamera nézet iránya közvetlenül is megadható

Page 57: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Nézőpont és nézeti irány beállítása void gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx, GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz)

Page 58: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

OpenGL transzform. kompozíció Forgatás (R) majd eltolás (T) elvégzése

p’=Rp és p’’= Tp’ → p’’=TRp a közös transzformáció TR: OpenGL mátrixszorzás jobbról történik, ezért a

mátrixokat a végrehajtás sorrendjével ellentétes sorrendben kell megadni:(1) lépés glLoadIdentity();

M:=E egységmátrix

(2) lépés glTranslated(x,y,z);

M:=M∙T=E∙T = T

(3) lépés glRotated(angle,x,y,z);

M:=M∙R=E∙T∙R = TR

Page 59: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

MODELVIEW Transzformáció

sorrend

Kamera koordinátarendszer

glMatrixMode(GL_MODELVIEW);

glLoadIdentity( );gluLookAt(eyex, eyey, eyez, vrpx, vrpy, vrpz,upx, upy, upz); //VIEW

glTranslatef(px, py,pz); //MODELglRotatef(ang, axisx,axisy,axisz); glScalef(sx, sy, sz);

glMultMatrixf( mat[4][4] );

ux uy uz 0vx vy vz 0wx wy wz 0 eye 1

-1

eye

u

v

w

Page 60: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

OpenGL vetítési transzfromációk Centrális vetítés (valószerű képek):

glFrustum() glPerspective()

Merőleges vetítés (méret/méretarány helyes képek): glOrtho() glOrtho2D()

Page 61: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Projektív transzformáció void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far);

Page 62: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Projektív transzformáció void gluPerspective(GLdouble fovy, GLdouble aspect, GLdouble near, GLdouble far);

Page 63: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Merőleges vetítés void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far); a nézőpont helye itt közömbös, csak a nézési

irány számít

Page 64: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

2D alakzatok ábrázolása void gluOrtho2D(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top); 2D: nem kell közeli és távoli vágósíkot megadni (automatikusan

[-1,1])

Page 65: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

PROJECTION Transzformáció

glMatrixMode(GL_PROJECTION); glLoadIdentity( );

gluPerspective(fov, asp, fp, bp);

1/(tg(fov/2)·asp) 0 0 00 1/tg(fov/2) 0 00 0 -(fp+bp)/(bp-fp) -10 0 -2fp*bp/(bp-fp) 0

Kamera koordinátarendszer Homogén

(1, 1, 1, 1)

(-1,-1,-1, 1)

fp bp

Projekció után homogén osztás: normalizált koordináták

Page 66: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Képmező transzformáció void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); képmező:

téglalap alakú rajzterület a képernyőn oldalai párhuzamosak az ablak oldalaival (x,y): a képmező bal alsó sarka width, height: a képmező szélessége, hosszúsága

Page 67: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Képernyő Transzformáció

glViewport( 0, 0, width, height );

Normalizált képernyő:Vágás és homogén osztás után

1(-1,-1,-1)

(1, 1, 1)

Page 68: Geometriai transzformációk

Számítógépes Grafika 2010, PPKE ITK, Benedek CsabaTanagyag forrás ® Szirmay-Kalos László, BME

Aktuális transzf. mentése és újra töltése void glPushMatrix(void);

A glMatrixMode() paranccsal beállított kurrens verem minden elemét egy szinttel lejjebb tolja. A legfelső (kurrens) mátrix a második mátrix másolata lesz

void glPopMatrix(void); A glMatrixMode() paranccsal beállított kurrens verem

legfelsőbb elemét eldobja, és minden további elemet egy szinttel feljebb tol.