500 likes | 667 Views
Számítógépes geometria. Geometriai adatstruktúrák és algoritmusok, görbék. Nagy Gyula. Tartalom. Alapok Objektumok a térben Adatstruktúrák Algoritmusok Görbék. Geometriai alapok. http://krammer.web.elte.hu/eltettk/grafika/jegyzet
E N D
Számítógépes geometria Geometriai adatstruktúrák és algoritmusok, görbék Nagy Gyula
Tartalom • 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!
Geometriaivektorokhttp://krammer.web.elte.hu/eltettk/grafika/jegyzet /Gi41-3-KRTR1-3 alapján • az irányított szakaszokat vektoroknak nevezzük. (irányított: egyik végpontját kiválasztjuk kezdőpontnak.) • Egy vektor állása: egyenesének állásairányítása: K V, vagy V Kiránya: állása és irányítása • Egy vektor hossza: a KV távolság; jelölése: |v| V v K
Műveletek geometriai vektorokkal, 2 a b = |a| |b| cos f; szám, 0 fp a b = 0, ha a merőleges b -re,a b > 0, ha 0 fp/2,a b < 0, ha p/2fp, a×b = ( |a| |b| sin f ) n0; 0 fp; 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 területe
Műveletek geometriai vektorokkal • a = b, ha irányuk és nagyságuk megegyezik, • c = a + b : láncszabály, parallelogramma szabály • c = a - b : a közös pontból indított b végéből a végébe. • 0: nullvektor; hossza 0, iránya akármi (!) • l a: állása = a állásával, hossza |l| |a|, irányítása megegyezik, vagy ellenkező. • - a: hossza megegyezik, iránya ellentétes a-val.
Geometriai vektorok a DKR-ben P • A P pont helyvektora: OPvektor • Koordinátás alakja: (px, py, pz) • Műveletek: a számhármasok algebrája:(a, b, c) ± (d, e, f) = (a ± d, b ± e, c ± f)(0, 0, 0) a nullvektorl (a, b, c) = (la, lb, lc) • 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) = ( bf-ce, -af + cd, ae - bd ) (eredménye vektor) O
Vektor szorzása mátrixszal • Az X pont helyvektora: X = (x, y, z)Tnálam oszlopvektor (de a T-t általában elspórolom) • X’ =A33X = a11 a12 a13 x = a21 a22 a23y a31 a32 a33 z = a11 x + a12 y + a13 z = x’ a21 x + a22 y + a23 z = y’ a31 x + a32 y + a33 z = z’
Mátrix szorzása mátrixszal C33 = A33B33 = a11 a12 a13 b11 b12 b13 a21 a22 a23 b21 b22 b23 a31 a32 a33 b31 b32 b33 c11 = a11 b11 + a12 b21 + a13 b31c12 = a11 b12 + a12 b22 + a13 b32c13 = a11 b13 + a12 b23 + a13 b33c21 = a21 b11 + a22 b21 + a23 b31 . . . cik = ai1 b1k + ai2 b2k + ai3 b3k = ai*b*k
Mátrix szorzás 3X4 • Sort Oszloppal szorzás szorzás szorzás 2X4 2X3
A Descartes-féle, derékszögű koordináta-rendszer • 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<2p). • 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 aZ tengely. • gömbkoordináták: P = (r, f, q); (0£r), f: a polárszög(0£f<2p, az alapsíkban) qazimut, (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 = Öx2+y2, (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
M p2,m2 p1,m1 p1,m1 M p2,m2 p3,m3 Pontrendszer tömegközéppontja • i=1,2,…,n tömegpontok helyvektora: pi ,tömege: mi • A pontrendszer tömegközéppontja:M = Sai·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.
Baricentrikus koordináták • a0, a1,…,an En ; és bármely n-1 kifeszíti az n dimenziós teret • minden x En -hez egyértelműen létezik {l0,l1,…ln} valósak: x = l0 a0 + l1 a1 + … + 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 • Az egyenes homogén, implicit egyenlete (E2): a·x + b·y + c = 0; a2+b2¹0;egy egyenes megadása: (a,b,c); a2+b2¹0; • Homogén koordinátákkal (H2): a·x + b·y + c·w = 0; a2+b2¹0;egy egyenes megadása: [a,b,c] h·[a,b,c]; a2+b2¹0; • A homogén egyenlet Hesse-féle normál alakja (E2):a’·x + b’·y + c’=0; a’2+b’2=1; (-1 ≤ a’,b’ ≤ +1;) (a’;b’) az egyenes iránykoszinuszai (x,y,w) [a,b,c]
Az egyenes egyenlete a síkban (2) • Az egyenes „iskolai egyenlete” (E2):y = M · x + B; csak ha B ¹ 0! • Két adott pontján át: (x2-x1) · (y-y1) = (y2-y1) · (x-x1) • illetve, ha x1¹x2 : y = ( (y2-y1)/(x2-x1) ) · (x- x1) + y1= M· (x- x1) + y1 • Adott pont, adott irány:b’· (y-y1) = -a’ · (x-x1); • illetve, ha b’¹0 : y = M · (x- x1) + y1 ;M = a’/b’
Az egyenes egyenlete a síkban (4) • Normálvektoros egyenlet: adott R pontja és n normálvektora (E2);(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 (E2,E3) • Adott (a síkban, vagy a térben) P0 és P1 pontja:X = P0 + t·(P1–P0), átrendezve: X = (1-t)·P0 + t· P1, azaz koordinátánként:x = x0 + t·(x1–x0) átrendezve: x=(1-t)x0 + t·x1 • …
Az egyenes paraméteres egyenlete (E2,E3) X = (1-t)·P + t·Qt = 0 : a P pont, t = 1 : a Q pont , 0 t 1 : a szakasz pontjai, t 0 : P oldalán kívül,t 1 : Q oldalán kívülegyenlőközű t értékek: egyenlőközű pontok,t és (1-t): baricentrikus koordináták az egyenesen
n R R Félsík megadása (E2) • Egyenlőtlenséggel: a·x + b·y + c < 0; a2+b2¹0; • Határ-egyenesével és egy pont a félsíkban • A határ-egyenes egy pontja ésnormálvektora (R, n)
Lássunk a koordináták mögé • z = 0; mi ez?Egyenlőség, egyenlet, kié-mié?0 x + 0 y + 1 z + 0 = 0sík: akármilyen x, y és z = 0; az XY sík • x + z= 0 mi az? HF !
A sík normálvektoros egyenlete (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, illetve: x·nx+ y·ny+ z·nz = px·nx+ py·ny+ pz·nz
A sík paraméteres egyenlete (E3): • 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: • A sík három, nem egy 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·rxy = qy + s·(py-qy)+t·(ry-qy), vagy: y = (1-s-t)·qy +s·py+t·ryz = qz + s·(pz-qz)+t·(rz-qz), vagy: z = (1-s-t)·qz +s·pz+t·rz.
A sík paraméteres egyenlete (E3): X = Q + s·(P-Q)+ t·(R-Q), vagy: X = (1-s-t)·Q + s·P+t·Rha 0 s, t, 1-s-t 1 : a háromszög pontjai,ha közülük egy nulla: a háromszög egyik oldala,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/grafika/jegyzet
Objektumok megadása a térben • Alkalmazástól függő • Megjelenítés függő
Megjelenítés • 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: • Módosításokra az adatstruktúrában • mozgás • elemek felvétele, törlése • Az illeszkedés, szomszédosság fontos • színezés • árnyalás
Él lista • 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
Csúcs élek lap csúcsok él él lapok Bal járat Jobb járat A 1 láb a fej a bal jobb elő utó elő utó B a 2 A c D b 3 1 e f b c b C 3 A a B d 1 4 c a f d D c 4 B b D e 1 2 a b d e d B C 2 4 e c b f e C D 2 3 c d f a f A C 4 3 d b a e D 3 Láncolt listák a e 1 c 2 C f d A b B 4
Láncolt lista a 1 A b c B f 4 d
Adott pont része-e egy konvex poliédernek? • 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? • Ha minden lapra teljesül akkor benne van • A lapon három egymást követő pontból, vektoriális szorzással a normál vektor 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 A1 n A2 A3 P ((A3-A2) (A1-A2))(P- A2)0
Konvex burok • Konvexitás • Csomagkötöző • Oszd meg és uralkodj
Konvex burok • Legyen Pi véges számú ponthalmaz konvex burka a legkisebb olyan konvexsokszög, amely még tartalmazza a Pi ponthalmazt.
Konvexitás 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 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.
B A Oszd meg és uralkodj • Két részre osztjuk a pontrendszert Felső B Alsó
Görbék • Folytonos • Érintkezik is • A görbülete is azonos
Harmadfokú görbék P3 • P(t)=at3+bt2+ct+d • P’(t) =3at2+2bt+c • Szeretnénk ha négy pont adná meg a görbét: • 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)3P1 +3t(1-t)2P2+ 3t2(1-t)P3 + t3P4 P2 P4 P1
Bezier görbék tulajdonságai • 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ó M12 P1 P2 M012 M0123 M123 M01 M23 P0 P3
Konstrukció P1 P2 P0 P3
de Casteljau Algoritmus • Hasonló algoritmus a görbe leírására • t=(0.25, 0.33) M12 P2 P1 M23 M01 t=0.25 P0 P3
Irodalom • 3D objects representation and data structure Dr Nicolas Holzschuche-mail: holzschu@cs.uct.ac.za Modified by Longin Jan Latecki: latecki@temple.edu