számítógépes geometria
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 PresentationTRANSCRIPT
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!
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
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
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.
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
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’
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
Mátrix szorzás Sort Oszloppal
2X3
3X4
2X4
szor
zás
szor
zás
szor
zás
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, (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:
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
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
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.
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
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’
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·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
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
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 !
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·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 (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
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
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
Láncolt lista
4
1
b
A
Bf
a
d
c
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
nA1
A2
A3
((A3-A2) (A1-A2))(P- A2)0
P
Konvexitás Csomagkötöző Oszd meg és uralkodj
Konvex burok
Konvex burok
Legyen Pi véges számú ponthalmaz konvex burka a legkisebb olyan konvex sokszög, amely még tartalmazza a Pi ponthalmazt.
Konvexitás
A K sokszög konvex ha bármely két pontjának összekötő szakasza is a hozzátartozik
Nem konvex
konvex
Csomagkötöző algoritmusLegkevé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.
Oszd meg és uralkodj Két részre osztjuk a pontrendszert Felső
B
Alsó
B
A
Görbék
Folytonos Érintkezik is A görbülete is
azonos
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
Bezier görbék
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ó
P0
P1 P2
P3
M01
M12
M23
M012 M123
M0123
Konstrukció
P0
P1 P2
P3
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
Irodalom 3D objects representation and data structure Dr Nicolas Holzschuche-mail:
[email protected] by Longin Jan Latecki: