87
1 Metodi Numerici per la Grafica - A.A. 2005/06 Geometria per la Computer Graphics Serena Morigi

Geometria per la Computer Graphics - unibo.itmorigi/homepage_file/courses_file/... · 2006. 1. 31. · Metodi Numerici per la Grafica - A.A. 2005/06 Geometria per la Computer Graphics

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

  • 1

    Metodi Numerici per la Grafica - A.A. 2005/06

    Geometria per la Computer Graphics

    Serena Morigi

  • 2

    A.A. 2005/06 2

    860,000 facce860,000 860,000 faccefacce

    H.Hoppe

  • 3

    A.A. 2005/06 3

    Oggetti geometrici e trasformazioni• Rappresentiamo gli

    oggetti usandoprimitive:– punti– linee, segmenti– piani, poligoni

    • Vogliamo determinaredistanze, trasformazioni…

  • 4

    A.A. 2005/06 4

    Sistemi di coordinate

    x

    y

    z

    • Right handed coordinate system

    In CG si usa la convenzione dell’asse z

    uscente dallo schermo

  • 5

    A.A. 2005/06 5

    Scalari Punti e vettori: definizioni• Scalare entità che ha come unico attributo un valore

    numerico che specifica una quantità

    • Punto entità che ha come unico attributo unaposizione nello spazio (o nel piano)

    • Vettore Entità I cui attributi sono: modulo(lunghezza) e un orientamento (direzione e verso). Non ha una posizione fissata nello spazio.

    Punti ≠ Vettori

  • 6

    A.A. 2005/06 6

    Spazio vettoriale (lineare)

    • Contiene entità VETTORI e SCALARI• Operazioni:

    – Moltiplicazione scalare per vettore– Somma vettori

    -0.5v

    v

  • 7

    A.A. 2005/06 7

    vettore + vettore = vettore

    Regola del Parallelogramma

  • 8

    A.A. 2005/06 8

    COMBINAZIONE LINEARE

    Vwvavavaw nn

    ∈+++= .....2211

    Dato un insieme di n vettori di uno spazio lineare V e un insieme di scalari, la combinazione lineare

    produce un vettore in V.In uno spazio lineare di vettori in R3, la base v0,v1,v2 costituisce un sistema di coordinate

  • 9

    A.A. 2005/06 9

    SPAZIO VETTORIALE con Prodotto scalare (o prodotto interno)

    Norma 2 o norma Euclidea

    ( )∑=

    ===n

    ii

    T xxxxxx1

    22

    ,

    ∑=

    ℜ==x

    i

    nii

    T inyxxyyx1

    ,

    Dati due vettori produce uno scalare

  • 10

    A.A. 2005/06 10

    Lunghezza di un vettore• La lunghezza di un vettore è data da:

    • Un vettore di lunghezza =1.0 è chiamatovettore unitario

    • Normalizzare un vettore significa renderlounitario:

    222zyx vvvv ++=

    vv

  • 11

    A.A. 2005/06 11

    Prodotto Scalare

    θcos||||||||, ⋅⋅=>< wvwv

    θ

    L v

    w

    ||w||||v||, θcos >

  • 12

    A.A. 2005/06 12

    Vettore Proiezione /proiezione ortogonale• Se ||v||=1.0 allora è la lunghezza del

    vettore proiezione u di w su v

    w

    v

    u

    vwvvvwu >=

  • 13

    A.A. 2005/06 13

    Prodotto Scalare in coordinate

    v

    w

    xv

    yv

    xw

    yw

    x

    y

    O

    wvwv

    ww

    vv

    yyxxwvyxw

    yxv

    +=><==

    ,),(

    ),(

  • 14

    A.A. 2005/06 14

    Componenti del punto P• Decomporre v nelle

    sue componenti:v = v|| + v⊥

    – v|| = n => v|| || n

    – v⊥ = v – v|| => v⊥⊥n

    O

    nP

    vv⊥

    v||

  • 15

    A.A. 2005/06 15

    Vettori perpendicolari

    v

    v⊥

    ),(),(0,

    vvvv xyvyxvwv

    −±=⇒=

    =><⊥

  • 16

    A.A. 2005/06 16

    Cross Product

    [ ]xyyxzxxzyzzy

    zyx

    zyx

    babababababa

    bbbaaakji

    −−−=×

    ba

    ba

  • 17

    A.A. 2005/06 17

    Proprietà del Cross Product

    0

    sin

    ×

    ba

    ba

    baba

    ba

    θ

    area del parallelogramma ab

    è un vettore perpendicolare sia a a che a b, nella direzione definitadalla regola della mano destra

    se a e b sono paralleli

  • 18

    A.A. 2005/06 18

    Esempio: Normale ad un triangolo

    • Determina la normale di lunghezzaunitaria di un triangolo definito da punti3D a, b, e c

    ab

    c

  • 19

    A.A. 2005/06 19

    Esempio: Normale ad un triangolo

    ( ) ( )

    =

    −×−=

    nnn

    acabn

    b-a

    c-a

    ab

    c

  • 20

    A.A. 2005/06 20

    Esempio: Area di un triangolo

    • Trova l’area del triangolo definito daipunti 3D a, b, e c

    ab

    c

  • 21

    A.A. 2005/06 21

    Esempio: Area di un triangolo

    ( ) ( )acab −×−=21area

    b-a

    c-a

    ab

    c

  • 22

    A.A. 2005/06 22

    Esempio: Allineamento al Target

    • Un oggetto è in posizione p in direzioneunitaria h. Vogliamo ruotarlo in modo che la sua direzione sia rivolta verso un target t. Trova un asse unitario a e un angolo θ attorno al quale ruotare.

    ph

    t

  • 23

    A.A. 2005/06 23

    Esempio: Allineamento al Target

    ph

    tt-pθ

    a

    ( )( )

    ( )( ) ⎟

    ⎟⎠

    ⎞⎜⎜⎝

    −−⋅

    =

    −×−×

    =

    ptpth

    pthptha

    1cosθ

  • 24

    A.A. 2005/06 24

    Classe vettoreclass Vector3 {public:

    Vector3() {x=0.0f; y=0.0f; z=0.0f;}Vector3(float x0,float y0,float z0) {x=x0; y=y0; z=z0;}void Set(float x0,float y0,float z0) {x=x0; y=y0; z=z0;}void Add(Vector3 &a) {x+=a.x; y+=a.y; z+=a.z;}void Add(Vector3 &a,Vector3 &b) {x=a.x+b.x; y=a.y+b.y; z=a.z+b.z;}void Subtract(Vector3 &a) {x-=a.x; y-=a.y; z-=a.z;}void Subtract(Vector3 &a,Vector3 &b) {x=a.x-b.x; y=a.y-b.y; z=a.z-b.z;}void Negate() {x=-x; y=-y; z=-z;}void Negate(Vector3 &a) {x=-a.x; y=-a.y; z=-a.z;}void Scale(float s) {x*=s; y*=s; z*=s;}void Scale(float s,Vector3 &a) {x=s*a.x; y=s*a.y; z=s*a.z;}float Dot(Vector3 &a) {return x*a.x+y*a.y+z*a.z;}void Cross(Vector3 &a,Vector3 &b)

    {x=a.y*b.z-a.z*b.y; y=a.z*b.x-a.x*b.z; z=a.x*b.y-a.y*b.x;}float Magnitude() {return sqrtf(x*x+y*y+z*z);}void Normalize() {Scale(1.0f/Magnitude());}

    float x,y,z;};

  • 25

    A.A. 2005/06 25

    Spazio Affine• In uno spazio lineare manca il concetto

    di posizione.• Estensione dello spazio vettoriale che

    include l’entità PUNTO.• Nuova operazione:

    - somma punto + vettore: definisce un nuovo punto

    - Differenza punto-punto: definisce un vettore

  • 26

    A.A. 2005/06 26

    Punto + vettore = punto

    A

    B=A+v

  • 27

    A.A. 2005/06 27

    punto - punto = vettore

    A

    BB –A

    A

    BA – B

  • 28

    A.A. 2005/06 28

    punto + punto : non definita!!

  • 29

    A.A. 2005/06 29

    Map tra punti e vettori

    • Se abbiamo un sistema di coordinate con origine O

    • Definiamo la corrispondenza tra punti e vettori:

    vOvOPPP

    +→−=→

    r

  • 30

    A.A. 2005/06 30

    COMBINAZIONE AFFINE

    1..........

    21

    2211

    =++++++=

    n

    nn

    aaacertiperPaPaPaP

    E’ una combinazione lineare di punti con i coefficienti a somma 1

    Le coordinate (a1,a2,...,an) sono le coordinate baricentriche di P nello spazio affine

    Combinazioni affini con i coefficienti (a1,a2,...,an) limitati in [0,1] si dicono combinazioni convesse

  • 31

    A.A. 2005/06 31

    Convex hull• Dato un insieme di punti

    • L’insieme dei punti P che possono essere rappresentati dalla combinazione convessa di questi è chiamato convex hull (guscio convesso) dell’insieme

    • E’ il più piccolo insieme convesso che contiene questi punti

    nPPP ,.....,, 21

    P

  • 32

    A.A. 2005/06 32

    Coordinate Baricentriche (2D)• Definire la posizione di un punto rispetto ad altri

    punti A,B,C.• P = αA + βB + γC, dove A, B, C non sono allineati,

    e α, β, γ ∈ R.• (α, β, γ) sono COORDINATE BARICENTRICHE di

    P rispetto a A, B, C (uniche!)• Se P è all’interno del triangolo, α, β, γ ∈ [0, 1], α+β+γ = 1

    A B

    C

    P

    R

    QQ, R??

  • 33

    A.A. 2005/06 33

    Coordinate Baricentriche (2D)

    A B

    C

    P

    triangolodel area'ldenota,,

    ,,,,

    ,,,,

    ,,,,

    ⋅⋅⋅

    ++= CCBABAP

    BCBAACP

    ACBACBP

    Prrrr

  • 34

    A.A. 2005/06 34

    Linea in uno spazio affine:Rappresentazione parametrica di una retta

    ),(,0 ∞−∞∈+= tvtP(t)l

    P0

    vt > 0

    t < 0 t = 0

  • 35

    A.A. 2005/06 35

    Equazione parametrica di un raggio

    P0

    v

  • 36

    A.A. 2005/06 36

    Equazione parametrica di un raggio

    ),0(,0 ∞+∈+= tvtP(t)l

    P0

    vt > 0

    t = 0

  • 37

    A.A. 2005/06 37

    Distanza fra due punti

    B

    A

    xB

    yB

    xA

    yA

    x

    y

    O

    22 )()(

    ,

    ||||),(dist

    ABAB yyxx

    ABAB

    ABBA

    −+−=

    =>−−

  • 38

    A.A. 2005/06 38

    Distanza tra un punto e una linea

    Trova un punto Q’ tale che (Q− Q’)⊥vdist(Q, l) = ||Q − Q ’ ||

    P0

    v

    Q

    Q’ = P0 +tv

    2

    202

    022

    200

    0

    0

    ||||,||||||||),(dist

    ||||,

    ,,

    0,,0,

    0,

    vvPQPQQQlQ

    vvPQ

    vvvPQt

    vvtvPQvtvPQ

    vQQ

    >−<−−=′−=

    >−<=

    ><>−<

    =

    =>−<=>−−<

    =>′−<

    l

  • 39

    A.A. 2005/06 39

    Interpretazione geometrica

    P0

    v

    Q

    Q’

    .||||,||||

    ||||),(dist

    ||||,||||),(dist

    :

    2

    202

    0

    220

    20

    20

    22

    vvPQPQ

    LPQQQ

    vLvPQPQQQL

    >−<−−=

    =−−=′⇒

    =>−<−=′+

    Pitagora l

    L

  • 40

    A.A. 2005/06 40

    Distanze tra punti e linee in 3D

    • La rappresentazione parametrica di unalina è indipendente dalle coordinate

    • v e P0 e il punto Q possono essere in 2D o in 3D o in altre dimensioni….

  • 41

    A.A. 2005/06 41

    Equazione implicita di una retta in 2D0,R,,,0 ≠∈=++ BACBACByAx

    x

    y Ax+By+C > 0

    Ax+By+C < 0

    Ax+By+C

    = 0

  • 42

    A.A. 2005/06 42

    Intersezione linea-segmento

    0))((linea laintersecaQQsegmentoIl

    2211

    21

    ≤++++⇔⇔

    CByAxCByAx

    x

    yAx+By+C > 0

    Ax+By+C < 0

    Q1 (x1, y1)

    Q2 (x2, y2)

  • 43

    A.A. 2005/06 43

    Rappresentazione di un piano in unospazio 3D

    • Il piano π è definito da una normale n e un puntonel piano (P0).

    • Un punto Q appartiene al piano ⇔ = 0• La normale n è perpendicolare a tutti i vettori nel

    pianon

    P0Q

    π

  • 44

    A.A. 2005/06 44

    Distanza tra un punto e un piano

    • Proietta il punto sul piano nelladirezione della normale:

    dist(Q, π) = ||Q’ – Q||

    n

    P0Q’ π

    Q

  • 45

    A.A. 2005/06 45

    Distanza tra un punto e un piano

    n

    P0Q’π

    Q

    .||||,||||||'||),(dist

    ||||,

    0,,0,

    0,R,||)(

    2

    202222

    20

    0

    0

    0

    nnPQnsQQQ

    nnQPs

    nnsnPQnsnPQ

    nPQsnQQssnQQnQQ

    >−<==−=

    >−<=

    =>−<=>+−<

    =>−′<+=′⇒∈=−′⇒−′

    π

  • 46

    A.A. 2005/06 46

    Rappresentazione implicita di un piano in 3D

    0,R,,,,0 ≠∈=+++ CBADCBADCzByAx

    • (x, y, z) sono le coordinate di un punto sul piano• (A, B, C) sono le coordinate di un vettore

    normale al piano

    Ax+By+Cz+D > 0

    Ax+By+Cz+D < 0

    Ax+By+Cz+D = 0

  • 47

    A.A. 2005/06 47

    Distanza tra due linee in 3D

    P1

    P2

    u

    v

    d

    La distanza è considerata tra due punti Q1 e Q2 tali che (Q1 – Q2) ⊥ u e (Q1 – Q2) ⊥ v

    Q1

    Q2

    l1

    l2

    tvPtlsuPsl

    +=+=

    22

    11

    )()(

  • 48

    A.A. 2005/06 48

    Distanza tra due linee in 3D

    P1

    P2

    u

    v

    d

    Q1

    Q2

    l1

    l2

    tvPtlsuPsl

    +=+=

    22

    11

    )()(

    ⎩⎨⎧

    =>−+−<=>−+−<

    0,)(0,)(

    21

    21

    vtvsuPPutvsuPP

    ⎪⎩

    ⎪⎨⎧

    =−>−<

    =>−<

    0||||,),(

    0,||||),(2

    21

    221

    vtvusvPP

    uvtusuPP

  • 49

    A.A. 2005/06 49

    Distanza tra due linee in 3D

    P1

    P2

    u

    v

    d

    Q1

    Q2

    l1

    l2

    tvPtlsuPsl

    +=+=

    22

    11

    )()(

    2222121

    2

    22221

    221

    ,||||||||,,,||||~

    ,||||||||,||||,,~

    >−−<

    =

    >−−<

    =

    vuvuPPuvuPPuut

    vuvuPPuvPPvvus

  • 50

    A.A. 2005/06 50

    Distanza tra due linee in 3D

    P1

    P2

    u

    v

    d

    Q1

    Q2

    l1

    l2

    tvPtlsuPsl

    +=+=

    22

    11

    )()(

    ||)~()~(||),(dist 2121 tlslll −=

  • 51

    A.A. 2005/06 51

    Esempio di utilizzo: warping

  • 52

    A.A. 2005/06 52

    Esempio di utilizzo: warping

    TARGET

    AB

    C

    A′B′

    C′

    Prendiamo le coordinate baricentricheα, β, γ di P’ rispetto a A’, B’, C’

    Color(P) = Color(α A + β B + γ C)

    P′P

    P′

  • 53

    A.A. 2005/06 53

    Sistemi di riferimento• Un sistema di riferimento (frame) è definito

    dalla quaterna (Po,v1,v2,v3) dove – Po è un punto di origine– E una base [v1,v2,v3]In esso si può rappresentare univocamente un punto

    3322110 vavavaPP +++=

  • 54

    A.A. 2005/06 54

    Coordinate omogenee• Rappresentare sia vettori che punti con

    terne di scalari è ambiguo..• Adottiamo un sistema di coordinate che

    permetta di rappresentare punti e vettori in due modi distinti

    • Un punto si può esprimere come

    • Un vettore si può esprimere come332211 vavavaw ++=

    3322110 vavavaPP +++=

  • 55

    A.A. 2005/06 55

    Coordinate omogenee• Assumendo la convenzione che

    1*P=P e 0*P=0

    • Un punto si può esprimere come

    • Un vettore si può esprimere come0332211 0 Pvavavaw ⋅+++=

    0332211 1 PvavavaP ⋅+++=

  • 56

    A.A. 2005/06 56

    Coordinate omogenee• Quindi ogni punto/vettore viene espresso da

    4 coordinate: la quarta coordinata dei vettori vale 0, la quarta coordinata dei punti vale 1

    • In forma matriciale, le coordinate di un vettore:

    le coordinate di un punto:

    [ ]Taaa 0321[ ]Taaa 1321

  • 57

    A.A. 2005/06 57

    Coordinate omogenee• Ogni punto/vettore si ottiene moltiplicando

    le sue coordinate per la matrice 4x4 del sistema di riferimento:

    [ ]⎥⎥⎥⎥

    ⎢⎢⎢⎢

    =

    0

    3

    2

    1

    321 0

    Pvvv

    aaav [ ]⎥⎥⎥⎥

    ⎢⎢⎢⎢

    =

    0

    3

    2

    1

    321 1

    Pvvv

    aaaP

  • 58

    A.A. 2005/06 58

    Cambio di sistema di riferimento

    • Dati due sistemi di riferimento:

    • Esprimiamo origine e vettori di uno in termini dell’altro:

    • Questo definisce la matrice 4x4 di cambiamanto del sistema di riferimento

    { } { }

    ⎥⎥⎥⎥

    ⎢⎢⎢⎢

    =

    +++=++=++=++=

    1000

    ,,,,,,,

    434241

    333231

    232221

    131211

    03432421410

    3332321313

    3232221212

    3132121111

    03210321

    aaaaaaaaaaaa

    M

    PvavavaQvavavauvavavau

    vavavau

    QuuuPvvv

  • 59

    A.A. 2005/06 59

    Cambio di sistema di riferimento• Abbiamo quindi

    • Dato un vettore/punto e le sue rappresentazioni a nel primo e b nel secondo sistema, abbiamo:

    aMbbMa

    Pvvv

    a

    Pvvv

    Mb

    Quuu

    b

    Pvvv

    M

    Quuu

    T

    TTTT

    1

    0

    3

    2

    1

    0

    3

    2

    1

    0

    3

    2

    1

    0

    3

    2

    1

    0

    3

    2

    1

    )( −==

    ⎥⎥⎥⎥

    ⎢⎢⎢⎢

    =

    ⎥⎥⎥⎥

    ⎢⎢⎢⎢

    =

    ⎥⎥⎥⎥

    ⎢⎢⎢⎢

    ⎥⎥⎥⎥

    ⎢⎢⎢⎢

    =

    ⎥⎥⎥⎥

    ⎢⎢⎢⎢

  • 60

    A.A. 2005/06 60

    Esempio: posizionare la camera• Sistema del mondo: (x,y,z,O)• Sistema di vista: (xv,yv,zv,COP)• Esprimiamo il sistema di vista in termini del

    sistema del mondo:

    ⎥⎥⎥⎥

    ⎢⎢⎢⎢

    =

    ⎥⎥⎥⎥

    ⎢⎢⎢⎢

    Ozyx

    M

    COPzyx

    v

    v

    v

    COP

    yv

    zv xv

    z

    xy

  • 61

    A.A. 2005/06 61

    Esempio: posizionare la camera

    ⎥⎥⎥⎥

    ⎢⎢⎢⎢

    ⎥⎥⎥⎥⎥

    ⎢⎢⎢⎢⎢

    =

    ⎥⎥⎥⎥

    ⎢⎢⎢⎢

    Ozyx

    zyxCOPzyx

    copcopcop

    v

    v

    v

    1000101000010

    COP

    yv

    zv xv

    z

    xy

    Posizione di COP nel sistema del mondo

  • 62

    A.A. 2005/06 62

    Esempio: posizionare la camera• Dato un punto P della scena avente coordinate

    (xp,yp,zp,1) nel sistema di coordinate mondo• Le coordinate di P nel sistema di vista sono date da

    ( )⎥⎥⎥⎥

    ⎢⎢⎢⎢

    ⎡−

    1

    1

    p

    p

    p

    T

    zyx

    M

    COP

    yv

    zv xv

    z

    xy

    P

  • 63

    A.A. 2005/06 63

    TRASFORMAZIONI GEOMETRICHE

    • Consideriamo le trasformazioni che modificano le coordinate di un oggetto per ottenerne un altro simile ma differente per posizione, orientamento e dimensione.

    • Altera la geometria lasciando invariata la topologia

  • 64

    A.A. 2005/06 64

    Traslazione in 2D• Traslazione di d=(dx,dy)

    Ogni punto dell’oggettoViene traslato di d

    Ov

    v+d

    yyy

    xxx

    dvvdvv

    +=′+=′

  • 65

    A.A. 2005/06 65

    Rotazione in 2D• Rotazione rispetto all’origine di un angolo θ.

    O

    θ

    Angoli positivi significadirezione anti-orariacounter-clockwise.

  • 66

    A.A. 2005/06 66

    Rotazione in 2D

    O

    θ

    • Rotazione rispetto all’origine di un angolo θ.

    Angoli positivi significadirezione anti-orariacounter-clockwise.

  • 67

    A.A. 2005/06 67

    Rotazione in 2D –rappresentazione matriciale• Moltiplica (x, y) per la

    matrice di rotazione:

    O

    θ P (x, y)

    P’ = Rθ (P)

    θθθθ

    θθθθ

    θ

    cossinsincos

    cossinsincos

    )(

    yxyyxx

    yx

    yx

    PRP

    +=′−=′

    ⎟⎟⎠

    ⎞⎜⎜⎝

    ⎛⎟⎟⎠

    ⎞⎜⎜⎝

    ⎛ −=⎟⎟

    ⎞⎜⎜⎝

    ⎛′′

    =′

  • 68

    A.A. 2005/06 68

    Scala in 2D

    O

    • Uniforme sx=sy• Non unifome sx≠sy• rispetto all’origine

    eriflessionsyosxeingrandiscsysxiscerimpicciolsysx

    ysyyxsxx

    yx

    sysx

    yx

    PSP

    001,

    1,0**

    00

    )(

  • 69

    A.A. 2005/06 69

    Trasformazione lineare• Ogni trasformazione lineare è rappresentata da

    una matrice M non singolare tale che

    • Ogni matrice non singolare rappresenta unatrasformazione lineare

    vMv ⋅=′ ⎥⎦

    ⎤⎢⎣

    ⎡=

    22

    11

    baba

    M

    2121 ''' vvvv ∈=>∈ vv

  • 70

    A.A. 2005/06 70

    Trasformazione affine

    222

    111

    dvbvav

    dvbvav

    yxy

    yxx

    ++=′

    ++=′

    +⋅=′ dvMv

    Composizione di trasformazioni lineari e traslazioni

    ⎥⎥⎦

    ⎢⎢⎣

    ⎡+

    ⎥⎥⎦

    ⎢⎢⎣

    ⎡⎥⎦

    ⎤⎢⎣

    ⎡=

    ⎥⎥⎦

    ⎢⎢⎣

    y

    x

    y

    x

    y

    x

    dd

    vv

    baba

    vv

    22

    11'

    '

  • 71

    A.A. 2005/06 71

    Trasformazioni affiniin Coordinate omogenee

    vMv ⋅=′

    ⎥⎥⎥

    ⎢⎢⎢

    ⎡⋅⎥⎥⎥

    ⎢⎢⎢

    ⎡=

    ⎥⎥⎥

    ⎢⎢⎢

    ⎡′′

    ++=′

    ++=′

    1100122

    11

    222

    111

    y

    x

    y

    x

    y

    x

    yxy

    yxx

    vv

    dbadba

    vv

    dvbvav

    dvbvav

  • 72

    A.A. 2005/06 72

    Trasformazioni affiniin Coordinate omogenee

    ⎥⎥⎥

    ⎢⎢⎢

    ⎡⋅⎥⎥⎥

    ⎢⎢⎢

    ⎡ −=

    ⎥⎥⎥

    ⎢⎢⎢

    ⎡′′

    ⎥⎥⎥

    ⎢⎢⎢

    ⎡⋅⎥⎥⎥

    ⎢⎢⎢

    ⎡=

    ⎥⎥⎥

    ⎢⎢⎢

    ⎡′′

    ⎥⎥⎥

    ⎢⎢⎢

    ⎡⋅⎥⎥⎥

    ⎢⎢⎢

    ⎡=

    ⎥⎥⎥

    ⎢⎢⎢

    ⎡′′

    11000)cos()sin(0)sin()cos(

    1

    11001001

    1

    11000000

    1

    y

    x

    y

    x

    y

    x

    y

    x

    y

    x

    y

    x

    y

    x

    vv

    vv

    vv

    dd

    vv

    vv

    sysx

    vv

    ϑϑϑϑ

  • 73

    A.A. 2005/06 73

    Invertibilità delle trasformazioni

    )/1,/1()()()(

    )()()(

    1

    1

    1

    '1'

    1

    yx

    T

    ssSsSdTdT

    RRRPMPMPP

    IMM

    =

    −=

    ==−

    =>−=

    =

    ϑϑϑ

  • 74

    A.A. 2005/06 74

    Concatenazione di trasformazioni• Dato un vettore/punto v, e una matrice di

    rotazione lungo l’asse x Rx, generiamo ilvettore/punto ruotato v′:

    • Se poi vogliamo ruotare quel vettore rispettoall’asse y, possiamo semplicemente:

    ( ) vRv ⋅=′ θx

    ( )( ) ( )( )vRRv

    vRv

    ⋅⋅=′′

    ′⋅=′′

    θφ

    φ

    xy

    y

  • 75

    A.A. 2005/06 75

    • Se v è trasformato in v’ mediante una sequenza di trasformazioni

    • Per la proprietà associativa si può considerare un’unicamatrice di trasformazione

    • Nota: NON vale la proprietà commutativa del prodotto , quindi l’ordine è importante

    Concatenazione di trasformazioni

    ( )( )( )vMMMMv ⋅⋅⋅⋅=′ 1234

    ( ) vMMMMv ⋅⋅⋅⋅=′ 1234

    vMvMMMMM

    ⋅=′⋅⋅⋅=

    total

    total 1234

  • 76

    A.A. 2005/06 76

    Esempio

    x

    y

  • 77

    A.A. 2005/06 77

    Trasformazioni rispetto ad un punto

    ⎥⎥⎥

    ⎢⎢⎢

    ⎡⋅⎥⎥⎥

    ⎢⎢⎢

    ⎥⎥⎥

    ⎢⎢⎢

    ⎡ −

    ⎥⎥⎥

    ⎢⎢⎢

    ⎡−−

    =⎥⎥⎥

    ⎢⎢⎢

    ⎡′′

    ⎥⎥⎥

    ⎢⎢⎢

    ⎡⋅⎥⎥⎥

    ⎢⎢⎢

    ⎥⎥⎥

    ⎢⎢⎢

    ⎥⎥⎥

    ⎢⎢⎢

    ⎡−−

    =⎥⎥⎥

    ⎢⎢⎢

    ⎡′′

    11001001

    1000)cos()sin(0)sin()cos(

    1001001

    1

    originedall' diverso puntoun ad rispetto rotazione1100

    1001

    1000000

    1001001

    1

    originedall'diversopuntoun ad rispetto scala

    y

    x

    y

    x

    y

    x

    y

    x

    y

    x

    vv

    dydx

    dydx

    vv

    vv

    dydx

    ss

    dydx

    vv

    ϑϑϑϑ

  • 78

    A.A. 2005/06 78

    Traslazione 3D

    • Espandiamo questa equazione in

    • Ovvero

    dvv +=′

    ⎥⎥⎥

    ⎢⎢⎢

    ⎡+

    ⎥⎥⎥

    ⎢⎢⎢

    ⎡=

    ⎥⎥⎥

    ⎢⎢⎢

    ′′′

    z

    y

    x

    z

    y

    x

    z

    y

    x

    ddd

    vvv

    vvv

    zzz

    yyy

    xxx

    dvv

    dvvdvv

    +=′

    +=′+=′

  • 79

    A.A. 2005/06 79

    Trasformazioni affini 3D in coordinate omogenee

    • Forma matriciale generale

    ⎥⎥⎥⎥

    ⎢⎢⎢⎢

    ⎥⎥⎥⎥

    ⎢⎢⎢⎢

    =

    ⎥⎥⎥⎥

    ⎢⎢⎢⎢

    ′′′

    110001z

    y

    x

    z

    y

    x

    z

    y

    x

    vvv

    dihgdfeddcba

    vvv

  • 80

    A.A. 2005/06 80

    Traslazione 3D in coordinate omogenee• Forma matriciale generale

    ⎥⎥⎥⎥

    ⎢⎢⎢⎢

    ⎥⎥⎥⎥

    ⎢⎢⎢⎢

    =

    ⎥⎥⎥⎥

    ⎢⎢⎢⎢

    ′′′

    11000100010001

    1z

    y

    x

    z

    y

    x

    z

    y

    x

    vvv

    ddd

    vvv

  • 81

    A.A. 2005/06 81

    Rotazioni in 3D

    • Rotazione attorno all’asse z in forma matriciale:

    in forma più compatta:

    vv ⋅=′ )(ϑzR

    ⎥⎥⎥⎥

    ⎢⎢⎢⎢

    ⎥⎥⎥⎥

    ⎢⎢⎢⎢

    ⎡ −

    =

    ⎥⎥⎥⎥

    ⎢⎢⎢⎢

    ′′′

    110001000)cos()sin(0)sin()cos(

    1z

    y

    x

    z

    y

    x

    z

    y

    x

    vvv

    ddd

    vvv

    ϑϑϑϑ

  • 82

    A.A. 2005/06 82

    Matrici di rotazione attorno agli assi x, y, e z :

    ( )⎥⎥⎥⎥

    ⎢⎢⎢⎢

    ⎡ −

    =

    1000010000cossin00sincos

    θθθθ

    θzR

    ( )⎥⎥⎥⎥

    ⎢⎢⎢⎢

    ⎡−

    =

    10000cossin00sincos00001

    θθθθ

    θxR

    ( )⎥⎥⎥⎥

    ⎢⎢⎢⎢

    ⎡ −

    =

    10000cos0sin00100sin0cos

    θθ

    θθ

    θyR

    Rotazioni attorno ad uno stesso asse sono commutative

  • 83

    A.A. 2005/06 83

    Rotazione attorno ad un asse arbitrario

    • Rotazione attono ad un asse unitario a di un angolo θ

    ( )

    ⎥⎥⎥⎥⎥

    ⎢⎢⎢⎢⎢

    −++−−−−−−++−+−−−−+

    =

    10000)1()1()1(0)1()1()1(0)1()1()1(

    ,

    22

    22

    22

    zzxzyyzx

    xzyyyzyx

    yzxzyxxx

    a

    acasacaasacaasacaaacasacaasacaasacaaaca

    θθθθθ

    θθθθθ

    θθθθθ

    θaR

  • 84

    A.A. 2005/06 84

    • Ogni dimensione ha il suo scale factor

    si hanno quindi le equazioni

    Scala Uniforme/Non-Uniforme

    ⎥⎥⎥⎥

    ⎢⎢⎢⎢

    ⎥⎥⎥⎥

    ⎢⎢⎢⎢

    =

    ⎥⎥⎥⎥

    ⎢⎢⎢⎢

    ′′′

    11000000000000

    1z

    y

    x

    z

    y

    x

    z

    y

    x

    vvv

    ss

    s

    vvv

    zzz

    yyy

    xxx

    vsv

    vsvvsv

    =′

    =′=′

  • 85

    A.A. 2005/06 85

    • Altera 2 o 3 dei valori delle coordinate proporzionalmente al valore delle altre coordinate;

    • Hij i coord. da cambiare, j coord. che deforma

    Trasformazione affine di SHEAR

    ]1['100001000010001

    )(

    zyzx

    xz

    vvsvvv

    s

    sH

    +=

    ⎥⎥⎥⎥

    ⎢⎢⎢⎢

    =s

    Analogamente per Hxy, Hyx, Hyz, Hzx, Hxy, Hzy

  • 86

    A.A. 2005/06 86

    Trasformazioni di Shear

    • Una generica matrice di trasformazione di shear:

    • Con shear singolo, solo una delle costanti è non nulla

    • Shears sono usate in CG per semplici deformazioni o effetti cartoon-like.

    ( )⎥⎥⎥⎥

    ⎢⎢⎢⎢

    =

    1000010101

    ...65

    43

    21

    61 zzzzzz

    zzH

  • 87

    A.A. 2005/06 87

    Rigid-Body transformation

    • Una trasformazione si definisce rigida se riposiziona gli oggetti lasciando invariata la loro forma e dimensione

    • Concatenazione di rotazioni e traslazioni• Preserva lunghezze ed angoli fra linee