2010 sz, Debreceni Egyetem
Felületek A felület megadása implicit: F : R 3 R, F (x, y, z) = 0 Euler-Monge: f : [a, b] [c, d] R, z = f (x, y) paraméteres: r : [a, b] [c, d] R 3 trianguláris háló direkt megadása Megjelenítés az implicit alak sugárkövetésre jól alkalmas (raszteres algoritmus) az els három esetben is általában trianguláris háló szükséges (a grakus eszközök támogatják)
Trianguláris háló
Adatstruktúra M = (V, E, F ) a csúcsok (V ), élek (E ) és lapok (F ) listája sok problémához (láthatóság, megvilágítás,... ) irányításra van szükség lap irányítása: a lap csúcsainak rendezett megadásával: (v i, v j, v k ) irányított lap határa: (v i.v j, v k ) = {(v i, v j ), (v j, v k ), (v k, v i )} H(M) = (v i, v j, v k ) irányított háló: minden lapon tudunk olyan irányítást megadni, hogy minden bels élre (v i, v j ) H(M) és (v j, v i ) H(M)
A felületi normális implicit felület: ( ) F (x, y, z) F (x, y, z) F (x, y, z) n(x, y, z) =,, x y z parametrizált felület: r(u, v) r(u, v) n(u, v) = u v irányított lap normálisa : n = (v j v j ) (v k v i ) Bizonyos problémákhoz az itt megadott vektorokat normálni kell.
Felületek ábrázolása Láthatóság raszteres algoritmus: z-tár a poliédermodell konvex: ij látható, ha n( ij ), C r(u i, u j ) 0 ha a lemezek a centrumtól mért távolság szerint sorbarendezhet k: fest algoritmus...
A színezés problémája A két ábrán ugyanannyi háromszöglemez van
A színezés problémája Baricentrikus koordináták P 1, P 2,..., P n konvex poligon. A poligonlemez P pontjának (normált) baricentrikus koordinátái (b 1 (P), b 2 (P),..., b n (P)): n P = v i b i (P), i=1 n b i (P) = 1, b i (P) 0 i=1 háromszöglemezre: b i (P) = t i /t Kevert szín (egy lehetséges megoldás) P i színvektora C i, ekkor P színe n C = b i (P)C i i=1
A színezés problémája
Szubdivízió
Szubdivízió
Szubdivízió
Szubdivízió
Szubdivízió
Szubdivízió
Kontúr keresése Az általános kontúr probléma Adott f : R n R m, és c R m. A feladat X = f 1 (c) meghatározása. Ekvivalens megfogalmazás: g(p) = 0 megoldása, ahol g(p) = f (p) c. n = 2, m = 1: implicit görbe n = 3, m = 1: implicit felület klasszikus kontúr paraméteres megfogalmazásban: r : [a, b] [c, d] R 3, g : R 2 R, g(p) = r(p) C, r u (p) r v (p) felület síkmetszete: r : [a, b] [c, d] R 3, g : R 2 R, g(p) = r(p) x 0, n
Implicit görbe ábrázolása hálóval Az el bbi 1., 3., 4. probléma megoldása: poligonális approximációt keresünk a görbére. A poligon szakaszait a görbe és egy, a síkot kitölt háló metszéspontjai határozzák meg. (Ld. következ oldalak diáit!) 1 háromszögekkel kiparkettázzuk a síkot 2 választás: kiválasztjuk azokat a háromszögeket, amelyekbe a görbe belemetsz, vagyis a g függvény nem azonos el jel mindhárom csúcson 3 szelektív nomítás: a metsz háromszögeket nomítjuk, majd ismét választás (többször is nomíthatunk) 4 a kiválasztott háromszögekbe a görbe belép és kilép, a belépési és kilépési pont adja a poligon egy szakaszát (implicit görbe és szakasz metszéspontját a felez pont algoritmussal határozhatjuk meg el írt pontossággal) Külön gyelni kell azokat a csúcsokat, ahol g 0.
Implicit görbe ábrázolás A példán: x 3 + y 3 3axy = 0, a = 0.8: Descartes levél (durva háló)
Implicit görbe ábrázolás A példán: x 3 + y 3 3axy = 0, a = 0.8: Descartes levél (nomabb háló)
Implicit görbe ábrázolás A példán: x 3 + y 3 3axy = 0, a = 0.8: Descartes levél (szelektív nomítás)
A tórusz kontúrja A modelltranszformációt kontúr keresés el t hajtjuk végre. A probléma megoldását el ször a paramétersíkon kapjuk meg. A paramétersíkon megkapott poligont (a poligon csúcsait) föl kell vinni a felületre.
Implicit felületek ábrázolása
Parametrizált felület Deníció U R 2. Egy r : U R 3 dierenciálható leképezést reguláris parametrizált felületnek nevezünk, ha teljesül, hogy p U : rang dr(p) = 2. ( x r u (p) = u, y u, z u dr(p) = r(u, v) = (x(u, v), y(u, v), z(u, v)). ) ( x r v (p) = v, y v, z ) v x u y u z u x v y v z v p p, n = r u r v p = (r u, r v ) p = (r u (p), r v (p)) M 3 2.
Parametrizált felületek ábrázolása Trianguláris háló u i = a + b a N i, v j = c + d c M j: ij = (r(u i, v j ), r(u i+1, v j ), r(u i+1, v j+1 ) ij = (r(u i, v j ), r(u i+1, v j+1 ), r(u i, v j+1 )), M = { ij, ij } Pszeudokód for i = 1 to N do for j = 1 to M do Draw P( ij ) With_Color(n( ij )) Draw P( ij ) With_Color(n( ij ))
Forgásfelületek
Forgásfelületek Parametrizált forgásfelület c : I R 3, c(u) = (x(u), y(u), 0) r : I J R 3, r(u, v) = rot y (v)c(u). Koordinátákkal azaz cos v 0 sin v x(u) r(u, v) = 0 1 0 y(u), sin v 0 cos v 0 r(u, v) = (x(u) cos v, y(u), x(u) sin v).
Másodrend felületek Legyen A M 3 3 szimmetrikus nem zéró mátrix, a R 3, α R. F : R 3 R, p F (p) = Ap, p + 2 a, p + α. A {p R 3 F (p) = 0} halmazt másodrend felületnek nevezzük.
Másodrend felületek osztályai 1. valós ellipszoid x 2 /a 2 + y 2 /b 2 + z 2 /c 2 = 1 2. képzetes ellipszoid x 2 /a 2 + y 2 /b 2 + z 2 /c 2 = 1 3. egyköpeny hiperboloid x 2 /a 2 + y 2 /b 2 z 2 /c 2 = 1 4. kétköpeny hiperboloid x 2 /a 2 + y 2 /b 2 z 2 /c 2 = 1 5. valós másodrend kúp x 2 /a 2 + y 2 /b 2 z 2 /c 2 = 0 6. képzetes másodrend kúp x 2 /a 2 + y 2 /b 2 + z 2 /c 2 = 0 7. elliptikus paraboloid x 2 /a 2 + y 2 /b 2 + 2z = 0 8. hiperbolikus paraboloid x 2 /a 2 y 2 /b 2 + 2z = 0 9. valós elliptikus henger x 2 /a 2 + y 2 /b 2 = 1 10. képzetes elliptikus henger x 2 /a 2 + y 2 /b 2 = 1 11. hiperbolikus henger x 2 /a 2 y 2 /b 2 = 1 12. valós metsz síkpár x 2 /a 2 y 2 /b 2 = 0 13. képzetes metsz síkpár x 2 /a 2 + y 2 /b 2 = 0 14. parabolikus henger x 2 + 2y = 0 15. valós párhuzamos síkpár x 2 = 1 16. képzetes párhuzamos síkpár x 2 = 1 17. egybees síkpár x 2 = 0
Vonalfelületek: henger z r(u,v) = P + v a x a P = c(u) y Legyen c : I R 3 reguláris parametrizált görbe, a R 3 nemzéró vektor, továbbá a c. A c vezérgörbéj a alkotóirányú hengerfelület paraméteres el állítása: r : I R R 3, r(u, v) = c(u) + v a.
Vonalfelületek: kúpfelület z M x r(u,v) = v P + (1 v) M P = c(u) y Legyen c : I R 3 reguláris parametrizált görbe, M R 3 egy pont. A c vezérgörbéj M csúcspontú kúpfelület paraméteres el állítása r : I R R 3, r(u, v) = v c(u) + (1 v) M. Mivel dr(u, v) = (v c (u), M), ezért rang dr(u, 0) = rang(0, M) 2, így nem reguláris parametrizált felületet kapunk.
Súroló felületek Deníció f : [a, b] R 3 trajektória (X, Y, f / f ): [a, b] R 3 mozgó ON bázis g = (g 1, g 2 ): [c, d] R 2 keresztmetszet görbe Az általuk meghatározott súrolófelület: r(u, v) = f (u) + g 1 (v)x + g 2 (v)y Speciálisan tubus, ha g(v) = (R cos(v), R sin(v))
Súroló felület 3.5 3 2.5 z 2 1.5 1 0.5 0-0.5-1.5-1 -0.5 x 0 0.5 1 1.5-1.5-1 -0.5 0 0.5 1 y 1.5
Súroló felület (X, Y ) a f normális és a binormális is lehet. T (u) = f (u)/ f (u). Approximációja: B(u) = f f f f. F = B T f f (u + u/2) f (u u/2) (u) t
Loft felület z 1.8 2 1.6 1.4 1.2 0.8 1 0.6 0.4 0.2 0-1.5-1 -0.5 x 0 0.5 1 1 0.8 0.6 0.4 0.2 0-0.2 y -0.4-0.6-0.8 1.5-1 f, g : [a, b] R 3, v [0, 1] r(u, v) = (1 v) f (u) + v g(u)
Bilineáris felület (4 pont interpolációja) { pij i, j {0, 1} }, u, v [0, 1] (1 u)(1 v)p 00 + (1 u)vp 01 + u(1 v)p 10 + uvp 11
Coons felületek f 0 (v), f 1 (v), g 0 (u), g 1 (v) loft paraméterezés: (P 1 f )(u, v) = (1 u)f 0 (v) + uf 1 (v) hiba g 0 (u)-nál és g 1 (u)-nál: h 0 (u) = g 0 (u) (P 1 f )(u, 0), h 1 (u) = g 1 (u) (P 1 f )(u, 1) a hiba interpolációja loft paraméterezéssel: (1 v)h 0 (u) + vh 1 (u) végeredmény: (1 u)f 0 (v) + uf 1 (v) + (1 v)h 0 (u) + vh 1 (u)
Tenzori szorzat felületek m n p(u, v) = f i (u)g j (v)p ij, i=0 j=0 Bézier négyszögfelület, B-szpájn négyszögfelület
Blob-felületek Implicit el állítása: f (x) = t n exp( k i F i (x)), i=1 ahol F i (x) = 0 implicit felület (i = 1... n), a k i paraméter az i-edik felület erejét adja meg.
Feladatok Feladatok implicit problémákra implicit síkgörbék ábrázolása (pl. másodrend görbét adjunk meg mátrixával, harmadrend görbék,...) a tórusz kontúrja (a tórusz modelltranszformációval legyen változtatható) határral rendelkez forgásfelület kontúrja (pl. forgás-paraboloid, ahol nem a teljes parabolát forgatjuk) hiperbolikus paraboloid különböz síkmetszetei a tórusz különböz síkmetszetei implicit felületek ábrázolása (pl. implicit másodrend felületek)