Tartalom Pont Számítógépes Grafika Klár Gergely tremere@elte.hu Eötvös Loránd Tudományegyetem Informatikai Kar Egyenes Sík Háromszög Gömb 2010/2011. tavaszi félév Descartes-koordináták Geometriai értelmezés A legegyszerűbb és legelterjedtebb megadási módja a tér pontjainak. A tér minden p pontját egy-egyértelműen hozzárendeljük R 3 egy eleméhez. Mivel R 3 a skaláris szorzással vektorteret alkot, tekinthetjük úgy, hogy minden ponthoz a helyvektorát rendeljük hozzá. Így a tér pontjait koordinátáik segítségével egyértelműen megadhatjuk, p = p = (x, y, z) alakban. Adottak x, y, z tengelyek, rajtuk az egységnyi hosszúsággal. Egy p = (a, b, c) koordinátájú pont értelmezése ekkor: Az a pont, amit az origóból az x tengely mentén a egységet lépve, majd az y tengely mentén b egységet lépve, végül a z tengely mentén c egységet lépve kapunk.
Sodrás irány Affin-térbeli koordináták Az affin tér egy olyan vektortér, ami elfelejtette, hogy hol is van a közepe. John Baez Rendbe teszi a pont és a vektor fogalmát: skalár, vektor műveletek mint eddig vektor, vektor műveletek mint eddig pont+vektor pont pont-pont vektor pont+pont nincs értelmezve skalár, pont műveletek nincsenek értelmezve Baricentrikus koordináták Baricentrikus koordináták August Ferdinand Möbius [1827] Legyenek adottak x 1,..., x n vektorok, és a tér egy p pontja. (a 1,..., a n ) nem mind nulla, a p pont baricentrikus koordinátái, ha (a 1 + + a n )p = a 1 x 1 + + a n x n Homogén baricentrikus koordinátákról vagy affin koordinátákról beszélünk, ha a 1 + + a n = 1
Érelmezése Következmények Vegyünk egy háromszöget, x 1, x 2, x 3 csúcsokkal! Helyezzünk a csúcsokba λ 1, λ 2, λ 3 súlyokat! Ekkor a rendszer súlypontja pontosan a λ 1 x 1 + λ 2 x 2 + λ 3 x 3 pont, azaz a (λ 1, λ 2, λ 3 ) (baricentikus) koordinátájú pont. Ha negatív súlyokat is megengedünk, akkor a háromszög síkjának tetszőleges pontja megadható! Ha λ 1 + λ 2 + λ 3 = 1 és 0 λ 1, λ 2, λ 3 1, akkor a koordinátákkal adott pont a -ön lesz! A háromszög mintájára beszélhetünk 3D-s baricentrikus koordinátákról tetraéder segítségével. n dimenzóban n + 1 koordinátára van szükségünk baricentrikus alakban. Ha (a 1,..., a n ) egy pont baricentrikus koordinátái, akkor (ra 1,..., ra n ), r 0 is azok, ezért mindig használhatunk homogén baricentrikus koordinátákat. Homogén koordináták Homogén koordináták Ismét August Ferdinand Möbius [1827] Lehetővé teszik végtelen pontok kezelését véges koordináták segítségével. A projektív tér pontjai írhatók le vele, ami magában foglalja az eukleidészi tér (a sima 3D tér) pontjait. Definició 3D-ben: Legyen (x, y, z) R 3 a háromdimenziós eukleidészi tér egy pontja. Az ennek megfelelő projektív tér beli pont[ok], homogén koordinátá[k]val: [wx, wy, wz, w], w 0 Az origó (0, 0, 0) képe a [0, 0, 0, 1] pont. A projektív tér [x, y, z, 0] pontjait ideális pontoknak nevezzük, és nincs megfelelőjük az eukleidészi térben A [0, 0, 0, 0] pontot nem értelezzük.
Tulajdonságok Klasszikus egyenlete Egy nem ideális [x, y, z, w] pont koordinátái az eukleidészi térben ( x w, y w, z w ), mivel a pont nem ideális, ezért w 0. Minden homogén koordinátás pontra teljesül, hogy [x, y, z, w] = λ[x, y, z, w] = [λx, λy, λz, λw], λ 0 Az előző tulajdonság miatt [x, y, z, 0] = [ x, y, z, 0], azaz végtelen messze menve, a pontosan ellenkező irányba haladva is ugyan oda jutnánk. A vonal szélesség nélküli hosszúság, Eukleidész kb. i.sz. 300 y = mx + b Jó, de nem jó, mert hogyan ábrázoljuk a függőleges, y tengellyel párhuzamos egyeneseket? hogyan használjuk 3D-ben? Parametrikus egyenlete A sugár egyenlete Legyen p 0 az egyenes egy pontja, v pedig az irányvektora, ekkor p = p 0 + t v t R megadja az egyenes összes pontját. Ha csak az egyenes két p 0, p 1 pontját ismerjük, akkor v = p 1 p 0 után az eredeti egyenlet használható. Az egyenlet a dimenziók számától független. A sugár egy félegyenes, amit kezdőpontjával és irányvektorával adhatunk meg. Legyen p 0 a sugár kezdőpontja, v pedig az irányvektora, ekkor p = p 0 + t v t 0 megadja a sugár összes pontját.
Normálvektoros egyenlete Egyenes és sík metszéspontja Legyen p 0 a sík egy pontja, n pedig a normálvektora, ekkor n, p p 0 = 0 akkor és csak akkor teljesül, ha p a síkon fekszik. Legyen p 0 a sík egy pontja, n a normálvektora, Legyen q 0 ez egyenes egy pontja, v az irányvektora. Az egyenes egynlete: p = q 0 + t v A sík egyenlete: n, p p 0 = 0 Egyenes és sík metszéspontja Megadása Behelyettesítve p-t: ha n, v 0. n, q 0 + t v p 0 = 0, n, q 0 + t n, v n, p 0 = 0, t = n, p 0 n, q 0 n, v = n, p 0 q 0, n, v Ha n, v = 0, akkor az egyenes párhuzamos a síkkal, és így vagy nincs metszéspontjuk, vagy az egyenes a síkon fut. Egyértelműen megadható három csúcsával. Ha A, B, C a háromszög csúcsai, akkor a hozzátartozó sík egy pontja A, B, C bármelyike normálvektora n = (C A) (B A) (C A) (B A), ahol a vektoriális szorzást jelöli, és ekkor n egységnyi hosszúságú.
Háromszög és egyenes metszéspontja Pont a háromszögön vizsgálat Először számítsuk ki az egyenes és a háromszög síkjának metszéspontját, ez legyen p (már ha létezik). Legyenek λ 1, λ 2, λ 3 a p pont háromszögön belüli baricentikus koordinátái, úgy hogy p = λ 1 A + λ 2 B + λ 3 C. p akkor, és csak akkor van a -ön belül, ha 0 λ 1, λ 2, λ 3 1. Tudjuk, hogy p = (x, y, z) = λ 1 A + λ 2 B + λ 3 C. Ekkor x =λ 1 A x + λ 2 B x + λ 3 C x y =λ 1 A y + λ 2 B y + λ 3 C y z =λ 1 A z + λ 2 B z + λ 3 C z, ill. λ 1 + λ 2 + λ 3 = 1 λ 3 = 1 λ 1 λ 2 Van három ismeretlenünk (λ-k), és négy egyenletünk. Mi legyen? Vegyük a háromszög 2D vetületét az XY, XZ vagy YZ síkra! A vetülethez egyszerűen elhagyjuk z, y vagy x egyenletét, megfelelően. Pont a háromszögön vizsgálat Pont a háromszögön vizsgálat Azt tengely kell választani, amelyik mentén a legnagyobb a háromszög normálvektorának abszolút értéke. (Így biztos nem fordulhat elő, hogy a háromszög merőleges a síkra, és csak egy szakasz marad belőle!) Pl. legyen a z a válsztott tengely. Ekkor x =λ 1 A x + λ 2 B x + λ 3 C x y =λ 1 A y + λ 2 B y + λ 3 C y Behelyettesítve λ 3 = 1 λ 1 + λ 2 -t, és rendezve: x =λ 1 (A x C x ) + λ 2 (B x C x ) + C x y =λ 1 (A y C y ) + λ 2 (B y C y ) + C y
Pont a háromszögön vizsgálat Egyenlete Rendezve λ 1, λ 2 -re kapjuk: λ 1 = (B y C y )(x C x ) (B x C x )(y C y ) (A x C x )(B y C y ) (B x C x )(A y C y ) λ 2 = (A y C y )(x C x ) (A x C x )(y C y ) (A x C x )(B y C y ) (B x C x )(A y C y ) A nevező csak degenerált hárömszög esetén lehet nulla. p akkor, és csak akkor van a -ön belül, ha 0 λ 1, λ 2, λ 3 1. Az r sugarú, c = (c x, c y, c z ) középpontú kör egyenlete: (x c x ) 2 + (y c y ) 2 + (z c z ) 2 r 2 = 0 Ugyanez skalárszorzattal felírva: p c, p c r 2 = 0, ahol p = (x, y, z). Gömb és egyenes metszéspontja Legyen q 0 ez egyenes egy pontja, v az irányvektora. Ekkor az egyenes egynlete: p = q 0 + t v Behelyettesítve a gömb egyenletébe, kapjuk: q 0 + t v c, q 0 + t v c r 2 = 0 Kifejtve: t 2 v, v + 2t v, q 0 c + q 0 c, q 0 c r 2 = 0 t 2 v, v + 2t v, q 0 c + q 0 c, q 0 c r 2 = 0 Ez másodfokú egyenlet t-re (minden más ismert). Legyen D = (2 v, q 0 c ) 2 4 v, v ( q 0 c, q 0 c r 2 ) Ha D > 0: két megoldás van, az egyenes metszi a gömböt. Ha D = 0: egy megoldás van, az egyenes érinti a gömböt. Ha D < 0: nincs valós megoldás, az egyenes nem metszi a gömböt.