Szmtgpes geometria Geometriai adatstruktrk s algoritmusok grbk Nagy
Számítógépes geometria Geometriai adatstruktúrák és algoritmusok, görbék Nagy Gyula
Tartalom n n n Alapok Objektumok a térben Adatstruktúrák Algoritmusok Görbék
Geometriai alapok http: //krammer. web. elte. hu/eltettk/grafika /jegyzet E fejezet első része a fenti helyen található előadás alapján készült. Ezúton szeretném kifejezni köszönetemet a szerző(k)nek!
Geometriai vektorok http: //krammer. web. elte. hu/eltettk/grafika/jegyzet /Gi 41 -3 -KRTR 1 -3 alapján n az irányított szakaszokat vektoroknak nevezzük. (irányított: egyik végpontját kiválasztjuk V kezdőpontnak. ) K v Egy vektor állása: egyenesének állása irányítása: K V, vagy V K iránya: állása és irányítása Egy vektor hossza: a KV távolság; jelölése: |v|
Műveletek geometriai vektorokkal, 2 a b = |a| |b| cos f; szám, 0 f p a b = 0, ha a merőleges b -re, a b > 0, ha 0 f p/2, a b < 0, ha p/2 f p, a × b = ( |a| |b| sin f ) n 0; 0 f p; a × b = 0, ha a || b, különben a × b : az a és b síkjára merőleges a, b és a × b jobbos rendszert alkotnak | a × b | = a parallelogramma
Műveletek geometriai vektorokkal n a = b, ha irányuk és nagyságuk megegyezik, n c = a + b : láncszabály, parallelogramma szabály n c = a - b : a közös pontból indított b végéből a végébe. n 0: nullvektor; hossza 0, iránya akármi (!) n l a: állása = a állásával, hossza |l| |a|, irányítása megegyezik, vagy ellenkező. n - a: hossza megegyezik, iránya ellentétes a-val.
Geometriai vektorok a DKR-ben P n n n A P pont helyvektora: OP vektor Koordinátás alakja: (px, py, pz) O Műveletek: a számhármasok algebrája: (a, b, c) ± (d, e, f) = (a ± d, b ± e, c ± f) (0, 0, 0) a nullvektor l (a, b, c) = (l a, l b, l c) skaláris szorzat: (a, b, c) (d, e, f) = (a d + b e + c f) (eredménye szám) vektoriális szorzat: (a, b, c) × (d, e, f) = ( b f-c e, -a f + c d, a e - b d ) (eredménye vektor)
Vektor szorzása mátrixszal n Az X pont helyvektora: X = (x, y, z)T nálam oszlopvektor (de a T-t általában elspórolom) n X’ = A 33 X = a 11 a 12 a 13 x = a 21 a 22 a 23 y a 31 a 32 a 33 z = a 11 x + a 12 y + a 13 z = x’ a 21 x + a 22 y + a 23 z = y’ a 31 x + a 32 y + a 33 z = z’
Mátrix szorzása mátrixszal C 33 = A 33 B 33 = a 11 a 12 a 13 b 11 b 12 b 13 a 21 a 22 a 23 b 21 b 22 b 23 a 31 a 32 a 33 b 31 b 32 b 33 c 11 = a 11 b 11 + a 12 b 21 + a 13 b 31 c 12 = a 11 b 12 + a 12 b 22 + a 13 b 32 c 13 = a 11 b 13 + a 12 b 23 + a 13 b 33 c 21 = a 21 b 11 + a 22 b 21 + a 23 b 31. . . cik = ai 1 b 1 k + ai 2 b 2 k + ai 3 b 3 k = ai* b*k
3 X 4 Mátrix szorzás 2 X 3 s zá or s sz zá or sz or zá s Sort Oszloppal sz n 2 X 4
A Descartes-féle, derékszögű koordináta-rendszer n n n Meghatározza: a kezdőpont (origó), a 3 tengely állása és egy térbeli egységpont A pontok: P = [x, y, z]T Kétféle irányítása lehet (szemléletesen): jobbsodrású (jobbos, jobbkezes): a Z végéből nézve … balsodrású (balos, balkezes)
A síkban: § § Meghatározza: - a kezdőpont (origó), - a 2 tengely állása - és egy térbeli egységpont Pontok: P = [x, y]T (oszlopvektor) § Kétféle irányítás lehet jobbsodrású (jobbos, jobbkezes): az órajárással ellentétesen balsodrású (balos, balkezes): az órajárással egyező
A síkbeli polárkoordináta-rendszer § A kezdőpont, a polár-tengely, a pozitív elfordulás iránya. § P polár-koordinátái: P = (r, f); (0 r), (0 f<2 p). § polár-koordináták Descartes koordináták: x = r cos f, és y = r sin f § Descartes koordináták polár-koordináták:
Gömbkoordináta-rendszer, térbeli polár-koordináták § § Alapsík, benne PKR és a Z tengely. gömbkoordináták: P = (r, f, q); (0 r), f: a polárszög (0 f 2 p, az alapsíkban) q azimut, (0 q p) henger-koordináták: P = (r, f, z) polár-koordináták derékszögű koordináták: r = r sin q = Öx 2+y 2, (az alapsíkban) x = r cos f = r sin q cos f; y = r sin f = r sin q sin f, z = r cos f
Pontrendszer tömegközéppontja n n n i=1, 2, …, n tömegpontok helyvektora: pi , tömege: mi A pontrendszer tömegközéppontja: M = S ai·pi; ai = mi / S mi a pontok súlyozott összege; 0 < ai < 1 Adott pi alappontok esetén különböző mi (ai) súlyok különböző pontokat határoznak meg. M p 2, m 2 p 1, m 1 M p 2, m 2 p 3, m 3
Baricentrikus koordináták § a 0, a 1, …, an En ; és bármely n-1 kifeszíti az n dimenziós teret § minden x En -hez egyértelműen létezik {l 0, l 1, …ln} valósak: x = l 0 a 0 + l 1 a 1 + … + ln an , és Sli = 1 {li}: az x {ai} -re vonatkozó baricentrikus koordinátái § § Tömegpontok súlypontja: li > 0 (térben 4, síkban 3, egyenesen 2 alappont) Ha x baricentrikus koordinátái pozitívak, akkor x az {ai} alappontok konvex burkán belül van.
Az egyenes egyenlete a síkban n Az egyenes homogén, implicit egyenlete (E 2): a·x + b·y + c = 0; a 2+b 2¹ 0; egyenes megadása: (a, b, c); a 2+b 2¹ 0; (x, y, w [a, b, Homogén koordinátákkal (H 2): ) c] a·x + b·y + c·w = 0; a 2+b 2¹ 0; egyenes megadása: [a, b, c] h·[a, b, c]; a 2+b 2¹ 0; A homogén egyenlet Hesse-féle normál alakja (E 2): a’·x + b’·y + c’=0; a’ 2+b’ 2=1; (-1 ≤ a’, b’ ≤ +1; ) (a’; b’) az egyenes iránykoszinuszai
Az egyenes egyenlete a síkban (2) n Az egyenes „iskolai egyenlete” (E 2): y = M · x + B; csak ha B ¹ 0 ! n n Két adott pontján át: illetve, ha x 1¹x 2 : y 1 (x 2 -x 1) · (y-y 1) = (y 2 -y 1) · (x-x 1) y = ( (y 2 -y 1)/(x 2 -x 1) ) · (x- x 1) + = M· (x- x 1) + y 1 n Adott pont, adott irány: b’· (y-y 1) = -a’ · (x-x 1); n illetve, ha b’¹ 0 : y = M · (x- x 1) + y 1 ; M = a’/b’
Az egyenes egyenlete a síkban (4) n Normálvektoros egyenlet: adott R pontja és n normálvektora (E 2); (X - R) · n = 0, azaz: (x - rx)·nx + (y - ry)·ny = 0, illetve: X · n = R · n, azaz: x·nx + y·ny = rx·nx + ry·ny
Az egyenes paraméteres egyenlete (E 2, E 3) n Adott (a síkban, vagy a térben) P 0 és P 1 pontja: X = P 0 + t·(P 1 –P 0), átrendezve: X = (1 -t)·P 0 + t· P 1, azaz koordinátánként: x = x 0 + t·(x 1–x 0) átrendezve: x=(1 -t)x 0 + t·x 1 n …
Az egyenes paraméteres egyenlete (E 2, E 3) X = (1 -t)·P + t·Q t=0: t=1: 0 t 1: t 0: t 1: a P pont, a Q pont , a szakasz pontjai, P oldalán kívül, Q oldalán kívül egyenlőközű t értékek: egyenlőközű pontok, t és (1 -t): baricentrikus koordináták az egyenesen
Félsík megadása (E 2) n n n Egyenlőtlenséggel: a·x + b·y + c < 0; a 2+b 2¹ 0; Határ-egyenesével és egy pont a félsíkban A határ-egyenes egy pontja és normálvektora (R, n) n R R
Lássunk a koordináták mögé n z = 0; mi ez? Egyenlőség, egyenlet, kié-mié? 0 x+0 y+1 z+0=0 sík: akármilyen x, y és z = 0; az XY sík n x + z= 0 mi az? HF !
A sík normálvektoros egyenlete n (E 3): A sík adott P pontja és n normálvektora: (X - P) · n = 0, illetve: (x-px) · nx+(y-py) · ny+(z-pz) · nz = 0; X · n = P · n, py·ny+ pz·nz illetve: x·nx+ y·ny+ z·nz = px·nx+
A sík paraméteres egyenlete (E 3): n A síkot kifeszítő u, v vektor párral és P pontjával: X = P + s · u + t · v, és a koordinátákra: n A sík három, nem egyenesbe eső P, Q és R pontjával X = Q + s·(P-Q)+ t·(R-Q), vagy: X = (1 -s-t)·Q + s·P+t·R x = qx + s·(px-qx)+t·(rx-qx), vagy: x = (1 -s-t)·qx +s·px+t·rx y = qy + s·(py-qy)+t·(ry-qy), vagy: y = (1 -s-t)·qy +s·py+t·ry z = qz + s·(pz-qz)+t·(rz-qz), vagy: z = (1 -s-t)·qz +s·pz+t·rz.
A sík paraméteres egyenlete (E 3): X = Q + s·(P-Q)+ t·(R-Q), vagy: X = (1 -s-t)·Q + s·P+t·R ha 0 s, t, 1 -s-t 1 : pontjai, ha közülük egy nulla: oldala, a háromszög egyik ha kettő nulla (és a harmadik 1): egyik csúcsa, ha valamelyik negatív, vagy >1: a pont kívül van. s, t, 1 -s-t : baricentrikus koordináták a síkban
Winner of the Computer Graphics Forum 2006 Cover Image Contest Irodalom: http: //krammer. web. elte. hu/eltettk/grafik a/jegyzet
Objektumok megadása a térben n n Alkalmazástól függő Megjelenítés függő
Megjelenítés n n Lapok és a rajtuk levő csúcsok Inkább többször szerepeljen egy él, mint egyszer sem
Az alkalmazás miatt szükség lehet: n Módosításokra az adatstruktúrában n mozgás elemek felvétele, törlése Az illeszkedés, szomszédosság fontos n n színezés árnyalás
Él lista n n Minden laptól pointerek az élekre: Minden élhez két lap és két csúcs tartozik. Az csúcs megkeresése nehéz A lap megkeresése is nehéz
D 3 a Láncolt listák e 1 c 2 C f A élek a b c d e f csúcsok láb fej A D A B B D B C C D A C Csúcs A B C D lapok bal jobb 3 1 1 4 1 2 2 4 2 3 4 3 él a b d e Bal járat elő utó e f c a a b e c c d d b Jobb járat elő utó b c f d d e b f f a a e lap 1 2 3 4 4 él a c a b B
Láncolt lista a 1 A b c B f 4 d
Adott pont része-e egy konvex poliédernek? n n n Mindegyik lapra megnézzük, hogy melyik oldalán van a pont. Ha mindegyikre a belső ( poliédert a tartalmazó) félterében van akkor igen. Mit csinál a gép? Számol.
Hol van a pont? n Ha minden lapra teljesül akkor benne van n n A lapon három egymást n követő pontból, vektoriális szorzással a normál vektor A 2 előállítása Ellenőrzés: a normál vektor és a lap egy pontjából a keresett pontaba mutató vektor skaláris szorzata negatív ((A 3 -A 2) (A 1 -A 2))(P- A 2) 0 A 1 A 3 P
Konvex burok n n n Konvexitás Csomagkötöző Oszd meg és uralkodj
Konvex burok n Legyen Pi véges számú ponthalmaz konvex burka a legkisebb olyan konvex sokszög, amely még tartalmazza a Pi ponthalmazt.
Konvexitás n konvex A K sokszög konvex ha bármely két pontjának összekötő szakasza is a hozzátartozik Nem konvex
Csomagkötöző algoritmus Legkevésbé meredek élt választjuk az aktuális pontból Pontok sorszámai balról jobbra növekednek
Bonyolultság n n n N a pontok száma, K a pontok száma a burkon Bármely pontból amelyik már a konvex burkon található meg kell vizsgálni az összes többihez tartozó meredekséget. Ez N eset. KN lépés biztosan elég. Legrosszabb eset ha minden pont burkon van, és rossz sorrendben.
Oszd meg és uralkodj n Két részre osztjuk a pontrendszert Felső B A Alsó B
Görbék n n n Folytonos Érintkezik is A görbülete is azonos
Harmadfokú görbék n n n P(t)=at 3+bt 2+ct+d P’(t) =3 at 2+2 bt+c Szeretnénk ha négy pont adná meg P 2 a görbét: n n Az első és az utolsó pont illeszkedjen a görbére Az első és az az utolsó szakasz érintő A t paraméter 0 -tól 1 -ig fut, ez alatt P bejárja a görbét A feltételekből P(t)meghatározható a pontok helyvektoraival a harmadokú Bezier görbék általános alakját kapjuk: P(t)=(1 -t)3 P 1 +3 t(1 -t)2 P 2+ 3 t 2(1 -t)P 3 + t 3 P 4 P 3 P 4 P 1
Bezier görbék
Bezier görbék tulajdonságai n n Az első és az utolsó kontroll pont illeszkedik Első és az az utolsó szakasz érintő A kontroll pontok konvex burkában van Könnyű megjelenítés
Konstrukció P 1 M 0123 P 2 M 123 M 01 P 0 M 23 P 3
Konstrukció P 1 P 0 P 2 P 3
de Casteljau Algoritmus n Hasonló algoritmus a görbe leírására n t=(0. 25, 0. 33) M 12 P 1 P 2 M 23 M 01 P 0 t=0. 25 P 3
Irodalom 3 D objects representation and data structure Dr Nicolas Holzschuche-mail: holzschu@cs. uct. ac. za Modified by Longin Jan Latecki: latecki@temple. edu n
- Slides: 49