PROJEKCIE (PREMIETANIE) ------------------------- Rovnobezne premietanie ------------------------ dane bud - priemetnou (rovina, urcime aj suradnicovy system) - smerom premietania (vektor, priamka, dvojica uhlov (azimut a elevacia) ...) tak, aby smer nebol rovnobezny s rovinou (vhodne na zadavanie - nazorne, synteticka, deskriptivna geometria) alebo - maticou (vhodne na vypocet, analyticka geometria, reprezenatia v pocitaci) obrazom bodu p v 3D je bod b priemetni, ktory dostaneme ako prienik premietacej priamky (...) s priemetnou premietanie - kolme - sikme Priklad 1: priemetna - rovina xy suradnicove osi totozne s osami x,y v priestore smer - z-os t.j. je to kolme premietanie, v podstate "zabudneme" z-suradnicu z "axialnej" kocky vidime prednu (a zadnu) stenu (x,y,z) -> (x,y), inak x' = x y' = y maticovo... prilis jednoduche, nie velmi poucne Priklad 2: premietanie zname zo skoly - z-smery sa nanesu v 45 deg a skratia o polovicu (obrazok kocky aj s hodnotami) (x,y,z) -> (x - 1/(2*sqrt(2))z, y - 1/(2*sqrt(2))z) ( = (x',y') ) maticovo... priemetna - rovina xy suradnicove osi totozne s osami x,y v priestore smer premietania: vektor (1/(2*sqrt(2)), 1/(2*sqrt(2)), -1) ( ... overit) (obe vyjadrenia sme si "odvodili" navzajom nezavisle) vyzera komplikovanejsie, neprirodzenejsie, ale dava viac informacii o technickych objektoch Priklad 3: "izometria" - mozem merat v smere obrazov osi x,y,z kolme premietanie do roviny prechadzajucej cez jednotkove body priemetna: x+y+z = 1 smer: (1,1,1) (odvodzovacky, vid papier) ina mozna strategia: natocit vsetko tak, aby suradnice v priemetni splynuli s dvoma zo suradnic v R^3, potom staci len najst prienik priamky a roviny a "zabudnut" tretiu suradnicu DU - skusit si to odvodit tak doteraz uvedene premietania: (0,0,0) -> (0,0) cize dali sa reprezentovat 2x3 maticami. vo vseobecnosti - pouzit rozsirene suradnice -> 3x4 matice (mozno s tymi maticami pracovat hned od zaciatku) ide o afinne zobrazenie R^3 -> R^2 - rovnobezne priamky sa zobrazia na rovnobezne priamky - matica 3x4 ma specialny tvar Stredove premietanie ---------------------- dane bud - priemetnou (zase aj so suradnicami) - stredom premietania tak aby stred nelezal v priemetni alebo - maticou obrazom bodu p v 3D je bod v priemetni, ktory dostaneme ako prienik premietacej priamky (...) s priemetnou nejde o afinne zobrazenie: - rovnobezne priamky sa vacsinou zobrazia na roznobezky - pri afinnom zobrazeni je pre kazdy bod v R^3 definovany nejaky obraz ale teraz jednu celu rovinu venieme zobrazit ... ide o projektivne zobrazenie projektivny priestor afinny priestor (R^3) obohatime o nevlastne body - vektory rozsirene suradnice -> homogenne suradnice - jeden bod ich ma vela, nezalezi na skalovani - rovnobezne vektory splynu do jedneho nevlastneho bodu - pozor, bod (0:0:0:0) neexistuje! (matematicku konstrukciu vynechat, to budu mat na inych prednaskach, miesto toho maju to o suradniciach) Priklad 4: stred premietania: zaciatok suradnic priemetna: z = d, d nejaka nenulova konstanta (zaporna, kvoli orientacii) suradnice - prenesene z R^3 z podobnosti trojuholnikov: (x,y,z) -> (x',y') = (d*x/z, d*y/z) resp. (x:y:z:1) -> (d*x/z:d*y/z:1) = (x:y:z/d) (x:y:z:w) = (x/w:y/w:z/w:1) -> (x/w:y/w:z/dw) = (x:y:z/d) pre w nenulove maticovo / 1 0 0 0 \ / d 0 0 0 \ | 0 1 0 0 | = | 0 d 0 0 | \ 0 0 1/d 0 / \ 0 0 1 0 / takto to funguje pre vlastne body, povieme, ze nech aj pre nevlastne tvar matice -> naozaj to nie je afinne zobrazenie pohrat sa s tym: ak bod patri xy-rovine, obraz bude nevlastny ak vzor je nevlastny mimo xy-roviny, vzor je vlastny - je to priesecnik povodne rovnobeznych priamok s danym smerom Ak su pozorovatel a priemetna v inej pozicii, tak si to zredukovat na predchadzajuci priklad - posun pozorovatela do (0,0,0) - natoc priemetnu kolmo na z Suvis rovnobezneho a stredoveho premietania --------------------------------------------- rovnobezne = akoby stredove so stredom v nekonecne transformovat P^3 tak, aby sa pozorovatel presunul do nekonecna priemetna zostala fixnuta Priklad 5, pokracovanie prikladu 4: ide o transformovanie ihlana na hranol, posunutim vrchola no nekonecna podmienky: - kazdy bod bude mat po transformacii rovnake x'-, y'-, w'-suradnice ako by mal po stredovom premietani -> treba len dopocitat novu z'-suradnicu -> matica ma tvar / d 0 0 0 \ | 0 d 0 0 | | A B C D | \ 0 0 1 0 / - zvisle priamky nech sa zobrazia do zvislych priamok -> (0:1:0:0) nech sa zobrazi na seba (pripadne na svoj nasobok) -> B = 0 - vodorovne priamky v smere osi x podobne -> A = 0 - priemetna nech sa zobrazi sama na seba, specialne bod (0:0:d:1) sa zobrazi na (0:0:d^2:d) -> D = d(d-C) T.j. vysledna matica transformacie: / d 0 0 0 \ | 0 d 0 0 | | 0 0 C d(d-C) | \ 0 0 1 0 / Overit, ze naozaj zlozenim tejto transformacie a *rovnobezneho* premietania z prikladu 1 je stredove premietanie z prikladu 4. Casto sa pouziva postup z prikladu 5, dovod: dovnutra premietania mozno vsunut ine graficke algoritmy napr. - odstranovanie neviditelnych ploch (popularny z-buffer, v podstate robi rovnobezne premietanie, ale niekedy by sme to radi premietli stredovo - krajsie obrazky) - orezavanie na viditelny priestor (jednoduchsie sa orezava na axialny kvader nez na zrezany ihlan) Cvicenie ---------- - najst maticu stredoveho premietania na priemetnu x+y+z = 0 z bodu (1,1,1) (alebo nieco podobne)