Valasek Gábor valasek@inf.elte.hu Eötvös Loránd Tudományegyetem Informatikai Kar 2016-2017 tavaszi félév
Tartalom Áttekintés Pont/* metszés Görbe/* metszés Felület/felület metszés
Áttekintés Tartalom Áttekintés Pont/* metszés Görbe/* metszés Felület/felület metszés
Áttekintés Metszések Az első argumentum dimenziója alapján beszélhetünk 0D: pont/pont, pont/görbe, pont/felület 1D: görbe/görbe, görbe/felület 2D: felület/felület metszésekről. Viszont az egyes elemek reprezentációja nem triviális még a pont esetén sem
Áttekintés Pont Explicit: egy alkalmasan választott koordinátarendszerben x = [x, y, z] T Procedurális: a kérdéses pont valamilyen művelet eredménye, például két procedurális görbe metszése egy procedurális görbe és egy procedurális felület metszése három procedurális felület metszéspontja Implicit: három implicit felület metszéspontja, azaz x E 3 olyan, hogy f (x) = g(x) = h(x) = 0.
Áttekintés Görbék Parametrikus: r(t) : [0, 1] E 3 általában (szakaszonként) (racionális) polinomiális görbe: Bézier, racionális Bézier, B-spline, NURBS stb. procedurális: offset, evolúta stb. Implicit: síkbeli implicit görbe pontjai kielégítik a z = 0 és f (x, y) = 0 feltételeket egy térbeli görbe az f (x) = g(x) = 0 megoldása, azaz két felület metszésgörbéje
Áttekintés Felületek Parametrikus: r(u, v) : [0, 1] 2 E 3 általában (szakaszonként) (racionális) polinom: Bézier, racionális Bézier, B-spline, NURBS stb. patch-csek procedurális: offset, lekerekítések stb. Implicit: f (x) = 0
Áttekintés Metszések Irodalom: Patrikalakis és Sakkalis, 5. fejezet
Pont/* metszés Tartalom Áttekintés Pont/* metszés Görbe/* metszés Felület/felület metszés
Pont/* metszés Pont/pont metszés Tartalom Áttekintés Pont/* metszés Pont/pont metszés Pont/görbe metszés Pont/implicit görbe metszés Pont/parametrikus görbe metszés Pont/procedurális görbe metszés Pont/felület metszés Görbe/* metszés Görbe/görbe metszés Görbe/felület metszés Felület/felület metszés Parametrikus felület/implicit felület metszés Parametrikus/parametrikus felületek metszése
Pont/* metszés Pont/pont metszés Pont/pont metszés Legyen adott két pont: x 0, y 0 E 3 A két pont egybeesik (metszi egymást), ha valamilyen alkalmas ɛ > 0-ra. x 0 y 0 < ɛ Vigyázni kell: az egybeesés így nem lesz tranzitív, azaz létezhet z 0 E 3, amelyre x 0 y 0 < ɛ y 0 z 0 < ɛ de x 0 z 0 > ɛ
Pont/* metszés Pont/görbe metszés Tartalom Áttekintés Pont/* metszés Pont/pont metszés Pont/görbe metszés Pont/implicit görbe metszés Pont/parametrikus görbe metszés Pont/procedurális görbe metszés Pont/felület metszés Görbe/* metszés Görbe/görbe metszés Görbe/felület metszés Felület/felület metszés Parametrikus felület/implicit felület metszés Parametrikus/parametrikus felületek metszése
Pont/* metszés Pont/görbe metszés Pont/implicit síkgörbe Adott az x 0 E 3 pont és az f (x, y) = 0 implicit görbe a síkon Keressük az x 0 {[x, y] T f (x, y)} pontot
Pont/* metszés Pont/görbe metszés Behelyettesítés a képletbe Az implicit reprezentációk esetén minden pontra, ami rajta van a görbén f (x, y) = 0 teljesül Azonban most numerikus számításokat is figyelembe véve az egyenlőség nem várható el Ugyanígy rossz az f (x, y) ɛ összehasonĺıtás is, hiszen mivel bármilyen α 0 esetén {[x, y] T f (x, y) = 0} {[x, y] T α f (x, y) = 0}, ezért α := 1 ɛ feltétel esetén minden pontra teljesülne az egyenlőségi
Pont/* metszés Pont/görbe metszés Pont/implicit görbe távolság Egy pont és egy implicit görbe távolsága d(x 0, f ) := min x,y R:f (x,y)=0 [ x0 y 0 ] [ ] x, y ami tehát a min (x x 0 ) 2 + (y y 0 ) 2 f (x, y) = 0 x, y R feltételes minimalizálási feladat megoldása. Próbáljuk ezt most Taylor sorfejtésével közeĺıteni!
Pont/* metszés Pont/görbe metszés Távolságfüggvény közeĺıtése Taylor sorral Fejtsük Taylor sorba az implicit függvényünket x 0 körül: f (x, y) f (x 0, y 0 ) + f x (x 0, y 0 ) x + f y (x 0, y 0 ) y ahol x = x x 0, y = y y 0. A távolság stacionaritási feltételéből azon [x, y] T pontokban, amelyek minimalizálják a távolságot teljesül, hogy f y (x, y) x f x (x, y) y = 0
Pont/* metszés Pont/görbe metszés Távolságfüggvény közeĺıtése Taylor sorral Fejtsük most Taylor sorba az előbbiben szereplő f x (x, y), f y (x, y) kétváltozós függvényeket x 0 körül: f x (x, y) = f x (x 0, y 0 ) + f xx (x 0, y 0 ) x + f xy (x 0, y 0 ) y +... f y (x, y) = f y (x 0, y 0 ) + f yx (x 0, y 0 ) x + f yy (x 0, y 0 ) y +... Behelyettesítés után kapjuk, hogy a stacionaritási feltétel f y (x 0, y 0 ) x f x (x 0, y 0 ) y = 0 alakban közeĺıthető, ha elhagyjuk az első rendű deriváltnál magasabb tagokat.
Pont/* metszés Pont/görbe metszés Távolságfüggvény közeĺıtése Taylor sorral Megoldandó tehát az f y (x 0, y 0 ) x f x (x 0, y 0 ) y = 0 f (x 0, y 0 ) + f x (x 0, y 0 ) x + f y (x 0, y 0 ) y = 0 egyenletrendszer az ismeretlen x, y-ra. Fejezzük ki y-t az első egyenletből: Írjuk be a másodikba: y = f y (x 0, y 0 ) f x (x 0, y 0 ) x f (x 0, y 0 ) + f x (x 0, y 0 ) x + f y (x 0, y 0 ) f y (x 0, y 0 ) f x (x 0, y 0 ) x = 0
Pont/* metszés Pont/görbe metszés Távolságfüggvény közeĺıtése Taylor sorral Rendezzük át a f (x 0, y 0 ) + f x (x 0, y 0 ) x + f y (x 0, y 0 ) f y (x 0, y 0 ) f x (x 0, y 0 ) x = 0 egyenletet x-re: x (f x (x 0, y 0 ) + f y (x 0, y 0 ) f x (x 0, y 0 ) ) = f (x 0, y 0 ) Ebből közös nevezőre hozás és x együtthatójával való szorzás után kapjuk a végső eredményt.
Pont/* metszés Pont/görbe metszés Távolságfüggvény közeĺıtése Taylor sorral A két megoldás tehát x = f (x 0, y 0 )f x (x 0, y 0 ) fx 2 (x 0, y 0 ) + fy 2 (x 0, y 0 ) y = f (x 0, y 0 )f y (x 0, y 0 ) fx 2 (x 0, y 0 ) + fy 2 (x 0, y 0 )
Pont/* metszés Pont/görbe metszés Távolságfüggvény közeĺıtése Taylor sorral Ekkor a valódi (x x 0 ) 2 + (y y 0 ) 2 = ( x) 2 + ( y) 2 távolság elsőrendű Taylor közeĺıtése ( f (x0, y 0 )f x (x 0, y 0 ) d = f 2 x (x 0, y 0 ) + f 2 y (x 0, y 0 ) amennyiben f (x 0, y 0 ) 0. ) 2 ( f (x0, y 0 )f y (x 0, y 0 ) + fx 2 (x 0, y 0 ) + fy 2 (x 0, y 0 ) ) 2
Pont/* metszés Pont/görbe metszés Távolságfüggvény közeĺıtése Taylor sorral A távolság elsőrendű Taylor közeĺıtése röviden pedig ( f (x0, y 0 )f x (x 0, y 0 ) d = f 2 x (x 0, y 0 ) + f 2 y (x 0, y 0 ) ) 2 ( f (x0, y 0 )f y (x 0, y 0 ) + fx 2 (x 0, y 0 ) + fy 2 (x 0, y 0 ) f = 2 (x 0, y 0 )fx 2 (x 0, y 0 ) (fx 2 (x 0, y 0 ) + fy 2 (x 0, y 0 )) 2 + f 2 (x 0, y 0 )f 2 y (x 0, y 0 ) (fx 2 (x 0, y 0 ) + fy 2 (x 0, y 0 )) 2 = f 2 (x 0, y 0 ) f x 2 (x 0, y 0 ) + fy 2 (x 0, y 0 ) = f (x 0, y 0 ) f (x 0, y 0 ) amennyiben f (x 0, y 0 ) 0. (f 2 x (x 0, y 0 ) + f 2 y (x 0, y 0 )) 2 ) 2
Pont/* metszés Pont/görbe metszés Pont/implicit síkgörbe metszés Az x 0 pont tehát rajta van az f (x, y) = 0 görbén, ha teljesülése esetén igaz még, hogy f (x 0, y 0 ) < ɛ f (x 0, y 0 ) f (x 0, y 0 ) < δ megfelelő ɛ, δ > 0 küszöbökre. Megjegyzés: Amennyiben van rá lehetőség, az f (x, y) implicit reprezentációt normáljuk úgy, hogy a számításokban értékes tartományban f (x, y) 1 legyen.
Pont/* metszés Pont/görbe metszés Pont/implicit egyenes - kitérő Tekintsük most a következő pont/pont egybeesés vizsgálatot: x 0 {[x, y] T f (x, y) = g(x, y) = 0} Abban az esetben, hogy ha a két görbe közel párhuzamos nem elég az az egyezési feltétel, hogy f (x 0, y 0 ) < ɛ δ 1 = f (x 0, y 0 ) f (x 0, y 0 ) < δ g(x 0, y 0 ) < ɛ δ 2 = g(x 0, y 0 ) g(x 0, y 0 ) < δ
Pont/* metszés Pont/görbe metszés Pont/implicit egyenes - kitérő
Pont/* metszés Pont/görbe metszés Pont/implicit egyenes - kitérő
Pont/* metszés Pont/görbe metszés Pont/implicit egyenes - kitérő Tehát a valódi metszésponttól való távolságot jobban közeĺıti a δ 3 δ 1 + δ 2 ϕ < δ feltétel az ϕ : 1 (δ 1 + δ 2 ) : δ 3 arányokból, ahol ϕ cos 1 f (x 0, y 0 ) f (x 0, y 0 ) g(x 0, y 0 ) g(x 0, y 0 )
Pont/* metszés Pont/görbe metszés Pont/parametrikus görbe metszés Több megközeĺıtés is lehetséges: Elemi megoldás valamilyen nem lineáris megoldóval Dobozolás és minimalizálás, azaz AABB-k segítségével egyszerű esetek szűrése, majd küszöbnél kisebb BB esetén minimalizáljuk a x 0 r(t) különbséget Távolságmező alapú módszereknél a távolságmező stacionárius pontjait keressük. Implicitizálás pedig visszavezeti a feladatot az implicit alakban adott görbével való metszésre.
Pont/* metszés Pont/görbe metszés Pont/procedurális görbe metszés Itt a görbének csak egy általános r(t) kiértékelésére van lehetőség Bizonyos speciális procedurális görbékre (offset, evolúta) feĺırható úgy a minimalizálásra, hogy klasszikus polinomiális megoldókkal is el tudjunk bánni vele Erre használható például a PPM is
Pont/* metszés Pont/felület metszés Tartalom Áttekintés Pont/* metszés Pont/pont metszés Pont/görbe metszés Pont/implicit görbe metszés Pont/parametrikus görbe metszés Pont/procedurális görbe metszés Pont/felület metszés Görbe/* metszés Görbe/görbe metszés Görbe/felület metszés Felület/felület metszés Parametrikus felület/implicit felület metszés Parametrikus/parametrikus felületek metszése
Pont/* metszés Pont/felület metszés Pont/implicit felület metszés Eldöntendő, hogy x 0 E 3 rajta van-e f (x, y, z) = 0 felületen A görbéknél látotthoz hasonló levezetés után kapjuk, hogy ez igaznak vehető, hogy ha mellett teljesül az, hogy f (x 0 ) < ɛ f (x 0 ) f (x 0 ) < δ megfelelő ɛ, δ > 0 értékekre, feltéve, hogy f (x 0 ) 0.
Pont/* metszés Pont/felület metszés Pont/parametrikus felület metszés Elemi, pl. Newton-nal, Dobozolás és felosztás, Távolságfüggvény alapú hasonlóan, mint görbéknél. Implicitizáció általánosan szinte lehetetlen: a végső fokszám már egész polinom felületek esetén is q 2nm. Speciális felületekre (pl. forgásfelület) viszont egyszerűbb a feladat, de külön diszkussziót igényel.
Pont/* metszés Pont/felület metszés Pont/procedurális felület metszés Általános esetben itt is valamilyen minimalizálást kell alkalmazni Speciális esetben használhatóak nemlineáris polinom solverek
Görbe/* metszés Tartalom Áttekintés Pont/* metszés Görbe/* metszés Felület/felület metszés
Görbe/* metszés Görbe/görbe metszés Tartalom Áttekintés Pont/* metszés Pont/pont metszés Pont/görbe metszés Pont/implicit görbe metszés Pont/parametrikus görbe metszés Pont/procedurális görbe metszés Pont/felület metszés Görbe/* metszés Görbe/görbe metszés Görbe/felület metszés Felület/felület metszés Parametrikus felület/implicit felület metszés Parametrikus/parametrikus felületek metszése
Görbe/* metszés Görbe/görbe metszés Görbe/görbe metszés Kombinatorikus ez rendkívül összetett is lehet: az argumentumgörbék többfélre reprezentációból jöhetnek Pl. parametrikus, implicit, procedurális Ezért csak néhány példát nézünk meg
Görbe/* metszés Görbe/görbe metszés Parametrikus görbe/implicit síkgörbe metszés Adott egy f (x, y) = 0 implicit és egy r(t) : [a, b] E 2 parametrikus görbe Megoldandó f (r(t)) = 0, t-re Ha az egyik n-edfokú, a másik pedig m-edfokú, akkor egy nm-edfokú gyökkeresési feladatot kell csak megoldani
Görbe/* metszés Görbe/görbe metszés Parametrikus görbe/implicit síkgörbe metszés példa
Görbe/* metszés Görbe/görbe metszés Parametrikus görbe/implicit síkgörbe metszés példa Keressük az f (x, y) = x2 4 + y 2 1 = 0 ellipszis és a [ ] [ ] [ ] [ ] 0 1 2 2 b 0 =, b 1 1 =, b 4 2 =, b 1 3 = 0 vezérlőpontokkal adott egész harmadfokú Bézier görbe metszéspontjait. Az F (t) = f (b(t)) behelyettesítés és kifejtés után kapjuk, hogy F (t) = 1025t 6 3840t 5 +5514t 4 3728t 3 +1149t 2 120t = 0
Görbe/* metszés Görbe/görbe metszés Parametrikus görbe/implicit síkgörbe metszés példa Ez felbontható módon, ahol F (t) = t(t 1) 2 G(t) G(t) = 1025t 3 1790t 2 + 909t 120. Numerikusan jobban járunk, ha az utóbbit oldjuk meg, mert ott G(t) gyökei 0.9228, 0.61843, 0.2051 lesznek, míg a hatodfokú F (t) gyökeinél (lebegőpontos felbontástól függően) komplex gyököket is kaphatunk (tipikusan a többszörös gyököknél)
Görbe/* metszés Görbe/görbe metszés Parametrikus görbe/implicit térgörbe metszés Adott egy f (x, y, z) = g(x, y, z) = 0 implicit és egy r(t) : [a, b] E 2 parametrikus görbe Megoldandó r(t) f g, t-re Feltehetjük, hogy a parametrikus görbe racionális, azaz r(t) = x(t) w(t) y(t) w(t) z(t) w(t)
Görbe/* metszés Görbe/görbe metszés Parametrikus görbe/implicit térgörbe metszés Az előbb látottaknak megfelelően képezhetőek az F (t) = f (r(t)) és G(t) = g(r(t)) egyváltozós polinomok Ha az F és G rezultánsa azonosan nulla, akkor van közös gyökük használhatjuk a PPM-et a túlhatározott F 1 (t) = F 2 (t) = 0 egyenletrendszer megoldására De máshogy megközeĺıtve közvetlen is megoldhatjuk az x(t) xw(t) = 0 y(t) yw(t) = 0 z(t) zw(t) = 0 f (x, y, z) = 0 g(x, y, z) = 0 egyenletrendszert az ismeretlen x, y, z, t-re.
Görbe/* metszés Görbe/görbe metszés Parametrikus görbe/parametrikus görbe metszés Megoldandó r 1 (t) r 2 (s) az ismeretlen s, t [0, 1] paraméterekre. Ez egy túlhatározott, háromegyenletes, kétváltozós egyenletrendszer Közvetlenül megoldható PPM-mel (IPP-vel robosztusan)
Görbe/* metszés Görbe/görbe metszés Parametrikus görbe/parametrikus görbe metszés Dobozolással megoldható, ha konvex héj tulajdonságú bázisban vagyunk Azonosítsuk azokat a részeket, amik felett a befoglalók metszik egymást és ha ez a metszés véges, akkor számítsuk ki a metszéspontot (például tangensegyenesekkel való helyettesítéssel) Vigyázzunk a tangenciális metszéseknél!
Görbe/* metszés Görbe/görbe metszés Implicit síkgörbe/implicit síkgörbe metszés Keressük az f (x, y) g(x, y) metszéspontot Közvetlen megoldható az f (x, y) = g(x, y) = 0 egyenletrendszerre alkalmazva egy megoldót
Görbe/* metszés Görbe/görbe metszés Implicit síkgörbe/implicit síkgörbe metszés Implicitizálással, azaz ebben az esetben az egyik változó kiküszöbölésével is megoldható Például tekintsük az f (x, y) = x2 4 + y 2 1 = 0 ellipszis és a g(x, y) = (x 1) 2 + y 2 1 = 0 kör metszését Az y 2 = 1 x2 4 felhasználásával 3x 2 8x + 4 = 0 adódik, ahonnan a két metszéspont [2, 0] t, [ 2 3, 8 9 ]T Ez numerikusan tud fájni azért: x = 2 + ɛ y 2 = ɛ(1 + ɛ 4 ) < 0
Görbe/* metszés Görbe/felület metszés Tartalom Áttekintés Pont/* metszés Pont/pont metszés Pont/görbe metszés Pont/implicit görbe metszés Pont/parametrikus görbe metszés Pont/procedurális görbe metszés Pont/felület metszés Görbe/* metszés Görbe/görbe metszés Görbe/felület metszés Felület/felület metszés Parametrikus felület/implicit felület metszés Parametrikus/parametrikus felületek metszése
Görbe/* metszés Görbe/felület metszés Parametrikus görbe/implicit felület Megoldandó r(t) f (x) = 0 Behelyettesítés után gyökkeresővel megoldható, vagy ez is feĺırható x, y, z, t-ben egy egyenletrendszerként, amikot PPM-mel meg lehet oldani
Görbe/* metszés Görbe/felület metszés Parametrikus görbe/parametrikus felület Megoldandó r(t) = s(u, v) Három ismeretlen (t, u, v), három egyenlet, PPM-mel megoldható Érdemes egy előzetes ellenőrzést csinálni, hogy egyáltalán létezik-e metszéspont (pl. konvex héj tulajdonsággal)
Görbe/* metszés Görbe/felület metszés Parametrikus görbe/parametrikus felület Dobozolással és átfedő részeken vett lineáris közeĺıtések megoldásából kapott metszésekkel Ezekből a metszésekből Newton-okat indítunk az r(t) s(u, v) = 0 megoldására Vagy minimalizáljuk az r(t)s(u, v) 2 célfüggvényt
Felület/felület metszés Tartalom Áttekintés Pont/* metszés Görbe/* metszés Felület/felület metszés
Felület/felület metszés Parametrikus felület/implicit felület metszés Tartalom Áttekintés Pont/* metszés Pont/pont metszés Pont/görbe metszés Pont/implicit görbe metszés Pont/parametrikus görbe metszés Pont/procedurális görbe metszés Pont/felület metszés Görbe/* metszés Görbe/görbe metszés Görbe/felület metszés Felület/felület metszés Parametrikus felület/implicit felület metszés Parametrikus/parametrikus felületek metszése
Felület/felület metszés Parametrikus felület/implicit felület metszés Parametrikus felület/implicit felület metszés Keressük az r(u, v) f (x) = 0 metszetet, ahol u, v [0, 1] Ez négy egyenlet öt ismeretlennel (a metszéspont u, v paraméterei és x, y, z koordinátái) Alacsony fokszámú r(u, v) és f (x) esetén behelyettesítés után egy kétváltozós F (u, v) = 0, alacsony fokszámú implicit egyenletet kapunk, ami átírható racionális alakba Általában viszont ennél sokkal nehezebb dolgunk lesz: két felület metszete állhat pontok, görbék és felületdarabok halmazából
Felület/felület metszés Parametrikus felület/implicit felület metszés Parametrikus felület/implicit felület metszés A megoldandó feladat megfogalmazása után a következő lépésekből álló algoritmussal tudjuk megkeresni a metszetgörbét: 1. Metszésgörbék egy-egy pontjának meghatározása 2. Végigmenni ezeken a metszésgörbéken (tracing)
Felület/felület metszés Parametrikus felület/implicit felület metszés Feladat megfogalmazása Legyen adott az implicit felület f (x, y, z) = m m i i=0 j=0 m i j k=0 c ijk x i y j z k = 0 alakban. Helyettesítsük bele a parametrikus felületet r(u, v) = x(u,v) w(u,v) y(u,v) w(u,v) z(u,v) w(u,v)
Felület/felület metszés Parametrikus felület/implicit felület metszés Feladat megfogalmazása Behelyettesítés után kapjuk, hogy F (u, v) = m m i i=0 j=0 m i j k=0 c ijk x i (u, v)y j (u, v)z k (u, v)w m i j k (u, v) = 0 Ez lényegében egy N, M-edfokú polinom u-ban és v-ben, azaz F (u, v) = M N a ij u i v j i=0 j=0 alakú. A feladat tehát végigkövetni az F (u, v) = 0 görbét, beleértve minden ágát, hurkát, szingularitását
Felület/felület metszés Parametrikus felület/implicit felület metszés Feladat átalakítása Írjuk fel Bernstein bázisban a polinomot, azaz legyenek c ij olyanok, hogy F (u, v) = M N c ij Bi m (u)bj n (v) = 0 i=0 j=0 A Bernstein polinom nem csak a numerikus pontosság, hanem a konvex héj tulajdonság miatt is jó választás
Felület/felület metszés Parametrikus felület/implicit felület metszés Tracing - feladat Legyen adott egy u 0, v 0 pont a metszetgörbe egyik ágán, azaz amire F (u 0, v 0 ) = 0. Keressük azt a δu, δv változtatást, amivel F (u + δu, v + δv) = 0 is teljesül
Felület/felület metszés Parametrikus felület/implicit felület metszés Tracing - lépés Fejtsük Taylor sorba F (u, v)-t (u 0, v 0 ) körül: F (u 0 +δu, v 0 +δv) = F (u 0, v 0 )+F u (u 0, v 0 δu+f v (u 0, v 0 )δv +... Amennyiben F 2 u (u 0, v 0 ) + F 2 v (u 0, v 0 ) 0, a keresett lépésre vagy másképp F u δu + F v δv = 0 δv L = F u F v δu adódik, ha F v 0 (ha F v 0 nagyon kicsi, akkor érdemes δu-t kifejezni).
Felület/felület metszés Parametrikus felület/implicit felület metszés Tracing - lépés és javítás
Felület/felület metszés Parametrikus felület/implicit felület metszés Tracing - javítás Tehát előfordulhat, hogy F (u + δu, v + δv) 0 Ekkor például egy Newton-nal megkereshetjük azt a v-t amire F (u 0 + δu, v) = 0 teljesül Kezdeti becslésnek pedig indulhatunk a v = v 0 + δv L -ből
Felület/felület metszés Parametrikus felület/implicit felület metszés Tracing - D.E.-ként Alternatívaként megoldható az F u u + F v v = 0 differenciálegyenlet, ahol u = u(t), v = v(t) a metszésgörbe( aktuális ágának) egy paraméterezése A megoldás u = ξf v (u, v) v = ξf u (u, v) alakú, ahol ξ egy tetszőleges konstans
Felület/felület metszés Parametrikus felület/implicit felület metszés Tracing - D.E.-ként A ξ válaszható úgy, hogy egy ívhossz szerinti paraméterezést keressünk (numerikusan) Azaz 1 ξ = ± EF 2 v 2FF u F v + GFu 2 Akárhogy is, numerikus integrálással megoldható a D.E.R. (két elsőrendű, nemlineáris diff. egyenletünk van) Vigyázzunk a lépéshosszra
Felület/felület metszés Parametrikus felület/implicit felület metszés Tracing - lépéshossz
Felület/felület metszés Parametrikus felület/implicit felület metszés Kezdeti pontok meghatározása Találnunk kell még a két felület metszetelemeinek minden ágán egy-egy pontot Ezekből a pontokból aztán külön-külön indíthatunk egy tracing-et De mik legyenek ezek a pontok?
Felület/felület metszés Parametrikus felület/implicit felület metszés Karakterisztikus pontok
Felület/felület metszés Parametrikus felület/implicit felület metszés Karakterisztikus pontok Határpontok: az F (u, v) = 0 görbe metszetei a parametrikus határokkal ([0, 1] 2 ) Fordulópontok: ahol az F (u, v) = 0 görbe tangense valamelyik parametrikus tengellyel párhuzamos lesz Szinguláris pontok: ahol F u (u, v) = F v (u, v) = F (u, v)
Felület/felület metszés Parametrikus felület/implicit felület metszés Karakterisztikus pontok - fordulópontok Lényegében az F (u, v) = F u (u, v) = 0 (u-forduló) illetve az F (u, v) = F v (u, v) = 0 egyenletrendszerek megoldását keressük Általánosan ha F u-ban M, v-ben N-edfokú, akkor a két-két egyenletből álló egyenletrendszer közös gyökeinek száma legfeljebb 2MN M és 2MN N De ezeknek csak kis része esik [0, 1] 2 -be, így mehet numerikus gyökkeresés (vagy PPM)
Felület/felület metszés Parametrikus felület/implicit felület metszés Karakterisztikus pontok - szinguláris pontok Ezek azok a pontok tehát, amelyek egyszerre kielégítik az F = F u = F v = 0 egyenleteket Ha tudjuk, hogy F = 0, akkor F (u, v) = w m (u, v)f (x(u, v), y(u, v), z(i, v))-t deriválva F u = mw m 1 w u f + w m (f x x u + f y y u + f z z u ) = w m f r u F v = w n f r v Azaz a szingularitás F u = F v = 0 feltételéből azt kapjuk, hogy szinguláris pontokban f r u r v A szinguláris pontok maximális száma 2MN M N + 1
Felület/felület metszés Parametrikus felület/implicit felület metszés Szinguláritások Sokkal több információt tárolnak, mint gondolnánk A témában egy kiemelkedő könyv: I. R. Porteous: Geometric Differentiation - For the Intelligence of Curves and Surfaces
Felület/felület metszés Parametrikus/parametrikus felületek metszése Tartalom Áttekintés Pont/* metszés Pont/pont metszés Pont/görbe metszés Pont/implicit görbe metszés Pont/parametrikus görbe metszés Pont/procedurális görbe metszés Pont/felület metszés Görbe/* metszés Görbe/görbe metszés Görbe/felület metszés Felület/felület metszés Parametrikus felület/implicit felület metszés Parametrikus/parametrikus felületek metszése
Felület/felület metszés Parametrikus/parametrikus felületek metszése Parametrikus/parametrikus felületek metszése Adott két parametrikus felület [0, 1] 2 felett: r 1 (u, v) = x 1 (u,v) w 1 (u,v) y 1 (u,v) w 1 (u,v) z 1 (u,v) w 1 (u,v) Keressük a metszésgeometriáikat, r 2(s, t) = x 2 (s,t) w 2 (s,t) y 2 (s,t) w 2 (s,t) z 2 (s,t) w 2 (s,t)
Felület/felület metszés Parametrikus/parametrikus felületek metszése Rács módszerek Vegyük r 1 -en izogörbék egy seregét és számítsuk ki ezek metszéseit r 2 -vel Ezután a metszéspontokat kössük össze, hogy megkapjuk az eredeti felületek közötti metszésgeometriák különböző ágait Az izogörbe mintavételezését meghatározó rács felbontásán múlik az eredmény pontossága
Felület/felület metszés Parametrikus/parametrikus felületek metszése Marching Avagy tracing - adott kezdőpontokból, a metszetgörbék differenciálgeometriai tulajdonságait felhasználva lépünk végig Azaz szükségünk van kezdőpontokra (azokra, amiket az előbb is láttunk) Majd pedig arra, hogy miképp haladhatunk tovább a metszetgörbén
Felület/felület metszés Parametrikus/parametrikus felületek metszése Marching A kezdőpontból egy adott irányba kell haladunk Azaz ha c(s) az akutális metszetgörbe át, akkor c (s) = [m 1 (u, v) m 2 (s, t)] 0 egy természetes paraméterezését adó diffegyenlet
Felület/felület metszés Parametrikus/parametrikus felületek metszése Implicit/implicit felület metszés A marching kiterjeszthető két implicit felület metszésére is Az ötlet az, hogy kifejezzük az egyik változót (pl. z) a többivel Majd a maradék két tengely felett végig menetelünk a metszetgörbén A z koordinátát pedig a kifejezésből visszakapjuk