3D transformacije in gledanje

Similar documents
Klemen Kregar, Mitja Lakner, Dušan Kogoj KEY WORDS

Reševanje problemov in algoritmi

Transformations. Lars Vidar Magnusson. August 24,

CS 112 Transformations II. Aditi Majumder, CS 112 Slide 1

SIMETRIČNE KOMPONENTE

THE UNIVERSITY OF BRITISH COLUMBIA Midterm Examination 14 March 2001

TOPLJENEC ASOCIIRA LE V VODNI FAZI

Problem umetnostne galerije

Kode za popravljanje napak

Linearna algebra. Bojan Orel. Univerza v Ljubljani

Iskanje najcenejše poti v grafih preko polkolobarjev

AKSIOMATSKA KONSTRUKCIJA NARAVNIH

Why Transforms? Want to animate objects and camera Translations Rotations Shears And more.. Want to be able to use projection transforms

Linearne enačbe. Matrična algebra. Linearne enačbe. Linearne enačbe. Linearne enačbe. Linearne enačbe

UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA POLONA ŠENKINC REŠEVANJE LINEARNIH DIFERENCIALNIH ENAČB DRUGEGA REDA S POMOČJO POTENČNIH VRST DIPLOMSKO DELO

A L A BA M A L A W R E V IE W

Simulation of multilayer coating growth in an industrial magnetron sputtering system

Transformations & Matrices

Hadamardove matrike in misija Mariner 9

Interpolacija s parametričnimi polinomskimikrivuljami 1

Študijska smer Study field. Samost. delo Individ. work Klinične vaje work. Vaje / Tutorial: Slovensko/Slovene

Multipla korelacija in regresija. Multipla regresija, multipla korelacija, statistično zaključevanje o multiplem R

ENAČBA STANJA VODE IN VODNE PARE

UNIVERZA V MARIBORU FAKULTETA ZA NARAVOSLOVJE IN MATEMATIKO. Oddelek za matematiko in računalništvo DIPLOMSKO DELO. Gregor Ambrož

Ogrodja prostorskih parametričnih krivulj

UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE. Verjetnostni algoritmi za testiranje praštevilskosti

UNIVERZA V MARIBORU FAKULTETA ZA NARAVOSLOVJE IN MATEMATIKO. Oddelek za matematiko in računalništvo MAGISTRSKA NALOGA. Tina Lešnik

Baroklina nestabilnost

Călugăreanu-White-Fullerjev teorem in topologija DNA

UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA

UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA SAŠO ZUPANEC MAX-PLUS ALGEBRA DIPLOMSKO DELO

Oracle Spatial Koordinatni sustavi, projekcije i transformacije. Dalibor Kušić, mag. ing. listopad 2010.

UČNI NAČRT PREDMETA / COURSE SYLLABUS (leto / year 2017/18) Predmet: Analiza 3 Course title: Analysis 3. Študijska smer Study field ECTS

Graphics Programming I

Iterativne metode podprostorov 2010/2011 Domače naloge

:25 1. Rotations. A rotation is in general a transformation of the 3D space with the following properties:

UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE. Kvadratne forme nad končnimi obsegi

CSC Computer Graphics

Študijska smer Study field. Klinične vaje work. Nosilec predmeta / prof. dr. Peter Legiša, prof. dr. Bojan Magajna, prof. dr.

UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA VERONIKA MIHELAK PRAVILNI IKOZAEDER DIPLOMSKO DELO

MATH 423 Linear Algebra II Lecture 3: Subspaces of vector spaces. Review of complex numbers. Vector space over a field.

Univerza v Ljubljani Fakulteta za matematiko in fiziko. Oddelek za fiziko. Seminar - 3. letnik, I. stopnja. Kvantni računalniki. Avtor: Tomaž Čegovnik

Projektovanje paralelnih algoritama II

Eulerjevi in Hamiltonovi grafi

Cyclical Surfaces Created by a Conical Helix

Cveto Trampuž PRIMERJAVA ANALIZE VEČRAZSEŽNIH TABEL Z RAZLIČNIMI MODELI REGRESIJSKE ANALIZE DIHOTOMNIH SPREMENLJIVK

Distance reduction with the use of UDF and Mathematica. Redukcija dolžin z uporabo MS Excel ovih lastnih funkcij in programa Mathematica

UNIVERZA V MARIBORU FAKULTETA ZA NARAVOSLOVJE IN MATEMATIKO. Oddelek za matematiko in računalništvo DIPLOMSKO DELO.

MATH 280 Multivariate Calculus Fall Integration over a surface. da. A =

Reading. Affine transformations. Vector representation. Geometric transformations. x y z. x y. Required: Angel 4.1, Further reading:

Electromagnetic Properties of Materials Part 2

Jernej Azarija. Štetje vpetih dreves v grafih

CS 112 Transformations II. Slide 1

P a g e 5 1 of R e p o r t P B 4 / 0 9

Lokalizacija mobilnega robota s pomočjo večsmerne kamere

CATAVASII LA NAȘTEREA DOMNULUI DUMNEZEU ȘI MÂNTUITORULUI NOSTRU, IISUS HRISTOS. CÂNTAREA I-A. Ήχος Πα. to os se e e na aș te e e slă ă ă vi i i i i

OPTIMIZACIJA Z ROJEM DELCEV

UČNI NAČRT PREDMETA / COURSE SYLLABUS. Študijska smer Study field. Samost. delo Individ. work Klinične vaje work

SVM = Support Vector Machine = Metoda podpornih vektorjev

UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE. Simetrije cirkulantnih grafov

Teorija verjetnosti uvod. prof. dr. Jurij Tasič Asistent Emil Plesnik Laboratorij za digitalno obdelavo signalov, slik in videa

MECHANICAL EFFICIENCY, WORK AND HEAT OUTPUT IN RUNNING UPHILL OR DOWNHILL

Matej Mislej HOMOMORFIZMI RAVNINSKIH GRAFOV Z VELIKIM NOTRANJIM OBSEGOM

Dejan Petelin. Sprotno učenje modelov na podlagi Gaussovih procesov

JERNEJ TONEJC. Fakulteta za matematiko in fiziko

Evolucija dinamike Zemljine precesije

Nelinearna regresija. SetOptions Plot, ImageSize 6 72, Frame True, GridLinesStyle Directive Gray, Dashed, Method "GridLinesInFront" True,

T h e C S E T I P r o j e c t

Properties of Transformations

LESSON 7.1 FACTORING POLYNOMIALS I

Linearna regresija. Poglavje 4

FRAKTALNA DIMENZIJA. Fakulteta za matematiko in fiziko Univerza v Ljubljani

Math Exam 2, October 14, 2008

Matematika 1. Gabrijel Tomšič Bojan Orel Neža Mramor Kosta

Use precise language and domain-specific vocabulary to inform about or explain the topic. CCSS.ELA-LITERACY.WHST D

CH 37 DOUBLE DISTRIBUTING

Appendix Composite Point Rotation Sequences

UČNI NAČRT PREDMETA / COURSE SYLLABUS (leto / year 2017/18) Predmet: Algebra 1 Course title: Algebra 1. Študijska smer Study field ECTS

A realistic estimate of the accuracy of position measurements of characteristic terrain points via the RTK-GPS method

LABORATORY MODULE. EKT 241/4 ELECTROMAGNETIC THEORY Semester 2 (2009/2010) EXPERIMENT # 2

Particija grafa, odkrivanje skupnosti in maksimalen prerez

Linearized Equations of Motion!

UČNI NAČRT PREDMETA / COURSE SYLLABUS Predmet: Analiza 1 Course title: Analysis 1. Študijska smer Study field. Samost. delo Individ.

Software Process Models there are many process model s in th e li t e ra t u re, s om e a r e prescriptions and some are descriptions you need to mode

Intervalske Bézierove krivulje in ploskve

Affine transformations

Power Series Solutions for Ordinary Differential Equations

SLIKE CANTORJEVE PAHLJAµCE

Concept of a basis. Based on this treatment we can assign the basis to one of the irreducible representations of the point group.

JEDRSKA URA JAN JURKOVIČ. Fakulteta za matematiko in fiziko Univerza v Ljubljani

UČNI NAČRT PREDMETA / COURSE SYLLABUS (leto / year 2017/18) Parcialne diferencialne enačbe Partial differential equations. Študijska smer Study field

Chapter 4 The Equations of Motion

Examples: Identify three pairs of parallel segments in the diagram. 1. AB 2. BC 3. AC. Write an equation to model this theorem based on the figure.

Use precise language and domain-specific vocabulary to inform about or explain the topic. CCSS.ELA-LITERACY.WHST D

STA2603/205/1/2014 /2014. ry II. Tutorial letter 205/1/

Interpolation of Transformation

Ridig Body Motion Homogeneous Transformations

Hongbing Zhang October 2018

COMMON FIXED POINT THEOREM OF THREE MAPPINGS IN COMPLETE METRIC SPACE

QUARTIC CURVES MODULO 2*

Transcription:

3D transformacije in gledanje

Premikanje predmeta - translacija

Vrtenje rotacija okrog središča

Vrtenje rotacija okrog tečaja

Povečava -pomanjšanje Povečava v eni smeri Enakomerna povečava

Striženje (shear)

Povečanje D transformacij na 3D Primer: D skaliranje: [x' y' ] = [x y ] * [Sx ] [ Sy ] [ ] 3D skaliranje: [x y z ] = [x y z ]* [Sx ] [ Sy ] [ Sz ] [ ] Narišemo samo x in y.

Transformacija točk in predmetov = z y x P P P P = z y x Q Q Q Q Homogena predstavitev = z y x z y x P P P M Q Q Q = 34 33 3 3 4 3 4 3 m m m m m m m m m m m m M

Osnovne 3D afine transformacije Transla Translacija cija Povečava Povečava (scalling) (scalling) x x x T T T z y x S S S

Rotacije Okoli osi x: Okoli osi y: Okoli osi z R R R x y z ( β ) ( β ) ( β ) cos = sin cos = sin cos sin = ( β ) sin( β ) ( β ) cos( β ) ( β ) sin( β ) ( β ) cos( β ) ( β ) sin( β ) ( β ) cos( β )

) cos( ) sin( ) sin( ) cos( 3D Rotacije Okoli osi x Okoli osi y Okoli osi z ) cos( ) sin( ) sin( ) cos( ) cos( ) sin( ) sin( ) cos( Opazka: to je enako kot pri D rotaciji

Sestavljanje (veriženje): Enako kot v D ( P) = ( M M )( P) W = M Sestavljanje rotacij Vrstni red je pomemben 3D matrik vrtenja ne smemo zamenjati

Še nekaj primerov 3D transformacij Zrcaljenje preko ravnine xy Enakomerna povečava Translacija v smeri x S S S m

= s r q p n i h g m f e d l c b a M Splošna oblika 3D transformacijske matrike n m l i h g f e d c b a ( ) r q p s povečava, striženje, vrtenje, zrcaljenje Translacija Perspektivna preslikava Splošna povečava

Še več o rotacijah

Več o rotacijah oziroma usmeritvi usmeritev

Interpolacija O O.5 O

Veriženje O O

Koti rotacije okrog fiksnih osi Y Z X R x ( ). R y ( ). R z ( 3 ). P

Predstavitev fiksnih kotov Koti, za katere zavrtimo predmet okrog fiksnih osi Usmeritve določa množica 3 urejenih parametrov ki predstavljajo urejene rotacije okrog fiksnih osi: najprej okrog x, nato y nato z Več možnih zaporedij, ki ne uporabijo nujno vse 3 osi

Predstavitev fiksnih kotov Vrtenje za,45, 9 bi zapisali kot Rz(9) Ry(45), Rx(), saj hočemo najprej rotacijo okrog, ki jo uporabimo na točki P. RzRyRx P Do problema pride, če se dve osi vrtenja poravnata med seboj. Temu pojavu pravimo kardanska zapora ( Gimbal Lock )

Primeri fiksnih kotov rotacije Primer (,9,) Y Rotacija okoli osi z Primer (-45,9,) Y X X Z Z

Primeri fiksnih kotov rotacije Na primer (,9,) Y Y X X Z Z

Primeri fiksnih kotov rotacije Primer (-45,9,) Y Y X X Z Z

Kardanska zapora (gimbal lock) Poravnanje dveh ali več osi vrtenja predmeta pomeni izgubo prostostne stopnje. Predmet se ne bo vrtel tako, kot smo si zamislili.

Kardanska zapora Vrtenje za kot 9 stopinj okoli osi y v bistvu pomeni, da se prva os vrtenja poravna s tretjo. Inkrementalne spremembe v x,z pripeljejo do enakega rezultata: izgubimo prostostno stopnjo

Eulerjevi koti An Euler angle is a rotation about a single axis. Any orientation can be described composing three rotation around each coordinate axis. Roll, pitch and yaw

Eulerjev teorem Poljubna rotacija (ali zaporedje rotacij) okrog neke točke je ekvivalentna eni sami rotaciji okrog neke osi skozi to točko. Eulerjevi koti, β, β, β 3 M = R z ( β3) Ry ( β ) Rx ( β) Poljubno 3D rotacijo lahko dosežemo z vrtenji okoli osi x, y in z

Rotacija točke okrog poljubne osi v 3D Imamo podano: u = vektor enote v smeri osi vrtenja β = kot vrtenja okoli u y P vrtimo v Q u β P Q φ yz z xz x

Rotacija točke okrog poljubne osi v 3D P vrtimo v Q y u β P Q φ yz z xz x M = R y ( xz ) Rz ( φ yz ) Rx( β ) Rz ( φ yz ) Ry ( xz ) xz = kot, projiciran na ravnino xz φ yz = kot, projiciran na ravnino yz

Imamo podano: u = vektor enote v smeri osi vrtenja β = kot vrtenja okoli u + + + + + + ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( z x z y y z x x y z y z y x y x z z x y x u c c su u u c su u u c su u u c u c c su u u c su u u c su u u c u c c Kjer je c cos(β) in s sin(β) Rotacija točke okrog poljubne osi v 3D

Eulerjevi koti Splošna rotacija je kombinacija treh osnovnih rotacij: okoli osi x (x roll), okoli osi y (y roll) in okoli osi z (z roll).

Eulerjevi koti in matrike vrtenja = = = cos sin sin cos ) ( cos sin sin cos ) y - roll( cos sin sin cos ) ( 3 3 3 3 3 roll z roll x + + = ),, ( 3 3 3 3 3 3 3 3 3 3 3 c c c s s s c s s c s c c s c c s s s s c c s s s s c c c R

Spet naletimo na kardansko zaporo! Rotacija za kot 9 o povzroči izgubo prostostne stopnje z z z y π/ y 3 y x x x x x

Interpolacija Eulerjevih kotov nenaravno gibanje!

Cilj Iščemo parametrizacijo, pri kateri Obstaja med dvema ključnima rotacijama preprosta in neomajna rotacija Je gibanje neodvisno od izbire koordinatnega sistema

Kot in os Katerokoli usmeritev lahko podamo s četvorčkom kot, vektor(x,y,z), pri čemer kot pove, za koliko se zavrtimo okoli osi, ki jo definira vektor Ločeno lahko interpoliramo tako kot kot os Ni problemov s kardansko zaporo! Ne moremo pa učinkovito sestavljati rotacij. Moramo najprej pretvoriti v matrično obliko!

Kot in os Α (Ax,Ay,Az,) Y Z X Eulerjev rotacijski teorem

Kot in os Α (Ax,Ay,Az,) Y Z X Α Eulerjev rotacijski teorem

Kvaternioni

Kvaternioni q =[s,v]=[s,x,y,z] Α (cos(/),sin(/)*a)

Kvaternioni Razširjajo koncept rotacij iz 3D na 4D. Izognejo se problemu kardanske zapore in omogočajo mehke in zvezne rotacije. V bistvu lahko smatramo, da dodajo še en kot vrtenja sferičnim koordinatam (na primer kotom Longitude (zemljepisna dolžina), Latitude (zemljepisna širina) in Rotation) Kvaternion je definiran s 4 realnimi števili x y z w. Ta izračunamo s kombinacijo treh koordinat osi vrtenja in kota vrtenja.

Kakšno zvezo imajo kvaternioni in 3D animacija? Rešitev problema s kardansko zaporo" Namesto vrtenja predmeta z zaporedjem rotacij omogoča kvaternion vrtenje predmeta preko ene same poljubne osi. Ker je os vrtenja podana kot enotin vektor, lahko uporabimo vektorsko matematiko ali sferične koordinate (longitude/latitude). Interpolacija kvaternionov: mehko in napovedljivi učinki rotacije.

Motivacija Iskanje najbolj naravnega in kompaktnega načina za predstavitev rotacij in usmeritev Interpolacija usmeritve, ki vodi v naravno gibanje Zaključena matematična oblika, ki obravnava rotacije in usmeritve (razširitev kompleksnih števil)

Definicija kvaternionov Razširitev kompleksnih števil Četvorčki realnih števil s,x,y,z ali [s,v] s je skalar v je vektortor Isti podatki kot pri podajanju kota in osi, vendar v drugi obliki Lahko gledamo kot na originalno usmeritev ali kot na rotacijo nekega predmeta

Od kvaternionov k matriki vrtenja ( ) W Z Y X Q = + + + = Y X XW YZ YW XZ XW YZ Z X ZW XY YW XZ ZW XY Z Y M

Matematika s kvaternioni Točka v prostoru je podana tako: Multiplikativna identiteta Pri čemer velja Kvaternion enotne dolžine

Lastnosti kvaternionov Konjugacija in absolutna vrednost sta podobni kot pri kompleksnih številih q = ( s, v) q = q* q = s + v x + v y + v z Kvaternioni niso komutativni q = (s,v ) q = (s,v ) q *q = (s s v.v, s v + s v + v x v ) Inverzna vrednost: Kvaternion enote: q = q q * q q = q = q

Rotacija s kvaternioni S pomočjo kvaternionske matematike želimo vrteti vektor v Vektor predstavimo kot [,v] Rotacijo s pomočjo kvaternionov predstavimo kot q q v = = Rot [ ( ) ( ) ( )] ( x, y, z ) = cos,sin x, y z,, ( ) Rot v = q v q

Rotacija s kvaternioni Rotacija P=(,r) okrog vektorja enote n za kot s pomočjo enotnega kvaterniona q=(s,v) R [ P] = qpq = (,( s v v) r + v( v r) + sv r) q toda q=(cos½, sin½ n) kjer je n = R q [ P] = (, (cos ( n r)cos sin ) = (, cos r sin ) r + n( n r)sin + + ( cos ) n ( n r) + ( n r)sin )

Veriženje rotacij rotacija s pomočjo q nato z uporabo q je kot rotacija z uporabo q *q ) * *( )* * ( ) * *( )* * ( )* * * *( = = q q P q q q q P q q q q P q q Rotacija s kvaternioni

Rotacije v praksi Rotacije najlažje izrazimo v Eulerjevih kotih ali kot pare os kot Med različnimi vrstami predstavitev lahko prehajamo (jih pretvarjamo) Izberemo tisto predstavitev, ki je za dano nalogo najbolj primerna Vnos podatkov:eulerjevi koti interpolacija: kvaternioni Sestavljanje rotacij: kvaternioni, matrika usmeritve

Dodatna gradiva, vezana na OpenGL

Trije načini uporabe transformacij Brute Force: Calculate D or 3D transformation matrices then perform Q = M P and draw Q points Using glmatrixmult: Calculate 3D transformation matrices, then glmatrixmode(gl_modelview); glloadidentity(); glmatrixmultd(m); glmatrixmultd(n); Draw P points Using Opengl transformations: Calculate 3D transformation matrices, then glmatrixmode(gl_modelview); glloadidentity(); glrotated(angle,,,); gltranslated(dx,dy,dz); glscaled(sx,sy,sz); Draw P points

OpenGL transformacije Transformacije OpenGL lahko izvedemo bodisi na matriki modelview ali na projekcijski matriki Tekočo matriko nastavimo na modelview ali na projection z naslednjim ukazom: glmatrixmode(gl_modelview) or glmatrixmode(gl_projection)

Uporaba glmatrixmult glmatrixmult{fd}(const TYPE*M) Pri tem je m m5 m m6 M = m3 m7 m4 m8 m m m m 9 m m m m 3 4 5 6 Vse matrike in točke izrazimo v 3D Izračunamo vsak element transformacijske matrike in to shranimo v enodiman zionalno polje M[6] CT = CT*M Nrišemo originalne točke P

Primer Izračunamo transformacijsko matriko M Uporabimo MatrixMult za posodobitev CT Narišemo točke P void mydisplay(void) { Point p[], pl[4]; double M[6], M[6]; int i; // data p[].x = -.; p[].y = 3.; p[].z =.; p[].r = ; p[].x = -; p[].y = -; p[].z = ; p[].r = ;

//transformation matrix by column M[] = cos(*3.459/8); M[] = -sin(*3.459/8); M[] = ; M[3] = ; M[4] = sin(*3.459/8); M[5] = cos(*3.459/8); M[6] = ; M[7] = ; M[8] = ; M[9] = ; M[] = ; M[] = ; M[] = ; M[3] = ; M[4] = ; M[5] = ; //transformation matrix by column M[] = ; M[] = ; M[] = ; M[3] = ; M[4] = ; M[5] = ; M[6] = ; M[7] = ; M[8] = ; M[9] = ; M[] = ; M[] = ; M[] = 3; M[3] = ; M[4] = ; M[5] = ;

//draw transformed shape CT = CT(M)(M) } glcolor3f(.,.,.); glmatrixmode(gl_modelview); glloadidentity(); glmatrixmultd(m); glmatrixmultd(m); glbegin(gl_polygon); for(i=;i<;i++) glend(); glflush(); glvertexd(p[i].x,p[i].y); Opazka: rišemo originalne točke P, ne transformiranih točk Q, ker je matrika Modelview avtomatično uporabljena na vseh P točkah

Transformacije OpenGL glrotated (angle,,,) gltranslated (dx,dy, dz) glscaled (sx,sy,sz) Naknadno množenje trenutne transformacijske matrike CT = CT*Rotate*Translate*Scale Pripelje do Q(x,y,z) = CT*Rotate*Translate*Scale*P(x,y,z) Isti vrstni red kot pri MatrixMult

Shranjevanje CT za kasnejšo uporabo Po več zaporednih matričnih množenjih se lahko kopičijo napake zaokrožanja Morda si želimo povratka na prejšnji CT For(I=; I<num; I=++) { glpushmatrix(); gltranslate ( ); glrotate( ); drawfigure(); glpopmatrix(); } //remember the CT //restore the CT

Nastavitev kamere v OpenGL za paralelne projekcije glmatrixmode(gl_projection); glloadidentity(); glortho(left,right,bottom, top, near,far); Volumen gledanja (view volume) postavimo z definiranjem parametrov left, right, bottom, top, near, far

Pozicioniranje in usmeritev kamere glmatrixmode(gl_modelview); glloadidentity(); glulookat (eye.x,eye.y,eye.z,look.x,look.y,look.z,up.x,up.y,up.z); To nastavimo pred uporabo transformacij.