számítógépes geometria

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

Upload: jason

Post on 09-Jan-2016

43 views

Category:

Documents


0 download

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Számítógépes geometria

Számítógépes geometria

Geometriai adatstruktúrák és algoritmusok, görbék

Nagy Gyula

Page 2: Számítógépes geometria

Tartalom

Alapok Objektumok a térben Adatstruktúrák Algoritmusok Görbék

Page 3: Számítógépes geometria

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!

Page 4: Számítógépes geometria

Geometriai vektorokhttp://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á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|

K

V

v

Page 5: Számítógépes geometria

Műveletek geometriai vektorokkal, 2

a b = |a| |b| cos ; szám, 0

a b = 0, ha a merőleges b -re,a b > 0, ha 0 ,a b < 0, ha ,

a × b = ( |a| |b| sin n; 0

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

Page 6: Számítógépes geometria

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 (!)

a: állása = a állásával, hossza || |a|,

irányítása megegyezik, vagy ellenkező.

- a: hossza megegyezik, iránya ellentétes a-val.

Page 7: Számítógépes geometria

Geometriai vektorok a DKR-ben

A P pont helyvektora: OP vektor 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 nullvektor (a, b, c) = (a, b, 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) = ( bf-ce, -af + cd, ae - bd ) (eredménye vektor)

P

O

Page 8: Számítógépes geometria

Vektor szorzása mátrixszal

Az X pont helyvektora: X = (x, y, z)T

ná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’

Page 9: Számítógépes geometria

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 b31

c12 = a11 b12 + a12 b22 + a13 b32

c13 = a11 b13 + a12 b23 + a13 b33

c21 = a21 b11 + a22 b21 + a23 b31

. . .

cik = ai1 b1k + ai2 b2k + ai3 b3k = ai* b*k

Page 10: Számítógépes geometria

Mátrix szorzás Sort Oszloppal

2X3

3X4

2X4

szor

zás

szor

zás

szor

zás

Page 11: Számítógépes geometria

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)

Page 12: Számítógépes geometria

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ő

Page 13: Számítógépes geometria

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, (0r), (0<2). polár-koordináták Descartes koordináták:

x = r cos , és y = r sin Descartes koordináták polár-koordináták:

Page 14: Számítógépes geometria

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, ; (0r), a polárszög (0az alapsíkban) azimut, (0

henger-koordináták: P = (r, , z) polár-koordináták derékszögű koordináták: = r sin = x2+y2, (az alapsíkban) x = cos = r sin cos; y = sin = r sin sin, z = r cos

Page 15: Számítógépes geometria

Pontrendszer tömegközéppontja

i=1,2,…,n tömegpontokhelyvektora: pi , tömege: mi

A pontrendszer tömegközéppontja:M = i·pi; i = mi / mi

a pontok súlyozott összege;0 < i < 1

Adott pi alappontok esetén

különböző mi (i) súlyok

különböző pontokat határoznak meg.

p1,m1

p2,m2

p1,m1

p2,m2

p3,m3

M

M

Page 16: Számítógépes geometria

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 {0,1,…n}

valósak: x = 0 a0 + 1 a1 + … + n an , és

i = 1 {i}: az x {ai} -re vonatkozó baricentrikus

koordinátái

Tömegpontok súlypontja: i > 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.

Page 17: Számítógépes geometria

Az egyenes egyenlete a síkban

[a,b,c] (x,y,w)

Az egyenes homogén, implicit egyenlete (E2): a·x + b·y + c = 0; a2+b20;

egy egyenes megadása: (a,b,c); a2+b20;

Homogén koordinátákkal (H2):a·x + b·y + c·w = 0; a2+b20;

egy egyenes megadása: [a,b,c] h·[a,b,c]; a2+b20;

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

Page 18: Számítógépes geometria

Az egyenes egyenlete a síkban (2)

Az egyenes „iskolai egyenlete” (E2):

y = M · x + B; csak ha B !

Két adott pontján át: (x2-x1) · (y-y1) = (y2-y1) · (x-x1)

illetve, ha x1x2 : 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’

Page 19: Számítógépes geometria

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

Page 20: Számítógépes geometria

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

Page 21: Számítógépes geometria

Az egyenes paraméteres egyenlete (E2,E3)

X = (1-t)·P + t·Q

t = 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ül

egyenlőközű t értékek: egyenlőközű pontok,t és (1-t): baricentrikus koordináták az egyenesen

Page 22: Számítógépes geometria

Félsík megadása (E2)

Egyenlőtlenséggel: a·x + b·y + c < 0; a2+b20;

Határ-egyenesével és egy pont a félsíkban

A határ-egyenes egy pontja ésnormálvektora (R, n)

R

n

R

Page 23: Számítógépes geometria

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 = 0

sík: akármilyen x, y és z = 0;

az XY sík

x + z= 0 mi az? HF !

Page 24: Számítógépes geometria

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

Page 25: Számítógépes geometria

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

Page 26: Számítógépes geometria

A sík paraméteres egyenlete (E3):

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

Page 27: Számítógépes geometria

Winner of the Computer Graphics Forum 2006 Cover Image Contest

Irodalom: http://krammer.web.elte.hu/eltettk/grafika/jegyzet

Page 28: Számítógépes geometria

Objektumok megadása a térben

Alkalmazástól függő Megjelenítés függő

Page 29: Számítógépes geometria

Megjelenítés

Lapok és a rajtuk levő csúcsok Inkább többször szerepeljen egy él,

mint egyszer sem

Page 30: Számítógépes geometria

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

Page 31: Számítógépes geometria

É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

Page 32: Számítógépes geometria

Láncolt listák

élek csúcsok lapok Bal járat Jobb járatláb fej bal jobb elő utó elő utó

a A D 3 1 e f b c b A B 1 4 c a f d c B D 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

a

b

c

d

e

f

A

B

C1 2

4

3

Csúcs élA a B b C d D e

lap él1 a 2 c 3 a 4 b

D

Page 33: Számítógépes geometria

Láncolt lista

4

1

b

A

Bf

a

d

c

Page 34: Számítógépes geometria

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.

Page 35: Számítógépes geometria

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

nA1

A2

A3

((A3-A2) (A1-A2))(P- A2)0

P

Page 36: Számítógépes geometria

Konvexitás Csomagkötöző Oszd meg és uralkodj

Konvex burok

Page 37: Számítógépes geometria

Konvex burok

Legyen Pi véges számú ponthalmaz konvex burka a legkisebb olyan konvex sokszög, amely még tartalmazza a Pi ponthalmazt.

Page 38: Számítógépes geometria

Konvexitás

A K sokszög konvex ha bármely két pontjának összekötő szakasza is a hozzátartozik

Nem konvex

konvex

Page 39: Számítógépes geometria

Csomagkötöző algoritmusLegkevésbé meredek élt választjuk az aktuális pontból

Pontok sorszámai balról jobbra növekednek

Page 40: Számítógépes geometria

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.

Page 41: Számítógépes geometria

Oszd meg és uralkodj Két részre osztjuk a pontrendszert Felső

B

Alsó

B

A

Page 42: Számítógépes geometria

Görbék

Folytonos Érintkezik is A görbülete is

azonos

Page 43: Számítógépes geometria

Harmadfokú görbék 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

P1

P2

P3

P4

Page 44: Számítógépes geometria

Bezier görbék

Page 45: Számítógépes geometria

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

Page 46: Számítógépes geometria

Konstrukció

P0

P1 P2

P3

M01

M12

M23

M012 M123

M0123

Page 47: Számítógépes geometria

Konstrukció

P0

P1 P2

P3

Page 48: Számítógépes geometria

de Casteljau Algoritmus Hasonló algoritmus a görbe

leírására t=(0.25, 0.33)

P0

P1P2

P3

M01

M12

M23

t=0.25

Page 49: Számítógépes geometria

Irodalom 3D objects representation and data structure Dr Nicolas Holzschuche-mail:

[email protected] by Longin Jan Latecki:

[email protected]