56
Geometrijske transformacije Patricio Buli´ c Faculty of Computer Science and Informatics University of Ljubljana Raˇ cunarska grafika, Banja Luka, 2011 P. Buli´ c (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 1 / 42

geometrijske transformacije

Embed Size (px)

DESCRIPTION

geometrijske_transformacije

Citation preview

  • Geometrijske transformacije

    Patricio Bulic

    Faculty of Computer Science and InformaticsUniversity of Ljubljana

    Racunarska grafika, Banja Luka, 2011

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 1 / 42

  • Sadraj1 2D Geometrijske transformacije

    2D Translacija2D Rotacija2D Skaliranje

    2 2D Geometrijske transformacije u homogenim koordinatamaHomogene koordinate2D Translacija u homogenim koordinatama2D rotacija u homogenim koordinatama2D skaliranje u homogenim koordinatama

    3 3D geometrijske transformacije3D translacija u homogenim koordinatama3D rotacija u homogenim koordinatama

    4 Programski kod5 Rotacija koordinatnog sustava6 Sloene transformacije7 Rotacija oko proizvoljno odabrane osi8 Zakljucak

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 2 / 42

  • Geometrijske transformacije

    geometrijske transformacije se upotrabljavaju za promjenupoloaja objekata i kamere u prostoru, njihove velicine i sl.upotrebljavaju se i u postupcim 2D i 3D modeliranja i prikazivanjaza pocetak cemo obraditi samo osnovne geometrijsketransformacije : translacija (pomak), rotacija, skaliranjesa njima objekte na slici pomicemo, rotiramo, skaliramo, ...

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 3 / 42

  • Geometrijske transformacije

    geometrijske transformacije se upotrabljavaju za promjenupoloaja objekata i kamere u prostoru, njihove velicine i sl.upotrebljavaju se i u postupcim 2D i 3D modeliranja i prikazivanjaza pocetak cemo obraditi samo osnovne geometrijsketransformacije : translacija (pomak), rotacija, skaliranjesa njima objekte na slici pomicemo, rotiramo, skaliramo, ...

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 3 / 42

  • Geometrijske transformacije

    geometrijske transformacije se upotrabljavaju za promjenupoloaja objekata i kamere u prostoru, njihove velicine i sl.upotrebljavaju se i u postupcim 2D i 3D modeliranja i prikazivanjaza pocetak cemo obraditi samo osnovne geometrijsketransformacije : translacija (pomak), rotacija, skaliranjesa njima objekte na slici pomicemo, rotiramo, skaliramo, ...

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 3 / 42

  • Geometrijske transformacije

    geometrijske transformacije se upotrabljavaju za promjenupoloaja objekata i kamere u prostoru, njihove velicine i sl.upotrebljavaju se i u postupcim 2D i 3D modeliranja i prikazivanjaza pocetak cemo obraditi samo osnovne geometrijsketransformacije : translacija (pomak), rotacija, skaliranjesa njima objekte na slici pomicemo, rotiramo, skaliramo, ...

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 3 / 42

  • Geometrijske transformacije

    geometrijske transformacije se upotrabljavaju za promjenupoloaja objekata i kamere u prostoru, njihove velicine i sl.upotrebljavaju se i u postupcim 2D i 3D modeliranja i prikazivanjaza pocetak cemo obraditi samo osnovne geometrijsketransformacije : translacija (pomak), rotacija, skaliranjesa njima objekte na slici pomicemo, rotiramo, skaliramo, ...

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 3 / 42

  • 2D Translacija

    r

    = r + rT

    [x

    y

    ]=

    [xy

    ]+

    [xy

    ]P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 4 / 42

  • 2D Rotacija oko koordinatnog ishodita (pocetka)

    x

    = r cos(+ ) = r cos cos r sin sin y

    = r sin(+ ) = r cos sin + r sin cos

    Vrijedi: r = (x , y )T , r = (x , y)T

    Dogovor: pozitivan kut rotacije je suprotan smjeru kazaljke na satu

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 5 / 42

  • 2D Rotacija oko koordinatnog (pocetka)

    x

    = x cos y sin y

    = x sin + y cos

    [x

    y

    ]=

    [cos sin sin cos

    ][xy

    ]Matrica:

    R =[cos sin sin cos

    ]je rotacijska matrica.

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 6 / 42

  • 2D Skaliranje

    x

    = x sx y = y sy[x

    y

    ]=

    [sx 00 sy

    ][xy

    ]Matrica:

    S =[sx 00 sy

    ](1)

    je matrica skaliranja.Negativni predznak faktora sx ili sy daje zrcaljenje oko koordinatne osiX ili Y.

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 7 / 42

  • Homogene koordinate

    Cilj: eljeli bi sve transformacije opisati sa matricom istog reda. Takobi za bilo koju geometrijsku transformaciju upotrijebili istu operaciju -mnoenje matrice i vektora. Na taj nacin bi graficka programskaknjinica imala samo jednu funkciju za bilo koju geometrijskutransformaciju. Matrica transformacije i vektor tacke (pozicije) bi u tomslucaju bili samo ulazni parametri (argumenti funkcije).Kod homogenih koordinata svakoj tacki P(x , y) u 2D prostorudodajemo trecu koordinatu: P(x , y ,w).Dva poziciona vektora (x , y ,w) i (x

    , y,w) u homogenim

    koordinatama reprezentuju istu tacku, ako i samo ako za h 6= 0 vrijedi:

    (x, y,w) = (h x ,h y ,h w)

    Pazi: koordinata (0,0,0) nije dozvoljena!!!Sve te trojke (h x ,h y ,h w) cine pravac u 3D prostoru.

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 8 / 42

  • Homogene koordinate

    Ako koordinate (x , y ,w) podjelimo sa w (kaemo da ihhomogeniziramo), dobijemo tacku (x/w , y/w ,1), koja lei na ravniz = 1.ta time dobijamo? Geometrijski gledano, ako postavimo da je w = 1smo tacke iz 3D zapisali sve na istoj ravni z = 1 i time ih postavili u 2D.To su tzv. homogene koordinate.Sada moemo svaku opisanu geometrijsku transformaciju zapisati kaoprodukt matrice i vektora.

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 9 / 42

  • 2D Translacija

    x y 1

    =1 0 x0 1 y

    0 0 1

    xy

    1

    ili u matricnom obliku:

    P

    = T(x ,y) P

    gdje je matrica T(x ,y) matrica translacije.

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 10 / 42

  • 2D Rotacija

    x y 1

    =cos sin 0sin cos 0

    0 0 1

    xy

    1

    ili u matricnom obliku:

    P

    = R() Pgdje je matrica R() matrica rotacije.

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 11 / 42

  • 2D skaliranje

    x y 1

    =sx 0 00 sy 0

    0 0 1

    xy

    1

    ili u matricnom obliku:

    P

    = S(sx , sy ) Pgdje je matrica S(sx , sy ) matrica rotacije.

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 12 / 42

  • Transformacije u 3D

    geometrijske transformacije u 3D su formalno slicnetransformacijam u 2Ddodaje se jo jedna jednacina za Zmatrice geometrijskih transformacija postaju reda 4x4

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 13 / 42

  • Transformacije u 3D

    geometrijske transformacije u 3D su formalno slicnetransformacijam u 2Ddodaje se jo jedna jednacina za Zmatrice geometrijskih transformacija postaju reda 4x4

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 13 / 42

  • Transformacije u 3D

    geometrijske transformacije u 3D su formalno slicnetransformacijam u 2Ddodaje se jo jedna jednacina za Zmatrice geometrijskih transformacija postaju reda 4x4

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 13 / 42

  • Transformacije u 3D

    geometrijske transformacije u 3D su formalno slicnetransformacijam u 2Ddodaje se jo jedna jednacina za Zmatrice geometrijskih transformacija postaju reda 4x4

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 13 / 42

  • 3D translacija

    x

    y

    z

    1

    =

    1 0 0 x0 1 0 y0 0 1 z0 0 0 1

    xyz1

    ili u matricnom obliku:

    P

    = T(x ,y ,z) P

    gdje je matrica T(x ,y ,z) matrica translacije.PAZI: koordinatni pocetak (0,0,0,1) se pomjera u tacku(x ,y ,z,1)

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 14 / 42

  • Rotacije u 3D

    sjetimo se: u 2D postoji samo jedna elementarna rotacija - okokoordinatnog pocetkau 3D imamo 3 elementarne rotacije oko koordinatnog pocetka -oko svake koordinatne osi!pozitivan smjer rotacije odreden je pravilom desne ruke - akogledamo u os, onda pozitivno rotiramo u suprotnom smjeru odkazaljke na satu

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 15 / 42

  • Rotacije u 3D

    sjetimo se: u 2D postoji samo jedna elementarna rotacija - okokoordinatnog pocetkau 3D imamo 3 elementarne rotacije oko koordinatnog pocetka -oko svake koordinatne osi!pozitivan smjer rotacije odreden je pravilom desne ruke - akogledamo u os, onda pozitivno rotiramo u suprotnom smjeru odkazaljke na satu

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 15 / 42

  • Rotacije u 3D

    sjetimo se: u 2D postoji samo jedna elementarna rotacija - okokoordinatnog pocetkau 3D imamo 3 elementarne rotacije oko koordinatnog pocetka -oko svake koordinatne osi!pozitivan smjer rotacije odreden je pravilom desne ruke - akogledamo u os, onda pozitivno rotiramo u suprotnom smjeru odkazaljke na satu

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 15 / 42

  • Rotacije u 3D

    sjetimo se: u 2D postoji samo jedna elementarna rotacija - okokoordinatnog pocetkau 3D imamo 3 elementarne rotacije oko koordinatnog pocetka -oko svake koordinatne osi!pozitivan smjer rotacije odreden je pravilom desne ruke - akogledamo u os, onda pozitivno rotiramo u suprotnom smjeru odkazaljke na satu

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 15 / 42

  • 3D rotacija oko osi Z

    x

    y

    z

    1

    =

    cos sin 0 0sin cos 0 0

    0 0 1 00 0 0 1

    xyz1

    ili u matricnom obliku:

    P

    = Rz() Pgdje je matrica Rz() matrica translacije oko osi Z.

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 16 / 42

  • 3D rotacija oko osi X

    x

    y

    z

    1

    =

    1 0 0 00 cos sin 00 sin cos 00 0 0 1

    xyz1

    ili u matricnom obliku:

    P

    = Rx() Pgdje je matrica Rx() matrica translacije oko osi X.

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 17 / 42

  • 3D rotacija oko osi Y

    x

    y

    z

    1

    =

    cos 0 sin 00 1 0 0

    sin 0 cos 00 0 0 1

    xyz1

    ili u matricnom obliku:

    P

    = Ry() Pgdje je matrica Ry() matrica translacije oko osi Y.

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 18 / 42

  • 3D skaliranje

    x

    y

    z

    1

    =sx 0 0 00 sy 0 00 0 sz 00 0 0 1

    xyz1

    ili u matricnom obliku:

    P

    = S(sx , sy , sz) P

    gdje je matrica S(sx , sy , sz) matrica skaliranja.

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 19 / 42

  • defs.h

    #ifndef _DEFS_H#define _DEFS_H

    #define ROUND(x) ((int)(x+0.5))

    typedef double MATRIX4X4[4][4];

    typedef struct Point3D{

    double x;double y;double z;double t;

    } POINT3D;

    #define PI 3.14159265

    #endif

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 20 / 42

  • Init

    void tglClearMatrix (MATRIX4X4 m) {

    int i, j;

    for (i = 0; i < 4; i++) {for (j = 0; j < 4; j++) {

    m[i][j] = 0.0;}

    }}

    void tglUnitMatrix (MATRIX4X4 m) {

    tglClearMatrix(m);m[0][0] = 1; m[1][1] = 1; m[2][2] = 1; m[3][3] = 1;

    }

    void tglCloneMatrix (MATRIX4X4 original, MATRIX4X4 clone) {int i, j;

    for (i = 0; i < 4; i++) {for (j = 0; j < 4; j++) {

    clone[i][j] = original[i][j];}

    }

    }

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 21 / 42

  • Produkti

    void tglMatrixMultiply (MATRIX4X4 matrix1, MATRIX4X4 matrix2) {MATRIX4X4 matrix_temp;int i, j, k;

    for (i = 0; i < 4; i++) {for (k = 0; k < 4; k++) {

    for (j = 0; j < 4; j++) {matrix_temp[i][j] +=

    matrix1[i][k] matrix2[k][j];}

    }}

    tglCloneMatrix(matrix_temp, matrix2);}

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 22 / 42

  • Produkti

    void tglMultiplyMatrixPoint (MATRIX4X4 matrix, POINT3D point) {POINT3D point_temp;

    point_temp.x = matrix[0][0] pointx +matrix[0][1] pointy +matrix[0][2] pointz +matrix[0][3] pointt;

    point_temp.y = matrix[1][0] pointx +matrix[1][1] pointy +matrix[1][2] pointz +matrix[1][3] pointt;

    point_temp.z = matrix[2][0] pointx +matrix[2][1] pointy +matrix[2][2] pointz +matrix[2][3] pointt;

    point_temp.t = matrix[3][0] pointx +matrix[3][1] pointy +matrix[3][2] pointz +matrix[3][3] pointt;

    point_temp.t = 1;

    pointx = point_temp.x;pointy = point_temp.y;pointz = point_temp.z;pointt = point_temp.t;

    }

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 23 / 42

  • Transformacije

    void tglTranslate (POINT3D point, POINT3D tp) {MATRIX4X4 m;

    tglUnitMatrix(m);

    m[0][3] = tp.x;m[1][3] = tp.y;m[2][3] = tp.z;

    tglMultiplyMatrixPoint(m, point);}

    void tglScale (POINT3D point, double sx, double sy, double sz) {MATRIX4X4 m;

    tglUnitMatrix(m);

    m[0][0] = sx;m[1][1] = sy;m[2][2] = sz;m[3][3] = 1.0;

    tglMultiplyMatrixPoint(m, point);}

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 24 / 42

  • Rotacije

    void tglRotateZ (POINT3D point, double angle) {

    MATRIX4X4 m;

    tglClearMatrix(m);

    m[0][0] = cos(angle); m[0][1] = -sin(angle);m[1][0] = sin(angle); m[1][1] = cos(angle);m[2][2] = 1; m[3][3] = 1;

    tglMultiplyMatrixPoint(m, point);}

    void tglRotateX (POINT3D point, double angle) {

    MATRIX4X4 m;

    tglClearMatrix(m);

    m[0][0] = 1;m[1][1] = cos(angle); m[1][2] = -sin(angle);m[2][1] = sin(angle); m[2][2] = cos(angle);m[3][3] = 1;

    tglMultiplyMatrixPoint(m, point);}

    void tglRotateY (POINT3D point, double angle) {

    MATRIX4X4 m;

    tglClearMatrix(m);

    m[0][0] = cos(angle); m[0][2] = sin(angle);m[2][0] = -sin(angle); m[2][2] = cos(angle);m[1][1] = 1; m[3][3] = 1;

    tglMultiplyMatrixPoint(m, point);}

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 25 / 42

  • Rotacija koordinatnog sustava

    ~x = (1, 0, 0)

    ~y = (0, 1, 0)

    ~z = (0, 0, 1)

    ~u = (ux , uy , uz )

    ~v = (vx , vy , vz )

    ~n = (nx , ny , nz )

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 26 / 42

  • Rotacija koordinatnog sustava

    Teorem: Matrica

    R =

    ux uy uzvx vy vznx ny nz

    rotira koordinatni sustav UVN u koordinatni sustav XYZ tako dapostane ~u = ~x , ~v = ~y , ~n = ~z.Dokaz:

    R ~uT =ux uy uzvx vy vznx ny nz

    uxuyuz

    ==

    u2x + u2v + u2zvx ux + vy uy + vz uznx ux + ny uy + nz uz

    =~u ~u~u ~v~u ~n

    =10

    0

    = ~xT

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 27 / 42

  • Sloene transformacije

    Rotirati elimo tjelo oko proizvoljno odabrane tacke P.

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 28 / 42

  • Sloene transformacije

    1. Najprije transliramo (pomjeramo) tjelo tako da tacka P dode u koordinatni pocetak : P= T(P) P

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 29 / 42

  • Sloene transformacije

    2. Sada smijemo rotirati tjelo : P

    = R() P

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 30 / 42

  • Sloene transformacije

    3. Na kraju pomaknemo tjelo tako da se tacka P vrati u pocetni poloaj: P

    = T(P) P

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 31 / 42

  • Sloene transformacije

    Sloene geometrijske transformacije sastavljamo iz elementarnihdrugim rijecima: sloena transformacija se dekomponuje naelementarnesloenu transformaciju opisuje matrica koju dobivamo mnoenjemelementarnih matrica: kompozitna matricaredosljed elementarnih transformacija u sloenoj je bitan jermnoenje matrica nije komutativno!!!

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 32 / 42

  • Sloene transformacije

    Sloene geometrijske transformacije sastavljamo iz elementarnihdrugim rijecima: sloena transformacija se dekomponuje naelementarnesloenu transformaciju opisuje matrica koju dobivamo mnoenjemelementarnih matrica: kompozitna matricaredosljed elementarnih transformacija u sloenoj je bitan jermnoenje matrica nije komutativno!!!

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 32 / 42

  • Sloene transformacije

    Sloene geometrijske transformacije sastavljamo iz elementarnihdrugim rijecima: sloena transformacija se dekomponuje naelementarnesloenu transformaciju opisuje matrica koju dobivamo mnoenjemelementarnih matrica: kompozitna matricaredosljed elementarnih transformacija u sloenoj je bitan jermnoenje matrica nije komutativno!!!

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 32 / 42

  • Sloene transformacije

    Sloene geometrijske transformacije sastavljamo iz elementarnihdrugim rijecima: sloena transformacija se dekomponuje naelementarnesloenu transformaciju opisuje matrica koju dobivamo mnoenjemelementarnih matrica: kompozitna matricaredosljed elementarnih transformacija u sloenoj je bitan jermnoenje matrica nije komutativno!!!

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 32 / 42

  • Sloene transformacije

    Sloene geometrijske transformacije sastavljamo iz elementarnihdrugim rijecima: sloena transformacija se dekomponuje naelementarnesloenu transformaciju opisuje matrica koju dobivamo mnoenjemelementarnih matrica: kompozitna matricaredosljed elementarnih transformacija u sloenoj je bitan jermnoenje matrica nije komutativno!!!

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 32 / 42

  • Rotacija oko proizvoljno odabrane osi

    1. Os rotacije definiramo kao pravac koji prolazi kroz tacke T1(x1, y1) i T2(x2, y2).

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 33 / 42

  • Rotacija oko proizvoljno odabrane osi

    2. Definiramo jedinicni vektor~n usmjeren od tacke T1 do tacke T2:

    ~n =(x2 x1, y2 y1, z2 z1)|(x2 x1, y2 y1, z2 z1)|

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 34 / 42

  • Rotacija oko proizvoljno odabrane osi

    3. Pomocu vektora ~1y = (0, 1, 0) i~n definiramo jedinicne vektore~u i~v koji sa vektorom~n tvore desnosucni koordinatnisustav UVN:

    ~u =~1y ~n|~1y ~n|

    ~v =~n ~u|~n ~u|

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 35 / 42

  • Rotacija oko proizvoljno odabrane osi

    4. Sve tacke objekta kojeg rotiramo (u naem primjeru je to tacka P) transliramo tako da tacka T1 sjedne u koordinatnipocetak. Sa tom transformacijom ujedno potegnemo koordinatni sustav UVN iz tacke T1 u koordinatni pocetak:

    T(T1) =

    1 0 0 x10 1 0 y10 0 1 z10 0 0 1

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 36 / 42

  • Rotacija oko proizvoljno odabrane osi

    5. Sve tacke objekta kojeg rotiramo (u naem primjeru je to tacka P) rotiramo tako da koordinatni sustav UVN legne ukoordinatni sustav XYZ (prisjetimo se transformacije koordinatnog sustava):

    R =

    ux uy uz 0vx vy vz 0nx ny nz 00 0 0 1

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 37 / 42

  • Rotacija oko proizvoljno odabrane osi

    6. Sve tacke objekta kojeg rotiramo (u naem primjeru je to tacka P) sada rotiramo u eljenom smjeru za zadani kut okokoordinatne osi Z koja se sada poklapa sa zadanom osi rotacije:

    Rz() =

    cos sin 0 0sin cos 0 0

    0 0 1 00 0 0 1

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 38 / 42

  • Rotacija oko proizvoljno odabrane osi

    7. Sve tacke objekta kojeg rotiramo (u naem primjeru je ta tocka P) rotiramo tako da se koordinatni sustav vrati u osnovnuorjentaciju. To cinimo inverzom matrice R kojeg dobijamo tronsponiranjem, poto je matrica R ortogonalna:

    R1 =

    ux vx nx 0uy vy ny 0uz vz nz 00 0 0 1

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 39 / 42

  • Rotacija oko proizvoljno odabrane osi

    8. Sve tacke objekta kojeg rotiramo (u naem primjeru je to tacka P) transliramo tako da tacku T1 vratimo u pocetnupoziciju. Sa tom transformacijom ujedno vratimo koordinatni sustav UVN iz koordinatnog pocetka u tacku T1:

    T(T1) =

    1 0 0 x10 1 0 y10 0 1 z10 0 0 1

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 40 / 42

  • Rotacija oko proizvoljno odabrane osi

    Konacna geometrijska transformacija koja opisuje rotaciju tacke P za kut oko proizvoljno odabrane osi rotacije je:

    P= T(T1) R1 Rz() R T(T1) P

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 41 / 42

  • Zakljucak

    Transformacije (tj. operacije koje transformacija izvodi) susadrane u koeficijentima matrica i ne u instrukcijama ilimatematickim operacijamaPrilikom izvodjenja bilo koje geometrijkse transformacijeupotrebljavamo iste operacije: mnoenje matrice reda 4x4 ivektora reda 4x1Kod upotrebe vie uzastopnih transformacija moramo paziti naredosljed transformacija tj. na redosljed mnoenja matrica potomnoenje matrica nije komutativnoTransformacije tvrdih tijela (rigid body transformations): translacijai rotacija. Te transformacije cuvaju kuteve i duineOrtogonalne transformacije : translacija, rotacija i transliranje. Tetransformacije cuvaju kuteve. Opiemo ih ortogonalnimmatricama; jednostavna operacija inverza

    P. Bulic (University of Ljubljana) Geometrijske transformacije Banja Luka 2011 42 / 42

    2D Geometrijske transformacije2D Translacija2D Rotacija2D Skaliranje

    2D Geometrijske transformacije u homogenim koordinatamaHomogene koordinate2D Translacija u homogenim koordinatama2D rotacija u homogenim koordinatama2D skaliranje u homogenim koordinatama

    3D geometrijske transformacije3D translacija u homogenim koordinatama3D rotacija u homogenim koordinatama

    Programski kodRotacija koordinatnog sustavaSloene transformacijeRotacija oko proizvoljno odabrane osi Zakljucak