Geometriai transzformációk

Post on 25-Jan-2016

35 views 3 download

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

Transcript of Geometriai transzformációk

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

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

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

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

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

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

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

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

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

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

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); }};

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

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

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

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

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

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;

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

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

Műveletek sorrendje

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

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

x

y

x

y

β

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

x

y

β

x

y

β

h

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

α

β

y

α

β

y

h

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

α

β

x

y

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 )

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)

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

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

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

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

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

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

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

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

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

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]

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

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ó!

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 =

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)

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:

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

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

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

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

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

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

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

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

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

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

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

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

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:

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

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ó

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)

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

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

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()

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);

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);

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

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])

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

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

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)

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.