1 / 49

Számítógépes geometria

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

jason
Download Presentation

Számítógépes geometria

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Számítógépes geometria Geometriai adatstruktúrák és algoritmusok, görbék Nagy Gyula

  2. Tartalom • Alapok • Objektumok a térben • Adatstruktúrák • Algoritmusok • Görbék

  3. 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!

  4. 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

  5. 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 ) n0; 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 területe

  6. 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.

  7. 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) = (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) O

  8. 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’ =A33X =  a11 a12 a13 x  = a21 a22 a23y  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’ 

  9. Mátrix szorzása mátrixszal C33 = A33B33 =  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

  10. Mátrix szorzás 3X4 • Sort Oszloppal szorzás szorzás szorzás 2X4 2X3

  11. 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)

  12. 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ő

  13. 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:

  14. 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

  15. 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.

  16. 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.

  17. 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]

  18. 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’

  19. 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

  20. 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 • …

  21. 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

  22. 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)

  23. 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 !

  24. 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

  25. 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.

  26. 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

  27. Winner of the Computer Graphics Forum 2006 Cover Image Contest Irodalom: http://krammer.web.elte.hu/eltettk/grafika/jegyzet

  28. Objektumok megadása a térben • Alkalmazástól függő • Megjelenítés függő

  29. Megjelenítés • Lapok és a rajtuk levő csúcsok • Inkább többször szerepeljen egy él, mint egyszer sem

  30. 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

  31. É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

  32. 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

  33. Láncolt lista a 1 A b c B f 4 d

  34. 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.

  35. 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

  36. Konvex burok • Konvexitás • Csomagkötöző • Oszd meg és uralkodj

  37. Konvex burok • Legyen Pi véges számú ponthalmaz konvex burka a legkisebb olyan konvexsokszög, amely még tartalmazza a Pi ponthalmazt.

  38. Konvexitás konvex • A K sokszög konvex ha bármely két pontjának összekötő szakasza is a hozzátartozik Nem konvex

  39. Csomagkötöző algoritmus Legkevésbé meredek élt választjuk az aktuális pontból Pontok sorszámai balról jobbra növekednek

  40. 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.

  41. B A Oszd meg és uralkodj • Két részre osztjuk a pontrendszert Felső B Alsó

  42. Görbék • Folytonos • Érintkezik is • A görbülete is azonos

  43. 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

  44. Bezier görbék

  45. 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

  46. Konstrukció M12 P1 P2 M012 M0123 M123 M01 M23 P0 P3

  47. Konstrukció P1 P2 P0 P3

  48. 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

  49. Irodalom • 3D objects representation and data structure Dr Nicolas Holzschuche-mail: holzschu@cs.uct.ac.za Modified by Longin Jan Latecki: latecki@temple.edu

More Related