1 Elementare Transformationen
Transcription
1 Elementare Transformationen
Elementare Transformationen: Translation Based on material by Werner Purgathofer Hearn/Baker 5.1-5.5, 5.8-5.15 Versetzt einen Punkt von einer Position P an einen Punkt mit der Position P' mittels Translation des Vektors T P´ x′ = x + t x T P Notation: P′ = P + T tx x′ x P = , P′ = , T = y y′ ty Dieter Schmalstieg Elementare Transformationen: Translation y′ = y + t y Geometric Transformations Elementare Transformationen: Rotation FestkörperFestkörper-Transformation Objekt wird transformiert, indem die Grenzpunkte transformiert werden Rotation des Objekts um einen Winkel θ und um einen Drehpunkt (xr, yr) P3 T P2 P1 Dieter Schmalstieg Geometric Transformations Elementare Transformationen: Rotation positiver Winkel ⇒ Rotation gegen den Uhrzeiger x = r.cosφ y = r.sinφ x’ = r.cos(φ + θ) = r.cosφ.cosθ − r.sinφ.sinθ = x .cosθ − y .sinθ y’ = + θ) = r.cosφ.sinθ + r.sinφ.cosθ r.sin(φ Verwendung einer Transformationsmatrix x′ = x cos θ − y sin θ y′ = x sin θ + y cos θ r θ r φ Geometric Transformations Elementare Transformationen: Rotation (x´,y´) (x,y) P′ = R⋅ P cos θ with R = sin θ −sin θ cos θ cos θ −sin θ x x cos θ − y sin θ ⋅ = R⋅P = sin θ cos θ y x sin θ + y cos θ x′ = x cosθ − y sin θ y ′ = x sin θ + y cosθ Dieter Schmalstieg Dieter Schmalstieg Geometric Transformations Dieter Schmalstieg Geometric Transformations 1 Elementare Transformationen: Skalierung x′ = x ⋅ s x , y′ = y ⋅ s y x′ s x = y′ 0 0 x ⋅ s y y P P´= S ⋅ P S P´ Beispiel: eine Linie wird skaliert, indem sx=sy=0.33, um sie näher an den Koordinatenursprung zu bewegen Dieter Schmalstieg Transformationsmatrizen x′ = sx 0 ⋅ x y′ 0 sy y x′ cos θ −sin θ x = ⋅ y′ sin θ cos θ y Rotation X-Spiegelung Translation Uniforme Skalierung: sx=sy NichtNicht-uniforme Skalierung: sx≠sy Fixpunkt: Geometric Transformations Skalierung Elementare Transformationen: Skalieren x′ = 1 0 ⋅ x y′ 0 −1 y Dieter Schmalstieg Geometric Transformations Homogene Koordinaten (1) Sehr oft h=1, z.B. Geometric Transformations Dieter Schmalstieg x′ 1 0 tx x y′ = 0 1 t y ⋅ y 1 0 0 1 1 x′ cos θ y′ = sin θ 1 0 Skalierung x y 1 Auf diesem Weg können alle Transformationen in Matrix-Form erfasst werden. Dieter Schmalstieg Homogene Koordinaten (2) Rotation xh x Anstatt verwendet yh mit x = xh/h, y = yh/h y man h (x' y') = (x+dx, y+dy) ... ? Dieter Schmalstieg Translation (xf, yf) x′ s x y′ = 0 1 0 − sin θ 0 x cos θ 0 ⋅ y 0 1 1 0 sy 0 0 x 0 ⋅ y 1 1 P′ = T(tx , ty ) ⋅ P Geometric Transformations Inverse Matrizen − Translation T 1 (t x , t y ) = T ( − t x ,−t y ) Rotation R 1 ( θ) = R( − θ) Skalierung S 1 ( s x , s y ) = S(1 / s x ,1 / s y ) P′ = R(θ) ⋅ P − − P′ = S(sx , sy ) ⋅ P Geometric Transformations Dieter Schmalstieg Geometric Transformations 2 Gemischte Transformationen (1) Gemischte Transformationen(2) n Transformationen werden nacheinander auf einen Punkt P angewendet, diese werden anhand M1, M2, ..., Mn dargestellt. P(n) = (Mn⋅ ... (M2⋅(M1⋅P) ) ... ) P’ = M1⋅P P’’ = M2⋅P’ ... P(n) = Mn⋅P (n-1) kürzer: Matrizenmulitplikationen sind assoziativ: (M1 · M2) · M3 = M1 · (M2 · M3) (aber nicht kommutativ: M1⋅M2 ≠ M2⋅M1 ) P(n) = (Mn⋅ ...(M2⋅(M1⋅P) ) ... ) Dieter Schmalstieg Geometric Transformations Dieter Schmalstieg Geometric Transformations Transformationen sind nicht kommutativ! gemischte Transformationen (3) Eine umgekehrte Reihenfolge der Abfolge der Transformationen könnte eine Auswirkung auf die Position des transformierten Objektes haben. In (a) wird das Objekt zuerst versetzt, dann rotiert. In (b) wird das Objekt zuerst rotiert, dann versetzt. P(n) = (Mn⋅ ... (M2⋅(M1⋅P) ) ... ) (a) (b) Matrizenmultiplikationen sind assoziativ: (M1 · M2) · M3 = M1 · (M2 · M3) (aber nicht kommutativ: M1⋅M2 ≠ M2⋅M1 ) Daher können alle Transformationen folgendermaßen geschrieben Mn⋅ ... ⋅Mwerden: 2⋅M1 P(n) = ( Mn⋅ ... ⋅M2⋅M1 ) ⋅P konstant für alle Bilder, Objekte, etc.!!! Dieter Schmalstieg Geometric Transformations Dieter Schmalstieg Geometric Transformations Gemischte Transformationen (4) Gemischte Transformationen (5) Einfache gemischte Transformationen Rotation um allgemeinen Drehpunkt Gemischte Translation: T ( t x 2 , t y 2 ) ⋅ T ( t x1 , t y 1 ) = T ( t x 1 + t x 2 , t y 1 + t y 2 ) T ( xr , y r ) ⋅ R (θ ) ⋅ T ( − xr ,− y r ) = R ( xr , y r ,θ ) Gemischte Rotation: R (θ 2 ) ⋅ R (θ1 ) = R (θ1 + θ 2 ) Gemischte Skalierung: S ( s x 2 , s y 2 ) ⋅ S ( s x1 , s y1 ) = S ( s x1 ⋅ s x 2 , s y1 ⋅ s y 2 ) Dieter Schmalstieg Geometric Transformations Ursprüngliche Translation Position und des Objekts, Drehpunkt ist Drehpunkt im Ursprung Dieter Schmalstieg Rotation um den Ursprung Translation, sodass der Drehpunkt zurückkehrt Geometric Transformations 3 Gemischte Transformationen (6) allgemeine FixpunktFixpunkt-Skalierung Gemischte Transformationen (7) Allgemeine Skalierungsrichtungen − R 1 (θ ) ⋅ S ( s1 , s2 ) ⋅ R (θ ) T ( x f , y f ) ⋅ S ( s x , s y ) ⋅ T ( − x f ,− y f ) = S ( x f , y f , s x , s y ) originale Position und Fixpunkt Translation des Objekts, Fixpunkt ist im Ursprung Dieter Schmalstieg Translation Objekt wird so, dass der unter rücksicht des Fixpunkt zurückkehrt Ursprungs skaliert Geometric Transformations AusgangsPosition 1. 2. 3. Dieter Schmalstieg M = M3 ⋅ M2 ⋅ M1 Spiegelung um yy-Achse: Geometric Transformations Beispiel (2) M = M3 ⋅ M2 ⋅ M1 = 2 0 0 cos 45 −sin 45 0 1 0 3 = 0 1 0 ⋅ sin 45 cos 45 0 ⋅ 0 1 4 = 0 0 1 0 0 1 0 0 1 2 0 0 cos 45 −sin 45 3cos 45 − 4sin 45 = 0 1 0 ⋅ sin 45 cos 45 3sin 45 + 4cos 45 = 0 0 1 0 0 1 2cos 45 −2sin 45 6cos 45 − 8sin 45 = sin 45 cos 45 3sin 45 + 4cos 45 0 0 1 0 0 1 Geometric Transformations 0 0 − 0 1 0 0 0 1 Dieter Schmalstieg Geometric Transformations Beispiel um xx-Achse: Rfx= 1 −1 0 0 0 1 0 Rfy= 0 0 1 Rotation zurück um -45° Nach (1,2) Skalierung Dieter Schmalstieg Beispiel (1) Translation von (3,4), dann Rotation um 45°und dann vergrößern um den Faktor 2 in x-Richtung 1 0 3 M1 = T(3,4) = 0 1 4 0 0 1 cos 45 −sin 45 M2 = R(45°) = sin 45 cos 45 0 0 2 0 0 M3 = S(2,1) = 0 1 0 0 0 1 Nach 45° Rotation Spiegelung um die Achse mit Winkel α = α Dieter Schmalstieg Geometric Transformations Dieter Schmalstieg Geometric Transformations 4 Spiegelung um α-Achse 1. Rotation um −α 2. spiegeln um x-Achse 3. Rotation um +α = α 1. 2. + −α 3. + +α Bsp: Spiegelung um die Achse mit Winkel α cos(− −α)) −sin(− −α)) 0 −α) = sin(− 1. M1 = R(− −α)) cos(− −α)) 0 0 0 1 1 0 0 2. M2 = S(1,−1) = 0 −1 0 0 0 1 cosα −sinα 0 3. M3 = R(α) = sinα cosα 0 0 0 1 1. 2. 3. P’ = M3 ⋅ ( M2 ⋅ ( M1 ⋅ P ) ) = ( M3 ⋅ M2 ⋅ M1 ) ⋅ P Dieter Schmalstieg Geometric Transformations Dieter Schmalstieg Bsp: Spiegelung um die Achse mit Winkel α M3 ⋅ M2 ⋅ M1 = −sinα cosα = 0 cosα sinα = sinα −cosα 0 0 = cosα sinα 0 0 1 0 0 cos(−α) −sin(−α) 0 0 ⋅ 0 −1 0 ⋅ sin(−α) cos(−α) 0 = 1 0 0 1 0 0 1 0 cosα sinα 0 0 ⋅ −sinα cosα 0 = 1 0 0 1 cos2α−sin2α 2sinαcosα 0 2sinαcosα 0 cos2α α sin2α α 0 sin2α−cos2α 0 = sin2α α −cos2α α 0 0 1 0 0 1 Dieter Schmalstieg Geometric Transformations Rechnerische Effizienz Allgemeine zweizwei-dimensionale Transformation x′ rs xx y ′ = rs yx 1 0 trs x x trs y ⋅ y 1 1 Dieter Schmalstieg Geometric Transformations Spiegelung an einer allgemeinen Line Spiegelung unter Beachtung der Linie y=mx+b RfO (=R(180º)) = T(0,b) ⋅ R(θ) ⋅ Rfx ⋅ R(−θ) ⋅ T(0,-b) −1 0 0 0 −1 0 0 1 0 Dieter Schmalstieg rs xy rs yy 0 x ′ = x ⋅ rs xx + y ⋅ rs xy + trs x y ′ = x ⋅ rs yx + y ⋅ rs yy + trs y Andere Transformationen: Spiegelung um einen Punkt Spiegelung um den Ursprung Geometric Transformations m = tan(θ) Geometric Transformations Dieter Schmalstieg Geometric Transformations 5 Andere Transformationen: Scherung (1) X-Richtung Scherung Entlang der xx-Achse Referenzlinie y=0 1 shx 0 0 1 0 0 0 1 Dieter Schmalstieg Geometric Transformations Andere Transformationen: Scherung (3) Allgemeine YY-Richtung Scherung Entlang YY-Achse Referenzlinie x=xref 1 shy 0 Dieter Schmalstieg Andere Transformationen: Scherung (2) Allgemeine XX-Richtung Scherung entlang XX-Achse Referenzlinie y=yref Dieter Schmalstieg Geometric Transformations M xy, x′y′ = R( − θ) ⋅ T ( − x0 ,− y0 ) Ein kartesisches x’y’ System bei (x0,y0) positioniert mit Richtung θ in einem xy kartesischem System Dieter Schmalstieg Affine Transformationen x ′ = a xx x + a xy y + bx y ′ = a yx x + a yy y + by − shx ⋅ yref 0 1 Transf. zwischen Koordinatensystemen 0 0 1 − shy ⋅ xref 0 1 Geometric Transformations 1 shx 0 1 0 0 Position der Referenzframes nach der Tranlation der Ursprung des x'y' Systems zum Koordinatenursprung des xy Systems Geometric Transformations 3D Transformationen Alle Konzepte können direkt in 3D angewendet werden + Projektionen 3D 2D Parallele Linien ⇒ parallele Linien Endpunkte ⇒ Endpunkte Jede affine Transformation ist eine Kombination aus Translation, Rotation, Skalierung, Spiegelung, Scherung Affine Transformation welche nur aus Translation, Rotation, Spiegelung besteht: Winkel, längeerhaltend Dieter Schmalstieg Geometric Transformations Dieter Schmalstieg Geometric Transformations 6 3D Translation (1) 3D Translation (2) Translationsvektor (tx, ty, tz) x′ = x + tx , x′ 1 y′ 0 = z′ 0 1 0 0 1 0 0 Objekte werden versetzt indem die Grenzpunkte versetzt werden y′ = y + ty , z′ = z + tz Lineare Transformationen: 0 tx x 0 t y y ⋅ 1 tz z 0 1 1 M(aP+bQ)=aMP+bMQ Inverse: − T 1 (tx , ty , tz ) = T( −tx ,−ty ,−tz ) P ′ = T(tx , ty , tz ) ⋅ P Dieter Schmalstieg Geometric Transformations 3D Rotation: Winkelorientierung Rotationsachse positiver Winkel ⇒ Rotation gegen Uhrzeiger Dieter Schmalstieg Geometric Transformations 3D Rotation um Hauptachse (z(z-Achse) x′ = x cos θ − y sin θ y′ = x sin θ + y cos θ z′ = z x′ cos θ − sin θ y′ sin θ cos θ = 0 z′ 0 1 0 0 0 0 x 0 0 y ⋅ 1 0 z 0 1 1 P ′ = R z ( θ) ⋅ P Dieter Schmalstieg Geometric Transformations 3D Rotation um Hauptachse (x(x-Achse) 0 x′ 1 0 y′ 0 cos θ − sin θ = z′ 0 sin θ cos θ 1 0 0 0 Dieter Schmalstieg 3D Rotation um Hauptachse (y(y-Achse) x′ cos θ y′ 0 = ′ z − sin θ 1 0 0 x 0 y ⋅ 0 z 1 1 P′ = Rx (θ θ) ⋅ P Dieter Schmalstieg Geometric Transformations Geometric Transformations 0 sin θ 0 x 1 0 0 y ⋅ 0 cos θ 0 z 0 0 1 1 P ′ = Ry (θ θ)⋅ P Dieter Schmalstieg Geometric Transformations 7 Urspr. ObjektPosition 2. Rotation durch Winkel θ 1.Translation Rotationsachse um die xAchse: T 3.Translation Rotationsachse an originale Position:T-1 Dieter Schmalstieg − R( θ) = T 1 ⋅ Rx ( θ ) ⋅ T 3D Rotation: Achse parallel zur xx-Achse Geometric Transformations 3D Rotation entlang beliebiger Achse 3D Rotation entlang beliebiger Achse Die Rotationsachse (gestrichelte Linie) ist definiert durch die Punkte P1 und P2. Die Richtung des Achseneinheitsvektors u ist bestimmt durch eine spezifische Richtung. u= Dieter Schmalstieg P2 − P1 = ( a , b, c ) P2 − P1 Geometric Transformations 3D Rotation entlang beliebiger Achse Schritt 1: Translation T(T(-x1,-y1,-z1) Anfangsposition 1. versetze P1 zum Ursprung 1 0 T ( − x1 ,− y1 ,− z1 ) = 0 0 2. rotiere P2’ auf z-Achse 0 1 0 0 0 − x1 0 − y1 1 − z1 0 1 3. rotiere Objekt um z-Achse 4. rotiere Achse zur Ursprungsrichtung Dieter Schmalstieg 5. Versetze Achse zur Ursprungsposition Geometric Transformations 3D Rotation entlang beliebiger Achse Anfangsposition 1. versetze P1 zum Ursprung 2. rotiere P2’ auf z-Achse 3. rotiere Objekt um z-Achse Dieter Schmalstieg 3D Rotation entlang beliebiger Achse Schritt 2: Rotation sodass u mit zz-Achse übereinstimmt (erledigt mit 2 Rotationen) Rx(α): u → xz xz--Ebene Ry(β ): u → z-Achse 2a: 2b: α 4. rotiere Achse zur Ursprungsrichtung Dieter Schmalstieg Geometric Transformations β 5. Versetze Achse zur Ursprungsposition Geometric Transformations Dieter Schmalstieg Geometric Transformations 8 3D Rotation entlang beliebiger Achse Schritt 2a: u = (a , b, c) u′ = ( 0,b,c) Schritt 2b: u′ = d = b2 + c2 cos α = c/d 3D Rotation entlang beliebiger Achse 1 0 y 0 0 c /d − b / d d Rx (α ) = b d c /d 0 b /α z0 c0 0 u′ = ( 0,b,c) u′ = d u′′ = (a,0,d) 0 0 0 1 cos β = d sin β = -a βd 0 d Ry ( β ) = a z0 x 0 − a 0 1 1 0 0 0 a d 0 0 0 1 α Dieter Schmalstieg Geometric Transformations 3D Rotation entlang beliebiger Achse Anfangsposition 1. versetze P1 zum Ursprung 2. rotiere P2’ auf z-Achse 3. rotiere Objekt um z-Achse 4. rotiere Achse zur Ursprungsrichtung Dieter Schmalstieg Dieter Schmalstieg Geometric Transformations 3D Rotation entlang beliebiger Achse Schritt 3: u abgestimmt mit zz-Achse Rotation um zz-Achse cos θ − sin θ sin θ cos θ Rz (θ ) = 0 0 0 0 0 0 0 0 1 0 0 1 5. Versetze Achse zur Ursprungsposition Geometric Transformations 3D Rotation entlang beliebiger Achse Dieter Schmalstieg Geometric Transformations 3D Rotation entlang beliebiger Achse Schritt 4: Rotation aus Schritt 2 rückgängig Schritt 5: Translation aus Schritt 1 rückgängig Anfangsposition 1. versetze P1 zum Ursprung 2. rotiere P2’ auf z-Achse − Schritte: 5 3. rotiere Objekt um z-Achse − −1 −1 − R ( θ ) = T 1 ⋅ R x ( α) ⋅ R y ( β ) ⋅ R z( θ ) ⋅ R y( β ) ⋅ R x( α) ⋅ T 4a 4b 3 2b 2a 1 Inverse Rotation: 4. rotiere Achse zur Ursprungsrichtung Dieter Schmalstieg 5. Versetze Achse zur Ursprungsposition Geometric Transformations −1 Rx ( θ) = Rx ( − θ ) = Rx ( θ ) Dieter Schmalstieg T Geometric Transformations 9 3D Skalierung mit beliebigem Fixpunkt 3D Skalierung um Ursprung x′ sx y′ 0 = z′ 0 1 0 Verdopple die Objektgröße und entferne es vom Ursprung 0 sy 0 0 0 0 sz 0 0 x 0 y ⋅ 0 z 1 1 P′ = S ⋅ P Dieter Schmalstieg Geometric Transformations 1. T T ( x F , y F , z F ) ⋅ S ( s x , s y , s z ) ⋅ T ( − x F ,− y F ,− z F ) 2. S 3. T-1 Dieter Schmalstieg Geometric Transformations 3D Spiegelung 3D Skalierung mit beliebigem Fixpunkt Spiegelung um Punkt Linie (180° (180°Rotation) Rotation) Ebene, z.B., xyxy-Ebene: RFz T ( x f , y f , z f ) ⋅ S ( s x , s y , s z ) ⋅ T ( − x f ,− y f ,− z f ) sx 0 0 0 0 sy 0 0 0 (1 − s x ) x f 0 (1 − s y ) y f s z (1 − s z ) z f 0 1 Dieter Schmalstieg P'(a,b,-c) P(a,b,c) 1 0 RFz = 0 0 0 1 0 0 0 0 −1 0 0 0 0 1 Relative Spiegelung zur xy-Ebene Geometric Transformations Dieter Schmalstieg Geometric Transformations 3D Scherung Beispiel: relative Scherung zur z-Achse mit a=b=1 b 1 0 SH z = 0 0 0 a 0 1 b 0 0 1 0 0 0 1 a Dieter Schmalstieg Geometric Transformations 10