Valasek Gábor

Hasonló dokumentumok
Valasek Gábor

Tartalom. Geometria közvetlen tárolása. Geometria tárolása - brute force. Valasek Gábor valasek@inf.elte.hu. Hermite interpoláció. Subdivision görbék

Hajder Levente 2018/2019. II. félév

Valasek Gábor tavaszi félév

Görbe- és felületmodellezés. Szplájnok Felületmodellezés

3D - geometriai modellezés, alakzatrekonstrukció, nyomtatás

3D - geometriai modellezés, alakzatrekonstrukció, nyomtatás

GPK M1 (BME) Interpoláció / 16

Lineáris algebra numerikus módszerei

Eddig csak a polinom x-ben felvett értékét kerestük

2014/2015. tavaszi félév

MÉSZÁROS JÓZSEFNÉ, NUMERIKUS MÓDSZEREK

LNM folytonos Az interpoláció Lagrange interpoláció. Lineáris algebra numerikus módszerei

Klár Gergely 2010/2011. tavaszi félév

Matematika III előadás

Matematika III előadás

Görbemodellezés. Interpoláció Approximáció

(Solid modeling, Geometric modeling) Testmodell: egy létező vagy elképzelt objektum digitális reprezentációja.

1.9. B - SPLINEOK B - SPLINEOK EGZISZTENCIÁJA. numerikus analízis ii. 34. [ a, b] - n legfeljebb n darab gyöke lehet. = r (m 1) n = r m + n 1

x = cos αx sin αy y = sin αx + cos αy 2. Mi a X/Y/Z tengely körüli forgatás transzformációs mátrixa 3D-ben?

CAD technikák A számítógépes tervezés geometriai alapjai: görbék típusai, matematikai leírás, manipulációk görbékkel.

Geometriai modellezés. Szécsi László

3D Számítógépes Geometria II.

3D Számítógépes Geometria II.

Polinomok, Lagrange interpoláció

Diszkréten mintavételezett függvények

3D Számítógépes Geometria II.

Számítógépes Grafika mintafeladatok

Klár Gergely 2010/2011. tavaszi félév

Geometria brute force tárolása

Görbék és felületek modellezése Juhász, Imre

Matematika szigorlat június 17. Neptun kód:

0-49 pont: elégtelen, pont: elégséges, pont: közepes, pont: jó, pont: jeles

Fraktálok. Kontrakciók Affin leképezések. Czirbusz Sándor ELTE IK, Komputeralgebra Tanszék. TARTALOMJEGYZÉK Kontrakciók Affin transzformációk

sin x = cos x =? sin x = dx =? dx = cos x =? g) Adja meg a helyettesítéses integrálás szabályát határozott integrálokra vonatkozóan!

4. Felületek Forgásfelületek. Felületek 1. Legyen adott egy paramétersíkbeli T tartomány. A paramétersíkot az u és v koordinátatengelyekkel

MATLAB. 5. gyakorlat. Polinomok, deriválás, integrálás

Alap-ötlet: Karl Friedrich Gauss ( ) valószínűségszámítási háttér: Andrej Markov ( )

Numerikus módszerek II. zárthelyi dolgozat, megoldások, 2014/15. I. félév, A. csoport. x 2. c = 3 5, s = 4

Totális Unimodularitás és LP dualitás. Tapolcai János

Taylor-polinomok. 1. Alapfeladatok április Feladat: Írjuk fel az f(x) = e 2x függvény másodfokú Maclaurinpolinomját!

1. feladatsor: Vektorterek, lineáris kombináció, mátrixok, determináns (megoldás)

Gauss-Jordan módszer Legkisebb négyzetek módszere, egyenes LNM, polinom LNM, függvény. Lineáris algebra numerikus módszerei

Numerikus matematika vizsga

17. előadás: Vektorok a térben

Koordináta-geometria feladatok (emelt szint)

Feladatsor A differenciálgeometria alapja c. kurzus gyakorlatához

3. Görbe modellezés. Görbe modellezés 1

Legkisebb négyzetek módszere, Spline interpoláció

Valasek Gábor tavaszi félév

TÉRINFORMATIKAI ALGORITMUSOK

5 1 6 (2x3 + 4) 7. 4 ( ctg(4x + 2)) + c = 3 4 ctg(4x + 2) + c ] 12 (2x6 + 9) 20 ln(5x4 + 17) + c ch(8x) 20 ln 5x c = 11

GÖRBÉK ÉS FELÜLETEK ILLESZTÉSE KÉNYSZEREKKEL II.

Számítógépes geometria (mester kurzus) III

Termék modell. Definíció:

Hajder Levente 2017/2018. II. félév

3D számítógépes geometria és alakzatrekonstrukció

Konjugált gradiens módszer

Számítógépes Grafika SZIE YMÉK

10. Koordinátageometria

TÉRINFORMATIKAI ALGORITMUSOK

Numerikus Matematika

Határozott integrál és alkalmazásai

Oktatási Hivatal. 1 pont. A feltételek alapján felírhatók az. összevonás után az. 1 pont

Kalkulus I. gyakorlat Fizika BSc I/1.

Szendrői Balázs: Algebrai síkgörbék, szerkesztette: Ádám Liliána, Ódor Gergő, Lajos Mátyás

Többváltozós, valós értékű függvények

Megoldott feladatok november 30. n+3 szigorúan monoton csökken, 5. n+3. lim a n = lim. n+3 = 2n+3 n+4 2n+1

Integrálszámítás. a Matematika A1a-Analízis nevű tárgyhoz november

Megoldás: Mindkét állítás hamis! Indoklás: a) Azonos alapú hatványokat úgy szorzunk, hogy a kitevőket összeadjuk. Tehát: a 3 * a 4 = a 3+4 = a 7

3D-s számítógépes geometria és alakzatrekonstrukció

Koordinátageometriai gyakorló feladatok I ( vektorok )

HÁZI FELADATOK. 1. félév. 1. konferencia A lineáris algebra alapjai

KOVÁCS BÉLA, MATEMATIKA II.

Végeselem modellezés alapjai 1. óra

Modellek és Algoritmusok - 2.ZH Elmélet

Felületek differenciálgeometriai vizsgálata

Matematika II képletek. 1 sin xdx =, cos 2 x dx = sh 2 x dx = 1 + x 2 dx = 1 x. cos xdx =,

Matematika I. Vektorok, egyenesek, síkok

Síkgörbék. 1. Készítsünk elfogadható ábrát a G: t frac(1/t) leképezés gráfjáról. (frac a törtrész függvény, ez a Maple függvénynév is.

Egyenletek, egyenlőtlenségek VII.

3D számítógépes geometria és alakzatrekonstrukció

KOVÁCS BÉLA, MATEMATIKA I.

1. Generátorrendszer. Házi feladat (fizikából tudjuk) Ha v és w nem párhuzamos síkvektorok, akkor generátorrendszert alkotnak a sík vektorainak

Gyakorló feladatok. Agbeko Kwami Nutefe és Nagy Noémi

Numerikus matematika. Irodalom: Stoyan Gisbert, Numerikus matematika mérnököknek és programozóknak, Typotex, Lebegőpontos számok

Felügyelt önálló tanulás - Analízis III.

KOVÁCS BÉLA, MATEMATIKA I.

Matematika II. 1 sin xdx =, 1 cos xdx =, 1 + x 2 dx =

Numerikus integrálás április 18.

Feladatok a Gazdasági matematika II. tárgy gyakorlataihoz

TÉRINFORMATIKAI ÉS TÁVÉRZÉKELÉSI ALKALMAZÁSOK FEJLESZTÉSE

Gauss-Seidel iteráció

1 Lebegőpontos számábrázolás

Egy általános iskolai feladat egyetemi megvilágításban

Sorozatok, sorok, függvények határértéke és folytonossága Leindler Schipp - Analízis I. könyve + jegyzetek, kidolgozások alapján

Függvény határérték összefoglalás

Matematikai háttér. 3. Fejezet. A matematika hozzászoktatja a szemünket ahhoz, hogy tisztán és világosan lássa az igazságot.

Trigonometria Megoldások. 1) Igazolja, hogy ha egy háromszög szögeire érvényes az alábbi összefüggés: sin : sin = cos + : cos +, ( ) ( )

Átírás:

Valasek Gábor valasek@inf.elte.hu Eötvös Loránd Tudományegyetem Informatikai Kar 2014/2015. őszi félév

Tartalom 1 Motiváció Görbék Hermite interpoláció Catmull-Rom spline Kochanek-Bartels spline Műveletek görbékkel Subdivision görbék Felületek Doo-Sabin Bézier háromszögek 2 Topológia tárolása Szárnyas-él adatszerkezet Fél-él adatszerkezet

Motiváció Tartalom 1 Motiváció Görbék Hermite interpoláció Catmull-Rom spline Kochanek-Bartels spline Műveletek görbékkel Subdivision görbék Felületek Doo-Sabin Bézier háromszögek 2 Topológia tárolása Szárnyas-él adatszerkezet Fél-él adatszerkezet

Motiváció Láttuk hogyan kell egyszerű geometriai elemeket (pont, szakasz, háromszög) megjeleníteni a képernyőn Hogyan tároljuk az összetett geometriákat? Mivel írhatnánk le egy bonyolult alakzatot hatékonyan a számítógépen?

Motiváció

Motiváció

Motiváció

Görbék Tartalom 1 Motiváció Görbék Hermite interpoláció Catmull-Rom spline Kochanek-Bartels spline Műveletek görbékkel Subdivision görbék Felületek Doo-Sabin Bézier háromszögek 2 Topológia tárolása Szárnyas-él adatszerkezet Fél-él adatszerkezet

Görbék Görbék leírása Az görbéket ponthalmazoknak tekintjük. Hogyan adjuk meg ezeket a halmazokat? explicit: y = f (x) [ ] x(t) parametrikus: p(t) =, t R y(t) implicit: x 2 + y 2 9 = 0

Görbék Lineáris interpoláció Legyen adott két pont, a, b R 3. A két ponton átmenő egyenes parametrikus egyenlete: ahol t R. p(t) = (1 t)a + tb, Ha t [0, 1], akkor az a, b pontokat összekötő egyenes szakaszt kapjuk.

Görbék Lineáris interpoláció Ez a legegyszerűbb görbe a két pont között Hogyan lesz ebből szép görbe? Szép valami szépen, folytonosan változó

Görbék Szépség - parametrikus folytonosság C 0 : a görbében/felületben nincsenek lyukak, nem szakad meg sehol C 1 : a derivált is folytonosan változik (DE: a derivált paraméterezéstől függ!) C 2 : a görbe/felület második deriváltjai is folytonosan változnak

Görbék Szépség - deriváltak [ ] x(t) Ne feledjük, parametrikus görbe p(t) = alakú y(t) [ x Tehát a deriváltak p (t) = ] [ (t) x y, p (t) (t) = ] (t) y stb. (t) alakúak [ t Példa: mi a deriváltja a p(t) = 2 ] + t t 3 görbének a t = 0 és t = 1 pontokban? Példa: mi lesz az első és második deriváltgörbéje (hodográfja) a p(t) = (1 t)a + tb görbének?

Görbék Parametrikus folytonosság Legyen adott két parametrikus görbe, r(t), s(t) : [0, 1] E 3, amelyeknek van egy közös pontja, azaz pl. r(1) = s(0) = p. Ekkor a két görbe a p-ben C 0 r(1) = s(0) C 1 C 0 r (1) = s (0) C 2 C 1 r (1) = s (0) C n C n 1 r (n) (1) = s (n) (0)

Görbék Parametrikus folytonosság

Görbék Parametrikus folytonosság

Görbék Parametrikus folytonosság

Görbék Törött vonal Adottak p i R 3, i = 0,..., n pontok és mindegyik p i, p i+1, i = 0,..., n 1 pontpárt kössünk össze egy szakasszal! Legyenek t 0 t 1... t n R paraméterek a p i pontokhoz hozzárendelve Ekkor az eredmény törött vonal felírható egyetlen paraméterrel is: ha a t [t 0, t n ] paraméter aktuális értékére t [t i, t i+1 ] igaz, akkor a hozzátartozó pont t i+1 t p i + t t i p i+1 t i+1 t i t i+1 t i Ez egy interpoláló megközelítés, azaz a reprezentációt képező ponthalmaz összes elemén áthalad a reprezentált görbe

Görbék Törött vonal Ha egy sima görbét szeretnénk ábrázolni, akkor szakaszokkal kell közelítenünk (lényegében: tesszellálni)

Görbék Törött vonal Ha egy sima görbét szeretnénk ábrázolni, akkor szakaszokkal kell közelítenünk (lényegében: tesszellálni)

Görbék Polinomiális görbék Ha C 0 -nál magasabb fokú garantált (!) folytonosságot akarunk, akkor próbálkozhatunk polinomokkal A p 0,..., p n pontokra illeszthető egy n-edfokú polinom A jól ismert hatványbázisban ez p(t) = n [ ] [ ] [ ] i=0 a it i, t R 1 0 1 alakú (pl.: p(t) = t 2 2 + t + ) 1 1 De mi lenne a geometriai értelmezése az a i R 3 együtthatóknak? Mit ábrázolnak? másik bázist keressünk inkább, ahol a reprezentációt képező elemeknek szemléletesebb jelentése van De előtte oldjuk még meg a feladatot!

Görbék Polinomiális görbék Legyenek adottak p 0,..., p n E 3 pontok és t 0 < t 1 <.. < t n R paraméterértékek Keressük azt az n-edfokú p(t) = n i=0 a it i, t R parametrikus görbét, amely az adott pontokat interpolálja az előírt paraméterértékeknél, azaz amelyre p(t i ) = p i, i = 0, 1,.., n

Görbék Polinomiális görbék Megoldandó tehát az 1 t 0 t0 2.. t n 0 a 0 1 t 1 t1 2.. t1 n a 1 p 0............ =.. 1 t n tn 2.. tn n p a n n }{{}}{{}}{{} b V a lineáris egyenletrendszer, az ismeretlen a 0,.., a n R 3 együtthatókra Ha det(v ) 0, akkor van megoldás De vegyük észre: V egy Vandermonde mátrix determinánsa nem nulla (mivel nincs i j, hogy t i = t j ) A keresett együtthatók tehát a = V 1 b

Görbék Polinomiális görbék - parabola példa Tehát ha például egy parabolával szeretném a t = 0, 1, 2 pontokban interpolálni a p 0, p 1, p 2 pontokat, akkor 1 0 0 1 1 1 1 2 4 egyenletet kell megoldanom Azaz a keresett együtthatók a 0 a 1 a 2 = p 0 p 1 p 2 a 0 1 0 0 a 1 = 3 2 2 1 2 a 2 1 1 2 1 2 A parabola pedig p(t) = a 2 t 2 + a 1 t + a 0 p 0 p 1 p 2

Hermite interpoláció Tartalom 1 Motiváció Görbék Hermite interpoláció Catmull-Rom spline Kochanek-Bartels spline Műveletek görbékkel Subdivision görbék Felületek Doo-Sabin Bézier háromszögek 2 Topológia tárolása Szárnyas-él adatszerkezet Fél-él adatszerkezet

Hermite interpoláció Harmadfokú Hermite interpoláció A görbénk tárolásához bizonyos pontokban jegyezzük fel a görbe pozícióját és egy bejárásához tartozó sebesség, gyorsulás stb.... vektorát (azaz legyenek adottak x(t i ), x (t i ), x (t i ),...) pont és derivált adatok, i = 0, 1,...) Keressünk egy olyan bázist, amibe ezeket a fenti adatokat koordinátaként beírva az adott szinten a beírt adatot kapjuk vissza

Hermite interpoláció Harmadfokú Hermite interpoláció Két pont között, [0, 1]-re megfogalmazza, keressük a p(t) = H 0 0 (t)p 0 + H 1 0 (t)m 0 + H 0 1 (t)p 1 + H 1 1 (t)m 1 alakú parametrikus görbét amelyre p(0) = p 0 p(1) = p 1 p (0) = m 0 p (1) = m 1

Hermite interpoláció Harmadfokú Hermite bázisfüggvények p(t) = H 0 0 (t)p 0 + H 1 0 (t)m 0 + H 0 1 (t)p 1 + H 1 1 (t)m 1 Keressük harmadfokú, egész polinomként az ismeretlen H j i (t) bázisfüggvényeket, azaz legyen H j i (t) = a ijt 3 + b ij t 2 + c ij t + d ij Azt akarjuk, hogy p(0) = p 0, p(1) = p 1, p (0) = m 0, p (1) = m 1 teljesüljenek Ekkor megoldandó a ij, b ij, c ij, d ij, i, j = 0, 1-re H0 0(0) = 1 H1 0 (0) = 0 H0 1 (0) = 0 H1 1 (0) = 0 (H0 0) (0) = 0 (H0 1) (0) = 1 (H1 0) (0) = 0 (H1 1) (0) = 0 H0 0(1) = 0 H1 0 (1) = 0 H0 1 (1) = 1 H1 1 (1) = 0 (H0 0) (1) = 0 (H0 1) (1) = 0 (H1 0) (1) = 0 (H1 1) (1) = 1

Hermite interpoláció Harmadfokú Hermite bázis A harmadfokú bázisunk ekkor a következő lesz: H 0 0 (t) = 2t3 3t 2 + 1 H 1 0 (t) = t3 2t 2 + t H 0 1 (t) = 2t3 + 3t 2 H 1 1 (t) = t3 t 2 Ha van n + 1 bejövő adatunk, akkor minden pár közé szerkesztve egy-egy görbét az összeillesztésből kapott n harmadfokú szegmensből álló spline C 1 lesz

Hermite interpoláció Harmadfokú Hermite bázis

Hermite interpoláció Kitérő - geometriai folytonosság A szemünknek nem csak az lesz folytonos, ami parametrikusan is az Nem teljesen szabatos matematikai definíciókat következnek A geometriai folytonosságnál paraméterezéstől független folytonossági megkötéseket teszünk: G 0 : a görbében/felületben nincsenek lyukak, nem szakad meg sehol G 1 : a csatlakozásoknál ha a deriváltak nem is egyeznek meg, de α > 0 úgy, hogy m i = αm i+1 G 2 : a görbe/felület görbülete folytonos a csatlakozásban is

Hermite interpoláció Geometriai folytonosság - definíció Definíció Legyen adott két reguláris görbe, r(t), s(t), amelyek végpontjaikban megegyeznek: r(1) = s(0) = p. Ekkor a két görbe G n folytonosan csatlakozik a p-ben, ha létezik olyan reguláris átparaméterezése a két görbének, amely szerint C n -ben csatlakoznak a görbék.

Hermite interpoláció Geometriai folytonosság - definíció Definíció Legyen adott két reguláris görbe, r(t), s(t), amelyek végpontjaikban megegyeznek: r(1) = s(0) = p. Ekkor a két görbe G n folytonosan csatlakozik a p-ben, ha létezik olyan orientációtartó reguláris átparaméterezése a két görbének, amely szerint C n -ben csatlakoznak a görbék.

Hermite interpoláció Geometriailag folytonos spline-ok A fenti feltétel ellenőrzésére több módszer is született Részletekért lásd a Geometriai Modellezés és Felület és Testmodellezés tárgyakat Az is fontos észrevétel, hogy ha létezik egy olyan paraméterezés, ami szerint C n a csatlakozás, akkor mindkét görbét ívhossz szerint paraméterezve is C n lesz a csatlakozás Utóbbi észrevétel segítségével átfogalmazható a geometriai folytonosság koordináták pontos egybeesésére... de erről majd máskor

Catmull-Rom spline Tartalom 1 Motiváció Görbék Hermite interpoláció Catmull-Rom spline Kochanek-Bartels spline Műveletek görbékkel Subdivision görbék Felületek Doo-Sabin Bézier háromszögek 2 Topológia tárolása Szárnyas-él adatszerkezet Fél-él adatszerkezet

Catmull-Rom spline Catmull-Rom spline Ne legyen közvetlenül adott a derivált, hanem a pontokból számoljuk őket a következőképp: m i = p i+1 p i 1 t i+1 t i 1 Ezután a megadott p i és a fentiek szerint számított m i adatokra páronként illesszünk Hermite-görbéket

Kochanek-Bartels spline Tartalom 1 Motiváció Görbék Hermite interpoláció Catmull-Rom spline Kochanek-Bartels spline Műveletek görbékkel Subdivision görbék Felületek Doo-Sabin Bézier háromszögek 2 Topológia tárolása Szárnyas-él adatszerkezet Fél-él adatszerkezet

Kochanek-Bartels spline Kochanek-Bartels spline A Catmull-Rom spline-hoz hasonlóan itt is számított adat lesz a tangens, de most három paraméter is adott hozzá: T : tension, T [ 1, 1] B: bias, B [ 1, 1] C: folytonosság (simaság), C [ 1, 1] A Catmull-Rom spline-t kapjuk, ha T = B = C = 0

Kochanek-Bartels spline Kochanek-Bartels spline A fentiek felhasználásával az i-edik szegmens két végpontjának derivált-értékei legyenek (1 T )(1 + B)(1 + C) m i = (p i p i 1 ) 2 (1 T )(1 B)(1 C) + (p i+1 p i ) 2 (1 T )(1 + B)(1 C) m i+1 = (p i+1 p i ) 2 (1 T )(1 B)(1 + C) + (p i+2 p i+1 ) 2

Kochanek-Bartels spline Bézier-görbe kitérő- de Casteljau algoritmus

Kochanek-Bartels spline Bézier-görbe kitérő- de Casteljau algoritmus

Kochanek-Bartels spline Bézier-görbe kitérő- de Casteljau algoritmus

Kochanek-Bartels spline Bézier-görbe ( n Használjuk a Bernstein-bázist: Bi n (t) := i A b 0,..., b n R 3 kontrollpontok által meghatározott n-edfokú Bézier-görbe ekkor ) t i (1 t) n i b(t) = n Bi n (t)b i, i=0 ahol t [0, 1]. HF: n i=0 Bn i (t) = 1 teljesül, t [0, 1] A görbe nagyjából követi a vezérlőpontok poligonjának az alakját, de nem halad át mindegyiken! Ez egy approximáló séma További részletek: Geometriai Modellezés MSc, Analízis (Stone-Weierstrass approximációs tétel)

Kochanek-Bartels spline Bézier-görbe Egyetlen kontrollpont módosítása az egész görbére hat Bernstein-bázis néhány n-re: B 1 0 (t) = 1 t, B1 1 (t) = t

Kochanek-Bartels spline Bézier-görbe Egyetlen kontrollpont módosítása az egész görbére hat Bernstein-bázis néhány n-re: B0 1(t) = 1 t, B1 1 (t) = t lineáris interpoláció! B0 2(t) = (1 t)2, B1 2(t) = 2t(1 t), B2 2 (t) = t 2 n = 3: HF Lényegében összemossuk a kontrollpontjainkat egymással a fenti függvényekkel súlyozva őket, ezzel megmondva, hogy egy adott t [0, 1] paraméterértéknél melyik kontrollpont mennyire játszik fontos szerepet a görbe alakjának meghatározásában

Kochanek-Bartels spline Bézier-görbe tulajdonságok A Bézier görbe áthalad a két végponton (b 0 és b n pontokon) A Bézier görbe alakja változatlan marad, ha [0, 1] helyett [a, b] fölött rajzolom fel, azaz a b( t a b a ), t [a, b] ugyanaz a görbe (mint ponthalmaz), mint a b(t), t [0, 1] Azaz a Bézier görbe invariáns az affin paramétertranszformációkra Vegyük észre: az Hermite görbe nem invariáns ezekre!

Kochanek-Bartels spline Bézier-görbe - bázisfüggvények Hogyan érdemes kiértékelni a bázisfüggvényeket? A de Casteljau algoritmus csak lineáris interpolációkat használ Ha a bázisfüggvényeket akarjuk használni, akkor nem kell őket egyesével kiszámolni - egy egyszerű algoritmussal elő tudjuk állítani egy adott t-ben az összes Bernstein polinom értékét Ehhez a Bernstein polinomok rekurzív felírását használjuk fel: Bi n (t) = (1 t) B n 1 i (t) + t B n 1 i 1 (t), ahol definíció szerint legyen B n i (t) = 0, ha i < 0 vagy ha i > n

Kochanek-Bartels spline Bézier-görbe - bázisfüggvények

Kochanek-Bartels spline Bézier-görbe - bázisfüggvények

Kochanek-Bartels spline Bézier-görbe - bázisfüggvények A l l B e r n s t e i n ( n, t, B) { B [ 0 ] = 1; t1 = 1 t ; f o r ( j = 1; j <= n ; ++ j ) { saved = 0; f o r ( k =0; k<j ; ++k ) { temp = B [ k ] ; B [ k ] = saved + t1 temp ; saved = t temp ; } B [ j ] = saved ; }

Kochanek-Bartels spline Bézier-görbe - bázisfüggvények

Kochanek-Bartels spline Interpoláció vagy approximáció? Interpoláció: a görbének át kell haladnia a vezérlőpontokon

Kochanek-Bartels spline Interpoláció vagy approximáció? Approximáció: a görbének csak közelítenie kell a vezérlőpontokat

Kochanek-Bartels spline Sok vezérlőpont esete A vezérlőpontok számával együtt nő a fokszám egy idő után lehet meg kell elégednünk az approximációval, de az sem lesz jó A magas fokszámú polinomok erősen hullámozhatnak Runge-problémája: az f (x) = 1 függvény (piros) 1+25x 2 közelítése során ötödfokú (kék) és kilencedfokú (zöld) polinomokkal

Kochanek-Bartels spline Sok vezérlőpont esete

Kochanek-Bartels spline Spline görbék Ne egyetlen polinommal próbáljuk interpolálni vagy approximálni az adatpontjainkat (vezérlőpontjainkat)! Használjunk összetett görbét, amely alacsonyabb fokszámú szegmensekből áll Így kiküszöböhető a magas fokszámmal járó oszcilláció, illetve a kontrollpontok módosításának kihatása az egész görbére, de a polinomiális szegmensek folytonos csatlakozására külön figyelni kell És még sok minden másra is, de... Részletek: NumAnal - BSc.; Geometriai Modellezés, Felület és Testmodellezés - MSc.

Kochanek-Bartels spline Spline görbék

Műveletek görbékkel Tartalom 1 Motiváció Görbék Hermite interpoláció Catmull-Rom spline Kochanek-Bartels spline Műveletek görbékkel Subdivision görbék Felületek Doo-Sabin Bézier háromszögek 2 Topológia tárolása Szárnyas-él adatszerkezet Fél-él adatszerkezet

Műveletek görbékkel Ívhossz Legyen t [a, b], ekkor s [a, b]-re az ívhossz s(k) = k a r (t) dt Az ívhossz szerint paraméterezett görbékre p (t) = 1

Műveletek görbékkel Legközelebbi pont Adott egy p(t) : [a, b]e 2 görbe és egy tetszőleges x E 2 pont a síkon. Keressük azt a t [a, b] paraméterértéket, amelyre t = argmin t [a,b] d(p(t), x)

Műveletek görbékkel Legközelebbi pont A feladat ekvivalens azzal, hogy keressük azt a t [a, b]-t, amelyre d 2 (p(t), x) = x p(t), x p(t) minimális, amit deriválva adódik, hogy a minimumhelyen kell, hogy teljesüljön. x p(t ), p (t ) = 0,

Műveletek görbékkel Legközelebbi pont Így a legközelebbi pont paraméterértéke, ha (a, b)-n belüli, akkor gyöke lesz az f (t) = q p(t), p (t) egyenletnek. Viszont semmiképpen se felejtsük megnézni a végpontokat is! A megoldás Newton-Raphson-nal x n+1 = x n f (x n) f (x n ) x p(x n ), p (x n ) = x n x p(x n ), p (x n ) p (x n ), p, n = 1, 2,... (x n )

Műveletek görbékkel Legközelebbi pont Newton-Raphson módszerrel Mikor termináljunk? Ha f (x n ) < ɛ?

Műveletek görbékkel Legközelebbi pont Newton-Raphson módszerrel Mikor termináljunk? Ha f (x n ) < ɛ? Paraméterezéstől függő! Ha M = max{ p (t) : t I}, N = max{ x p(t) : t I}, akkor a t ɛ NM t után bármely x 0 I az utolsó becslés is lesz, hiszen x p( ɛt ɛt ), (p( NM NM )) = ɛ NM ɛ NM x p( ɛt NM ), p ( ɛt NM ) x p( ɛt NM ) p ( ɛt NM ) ɛ NM = ɛ. NM

Műveletek görbékkel Legközelebbi pont Newton-Raphson módszerrel Mikor termináljunk? Ha s(x n ) s(x n 1 )) < ɛ?

Műveletek görbékkel Legközelebbi pont Newton-Raphson módszerrel Mikor termináljunk? Ha s(x n ) s(x n 1 )) < ɛ? Paraméterezéstől független! Elég számításigényes is tud lenni És igazából azt méri, hogy mennyire lépett kicsit az új finomítás az előzőtől, azaz a gyökkeresés lelassulását figyeli

Műveletek görbékkel Legközelebbi pont Newton-Raphson módszerrel Mikor termináljunk? Ha p(x n ) p(x n 1 )) < ɛ?

Műveletek görbékkel Legközelebbi pont Newton-Raphson módszerrel Mikor termináljunk? Ha p(x n ) p(x n 1 )) < ɛ? Paraméterezéstől is függ De nagyon olcsó kiértékelni Hasonlót mér, mint az előző

Műveletek görbékkel Legközelebbi pont Newton-Raphson módszerrel Mikor termináljunk? Ha x n x n 1 < ɛ?

Műveletek görbékkel Legközelebbi pont Newton-Raphson módszerrel Mikor termináljunk? Ha x n x n 1 < ɛ? Paraméterezéstől függ Legolcsóbb kiértékelni Ugyanúgy a gyökkeresés sebességének lassulását méri

Műveletek görbékkel Legközelebbi pont Newton-Raphson módszerrel Mikor termináljunk? Ha π 2 (x p(x n), p (x n )) < ɛ?

Műveletek görbékkel Legközelebbi pont Newton-Raphson módszerrel Mikor termináljunk? Ha π 2 (x p(x n), p (x n )) < ɛ? Paraméterezéstől független, geometriai feltétel Pontosan azt méri, amit szerettünk volna: az x-be mutató vektorra legyen merőleges az x n -beli tangensegyenes!

Műveletek görbékkel Kisérő triéder Adott p(t) : [0, 1] R 3 parametrikus görbe, ekkor t(t) = [p (t)] 0 : tangens b(t) = [p (t) p (t)] 0 : binormális n(t) = b(t) t(t): főnormális Feladat: kisérő triéder kirajzolása!

Műveletek görbékkel Egyenletes sebességű bejárás Feladat: Newton-Raphson iterációval segítségével helyezz el 5, egymástól a görbén mérve egyenlő távolságra lévő pontot! Emlékeztető: f (x) = 0 megoldását keressük úgy, hogy kiindulva egy x 0 D f pontból iteratívan minden lépésben x n+1 = x n f (xn) f (x n) becsléssel közeledünk a megoldáshoz Ugyanígy: milyen messze van a kattintás helye a görbétől (mi a legközelebbi pontja) és mi a legközelebbi ponthoz tartozó paraméterérték?

Műveletek görbékkel Görbület Tegyük fel, hogy a görbénk ívhossz szerinti paraméterezéssel adott, azaz p (s) = 1 Ekkor p merőleges p -re ( p 2 = p, p = 1 deriválásából trivi) Ilyenkor t(s) = p (s) és n(s) = [p (s)] 0. Ekkor az egység érintővektor változásának normálisra vett előjeles merőleges vetülete azt mondja meg, hogy mennyire görbül a pálya az adott paraméterértéknél: κ(s) = t (s), n(s) A fenti κ a görbe s paraméterhez tartozó görbülete, illetve ha κ 0, akkor ρ(s) = 1/κ(s) a görbületi sugara

Műveletek görbékkel Görbület Amennyiben nem ívhossz szerint van paraméterezve a görbénk, a következő képlettel számítható a görbület: κ(t) = p (t) p (t) p(t) 3 Biz.: ld. diffgeo Síkban: előjeles görbület is értelmezhető, az a b = a x b y a y b x értelmezéssel, abszolút értéket elhagyva a számlálóban.

Műveletek görbékkel Görbület Feladat: színezzük a görbét a görbülete alapján! Feladat: miközben bejárjuk a görbét, minden pontjához rajzoljuk be a görbületi körét! (Ennek középpontja: p(t) + ρ(t)n(t)

Subdivision görbék Tartalom 1 Motiváció Görbék Hermite interpoláció Catmull-Rom spline Kochanek-Bartels spline Műveletek görbékkel Subdivision görbék Felületek Doo-Sabin Bézier háromszögek 2 Topológia tárolása Szárnyas-él adatszerkezet Fél-él adatszerkezet

Subdivision görbék Subdivision görbék Egy ötlet: az eddigiek során rögtön egy polinomot állítottunk elő a kontrollpontjainkból (lényegében: a kontrollpontok által meghatározott kontroll-poligonból) Megjelenítés során viszont úgyis szakaszokkal kell közelíteni!

Subdivision görbék Subdivision görbék Egy ötlet: az eddigiek során rögtön egy polinomot állítottunk elő a kontrollpontjainkból (lényegében: a kontrollpontok által meghatározott kontroll-poligonból) Megjelenítés során viszont úgyis szakaszokkal kell közelíteni! dolgozzunk magán a kontroll-poligonon! A subdivision, vagy rekurzív felosztással definiált sémák a kiinduló ponthalmazunkat (kontrolpontok halmazát) rekurzívan sűrítik, egyre finomabb lineáris közelítést is adva (legtöbbször)

Subdivision görbék Subdivision görbék A kiinduló ponthalmaz által meghatározott görbének a rekurzív sürítést határgörbéjét ( végtelen sok finomítás utáni pontok halmazát) tekintjük Nagy kifejezőerő (például a Chaikin saroklevágási algoritmus egy másodfokú B-spline görbét ad), de görbéknél lehet hatékonyabban is számolni sok esetben

Subdivision görbék Subdivision görbék - Chaikin saroklevágási algoritmus Legyen az aktuális vezérlőpont halmazunk {p i R 3 } n i=0 Az iterációs lépés során az új vezérlőpont halmazunk {q i, r i R 3 } n 1 i=0 lesz, ahol q i = 3 4 p i + 1 4 p i+1 r i = 1 4 p i + 3 4 p i+1

Subdivision görbék Subdivision görbék - Chaikin saroklevágási algoritmus Legyen az aktuális vezérlőpont halmazunk {p i R 3 } n i=0 Az iterációs lépés során az új vezérlőpont halmazunk {q i, r i R 3 } n 1 i=0 lesz, ahol q i = 3 4 p i + 1 4 p i+1 r i = 1 4 p i + 3 4 p i+1

Subdivision görbék Subdivision görbék - Chaikin saroklevágási algoritmus Legyen az aktuális vezérlőpont halmazunk {p i R 3 } n i=0 Az iterációs lépés során az új vezérlőpont halmazunk {q i, r i R 3 } n 1 i=0 lesz, ahol q i = 3 4 p i + 1 4 p i+1 r i = 1 4 p i + 3 4 p i+1

Subdivision görbék Subdivision görbék - Chaikin saroklevágási algoritmus Legyen az aktuális vezérlőpont halmazunk {p i R 3 } n i=0 Az iterációs lépés során az új vezérlőpont halmazunk {q i, r i R 3 } n 1 i=0 lesz, ahol q i = 3 4 p i + 1 4 p i+1 r i = 1 4 p i + 3 4 p i+1

Subdivision görbék Subdivision görbék - Chaikin saroklevágási algoritmus

Subdivision görbék Subdivision görbék - Chaikin saroklevágási algoritmus

Subdivision görbék Subdivision görbék - Chaikin saroklevágási algoritmus

Subdivision görbék Subdivision görbék - Chaikin saroklevágási algoritmus

Felületek Tartalom 1 Motiváció Görbék Hermite interpoláció Catmull-Rom spline Kochanek-Bartels spline Műveletek görbékkel Subdivision görbék Felületek Doo-Sabin Bézier háromszögek 2 Topológia tárolása Szárnyas-él adatszerkezet Fél-él adatszerkezet

Felületek Bilineáris felület Adott négy kontrollpont, p 1, p 2, p 3, p 4 R 3 Három lineáris interpolációval egy egyszerű felületület kapunk: ahol s, t [0, 1]. b(s, t) = (1 t)((1 s)p 1 + sp 3 ) + t((1 s)p 2 + sp 4 ) Lényegében: két szakaszt írtunk be a t szerinti lineáris interpoláció képletébe

Felületek Bilineáris felület

Felületek Bézier felület A b ij R 3, i = 0,.., n, j = 0,.., m kontrollpoligon által meghatározott n m-edfokú Bézier-felület alakú, ahol u, v [0, 1]. m n b(u, v) = Bi n (u)bj m j=0 i=0 (v)b ij

Felületek Spline felület Alacsonyabb fokszámú felületdarabokat, felületfoltokat (patch-cseket) illesztünk egymáshoz Csatlakozások folytonosságára figyelni kell Több erről: Geometriai Modellezés, Felület és Testmodellezés - MSc.

Felületek Subdivision felületek Hasonló a görbékhez, de most a kontroll-poligonon dolgozunk, azt finomítjuk lépésenként Az animációs iparban óriási jelentősége van (Pixar stb.) Tekinthetjük a síklap alapú modellezés és a B-spline iskola közti hídnak modellezői szemmel Több: Haladó Grafika, Geometriai Modellezés - MSc.

Felületek Subdivision felületek - Doo-Sabin

Felületek Subdivision felületek - Catmull-Clark 2001: Oscar Catmull-nak for significant advancements to the field of motion picture rendering as exemplified in Pixar s RenderMan

Felületek Subdivision felületek - Catmull-Clark 2001: Oscar Catmull-nak for significant advancements to the field of motion picture rendering as exemplified in Pixar s RenderMan

Felületek Fogalmak - séma mesh-típusa A legtöbb subdivision séma valamilyen reguláris felosztási/finomítási sémán alapszik Amikor egy séma mesh-ének típusáról beszélünk erre az őssémára gondolunk A síkban regulárisan elhelyezett pontokat szabályos háromszögekkel, négyzetekkel, vagy szabályos hatszögekkel fedhetjük le Ennek megfelelően nevezünk egy sémát háromszög-, négyszög- vagy hatszög-alapúnak (gyakorlatban utóbbi ritka)

Felületek Mesh-típus Vigyázzunk: szép (teljes oldalakban illeszkedő), 6-reguláris háromszög vagy szép, 4-reguláris négyszöghálóval nem lehet bármit lefedni degenerált esetek nélkül! A fenti reguláris topológiákkal a végtelen síklap, vagy a végtelen hengerpalást, vagy pedig a tórusz topológiájának megfelelő felületek írhatóak fel

Felületek Mesh-típus - Möbius

Felületek Mesh-típus - Klein-kancsó

Felületek Fogalmak - face-split (primál) A mesh-típusának megfelelő lapok mindegyikét négyfelé osztjuk Az előző lépés mesh-ének csúcspontjait megőrizzük (de módosíthatjuk a pozíciójukat - ha változtatás nélkül vesszük át a pontokat, akkor interpoláló sémáról beszélünk) Új csúcspontokat szúrunk be minden élre (kettéosztva ezzel őket) Négyszög alapú sémáknál a lapból is származtatunk egy új csúcspontot

Felületek Fogalmak - vertex-split (duál) Ilyenkor minden csúcspontból keletkezik egy új csúcs az összes, eredeti csúcsra illeszkedő lap mentén A régi lapból új lap származik közvetlenül Az élek mentén új lapok születnek (az élek végpontjaiból az él által szétválasztott két lapra születő új csúcspontokat összekötve) A régi csúcspontok helyett egy új lap születik, a csúcsból született új csúcspontokkal

Felületek Fogalmak - face- és vertex-split Reguláris négyszöghálón mindkét esetben 4-reguláris lesz az új háló is tartja a topológiát Figyeljünk: reguláris háromszöghálóknál vertex-split után hatszögeket kapunk!

Felületek Fogalmak - face- és vertex-split Reguláris négyszöghálón mindkét esetben 4-reguláris lesz az új háló is tartja a topológiát Figyeljünk: reguláris háromszöghálóknál vertex-split után hatszögeket kapunk!

Felületek Face-split 4-reguláris mesh-en

Felületek Face-split 6-reguláris mesh-en

Felületek Vertex-split 4-reguláris mesh-en

Doo-Sabin Tartalom 1 Motiváció Görbék Hermite interpoláció Catmull-Rom spline Kochanek-Bartels spline Műveletek görbékkel Subdivision görbék Felületek Doo-Sabin Bézier háromszögek 2 Topológia tárolása Szárnyas-él adatszerkezet Fél-él adatszerkezet

Doo-Sabin Doo-Sabin Eredeti cikk: http://trac2.assembla.com/ DooSabinSurfaces/export/12/trunk/docs/Doo% 201978%20Subdivision%20algorithm.pdf Rövid leírás: http://www.cs.unc.edu/ dm/unc/ COMP258/LECTURES/Doo-Sabin.pdf

Doo-Sabin Doo-Sabin

Doo-Sabin Doo-Sabin

Doo-Sabin Doo-Sabin - új pontok számítása

Doo-Sabin Doo-Sabin - új pontok számítása

Doo-Sabin Doo-Sabin - lapokból származó lapok

Doo-Sabin Doo-Sabin - Élekből származó lapok

Doo-Sabin Doo-Sabin - Csúcsokból származó lapok

Bézier háromszögek Tartalom 1 Motiváció Görbék Hermite interpoláció Catmull-Rom spline Kochanek-Bartels spline Műveletek görbékkel Subdivision görbék Felületek Doo-Sabin Bézier háromszögek 2 Topológia tárolása Szárnyas-él adatszerkezet Fél-él adatszerkezet

Bézier háromszögek Bézier háromszögek de Casteljau a Bézier görbéket felületekre is kiterjesztette, méghozzá először háromszög alapú értelmezési tartományra Viszont mivel a Citroen nem engedte publikálni eredményeit, ezért nem csak a Bézier görbéket, hanem a háromszögeket is tőle függetlenül felfedezte több kutató is (például Sabin Bernstein bázisban írt fel háromoldalú parametrikus felületeket)

Bézier háromszögek de Casteljau algoritmus Bézier háromszögekre Természetes általánosítása a görbékre felírt de Casteljau algoritmusnak Kontrollpoligon helyett háromszög alakú kontrollponthálón végzett, egymás utáni lineáris interpolációk sorozata

Bézier háromszögek de Casteljau algoritmus Bézier háromszögekre

Bézier háromszögek de Casteljau algoritmus Bézier háromszögekre Az n-edfokú Bézier háromszögnek 1 2 (n + 1)(n + 2) kontrollpontja van Az egyszerűség kedvéért áttérünk multiindexekre: jelölje b ijk kontrollpontot b i (tehát az index is vektor), ahol mindig i 1 = i + j + k = n Legyenek továbbá e 1 = (1, 0, 0), e 2 = (0, 1, 0), e 3 = (0, 0, 1)

Bézier háromszögek de Casteljau algoritmus Bézier háromszögekre Adott b i E 3 kontrollpontok háromszög hálója, i 1 = n, és a sík egy pontjának u = (u, v, w) baricentrikus koordinátái Legyen a b 0 i (u) = b i és b r i (u) = ubr 1 i+e 1 + vb r 1 i+e 2 + wb r 1 i+e 3 ahol r = 1,.., n és i 1 = n r. Ekkor a Bézier háromszög u-hoz tartozó pontja b(u) = b n 0 (u)

Bézier háromszögek Bézier háromszögekre példa - lineáris eset

Bézier háromszögek Bézier háromszögekre példa - lineáris eset

Bézier háromszögek Bézier háromszögekre példa - lineáris eset

Bézier háromszögek Bézier háromszögekre példa - lineáris eset

Bézier háromszögek Bézier háromszögekre példa - lineáris eset b 1 000 (u) = ub0 100 + vb0 010 + wb0 001 = ub 100 + vb 010 + wb 001

Bézier háromszögek Bézier háromszögekre példa - harmadfokú eset

Bézier háromszögek Bézier háromszögekre példa - harmadfokú eset

Bézier háromszögek Bézier háromszögekre példa - harmadfokú eset

Bézier háromszögek Bézier háromszögekre példa - harmadfokú eset

Bézier háromszögek Bézier háromszögek tulajdonságai - de Casteljau alapján Affin invariancia - hiszen csak lineáris interpolációkat használunk Affin paramétertranszformációkra is invariáns - mert maguk a baricentrikus koordináták is azok Konvex héj, amennyiben 0 u, v, w 1 - ekkor nemcsak baricentrikus, hanem konvex lineáris kombinációkat végzünk egymás után A peremgörbék a kontrollháromszög külső élein lévő kontrollpontok (azaz olyan b i -k, amelyekre i = 0 j = 0 k = 0) által meghatározott n-edfokú Bézier görbék

Bézier háromszögek Bernstein polinomok baricentrikus bázis felett Az n-edfokú, kétváltozós Bernstein polinom, baricentrikus koordánátákkal ( ) n Bi n = u i v j w k = n! i i!j!k! ui v j w k, i 1 = n, ahol ( n i) -t szokás trinomiális együtthatóknak is hívni

Bézier háromszögek Harmadfokú Bézier háromszögek - kontrollpont súlyok

Bézier háromszögek Bézier háromszögek Bernstein bázisban A görbéknél látottakhoz hasonlóan bizonyítható (indukció + Bernstein polinomok rekurzív definíciója alapján) a következő állítás: b r i = b i+j Bj r (u), i 1 = n r j 1 =r Azaz a de Casteljau algoritmus közbülső pontjai hasonlóan fejezhetőek ki Bernstein polinomokkal a Bézier háromszögek esetén is, mint a görbéknél

Bézier háromszögek Deriváltak Bézier háromszögeknél iránymenti deriváltakat kell használni Legyen u 1, u 2 a Bézier háromszög értelmezési tartományának két pontjához tartozó baricentrikus koordináták Legyen d = (d, e, f ) = u 2 u 1 Ekkor a b(u) Bézier háromszög d irányban vett iránymenti deriváltja az u pontban D d b(u) = d b u (u) + e b v (u) + f b w (u) ahol b u (u), b v (u), b w (u) a baricentrikus koordináták szerinti parciális deriváltjai a Bézier háromszögnek.

Bézier háromszögek Deriváltak A parciális deriváltakra közvetlen számítással adódik, hogy b u (u) = u n! i!j!k! ui v j w k b i = n = n = n i 1 =n i 1 =n i 1 =n 1 i 1 =n 1 (n 1)! (i 1)!j!k! ui 1 v j w k b i (n 1)! u i v j w k b i+1,j,k i!j!k! b i+e1 B n 1 i (u)

Bézier háromszögek Deriváltak A parciális deriváltak tehát b u (u) = n b v (u) = n b v (u) = n i 1 =n 1 i 1 =n 1 i 1 =n 1 b i+e1 B n 1 i (u) b i+e2 B n 1 i (u) b i+e3 B n 1 i (u) az iránymenti derivált pedig így ( ) D d b(u) = n dbi+e1 + eb i+e2 + f b i+e3 B n 1 i (u) i 1 =n 1

Bézier háromszögek Blossom háromszögek Az egymásba ágyazott baricentrikus kombinációkban nem kell mindig ugyanazt az u kiértékelési pontot használni Így kapjuk (a görbékhez hasonlóan) a Bézier háromszögek multiaffin kifejtését, azaz a háromszög blossomokat: b[u 1,.., u n ], ahol tehát a de Casteljau algoritmus i-edik lépésében u i szerint értékeljük ki az aktuális kontrollpont háromszöget

Bézier háromszögek Blossom háromszögek Könnyen belátható, hogy b i = b[e <i> 1, e <j> 2, e <k> 3 ], i 1 = n Továbbá a de Casteljau átmeneti pontjai felírhatóak b r i = b[u <r>, e <i> 1, e <j> 2, e <k> 3 ], i + j + k + r = n Ha a Bézier háromszög az értelmezési tartomány f 1, f 2, f 3 pontjai feletti részéhez tartozó kontrollpontokat akarjuk kiszámítani, akkor a következő adódik: c i = b[f <i> 1, f <j> 2, f <k> 3 ]

Bézier háromszögek Bézier háromszög felosztása belső pontra Ábra: Scott Shaefer

Bézier háromszögek Bézier háromszög felosztása belső pontra Ábra: Scott Shaefer

Bézier háromszögek Bézier háromszög felosztása belső pontra Ábra: Scott Shaefer

Bézier háromszögek Bézier háromszög felosztása belső pontra Ábra: Scott Shaefer

Bézier háromszögek Bézier háromszög felosztása belső pontra Ábra: Scott Shaefer

Bézier háromszögek Bézier háromszög felosztása belső pontra Ábra: Scott Shaefer

Bézier háromszögek Bézier háromszög felosztása belső pontra Ábra: Scott Shaefer

Bézier háromszögek Deriváltak blossom-mal A d iránymenti derivált a blossom-mal a következőképpen fejezhető ki: D d b(u) = nb[d, u <n 1> ] Az r-edik derivált pedig D r d b(u) = n! (n r)! b[d<r>, u <n r> ] A vegyes parciális deriváltaknak a változó irányok menti deriválás felel meg D r,s d 1,d 2 b(u) = n! (n r s)! b[d<r> 1, d <s> 2, u <n r s> ]

Bézier háromszögek Deriváltak A d 1 = (1, 0, 0) (0, 0, 1) = (1, 0, 1) és d 2 = (0, 1, 0) (0, 0, 1) = (0, 1, 1) irányokban vett első és második deriváltakra a u = (0, 0, 1) sarokban a következő adódik: D d1 (u) = n(b 1,0,n 1 b 0,0,n ) D d2 (u) = n(b 0,1,n 1 b 0,0,n ) D 2 d 1 (u) = n(n 1) ( (b 2,0,n 2 b 1,0,n 1 ) (b 1,0,n 1 b 0,0,n ) ) D d1,d 2 (u) = n(n 1) ( (b 1,1,n 2 b 1,0,n 1 ) (b 0,1,n 1 b 0,0,n ) ) D 2 d 2 (u) = n(n 1) ( (b 0,2,n 2 b 0,1,n 1 ) (b 0,1,n 1 b 0,0,n ) )

Bézier háromszögek Fokszámemelés Egy n-edfokú Bézier háromszöget szeretnénk n + 1-edfokú Bézier háromszöggel felírni: b i Bi n (u) = b (1) (u) i 1 =n i 1 =n+1 i B n+1 i Ekkor az n + 1-edfokú Bézier háromszög kontrollpontjaira adódik b (1) i = 1 ( ) ibi+e1 + jb n + 1 i+e2 + kb i+e3

Bézier háromszögek Háromszögek folytonos csatlakozása Legyen adott két Bézier háromszög, amelyek értelmezési háromszög-tartományai egy közös élben találkoznak Ekkor egy értelmezési tartomány síkjában található egyenes, amely áthalad a két háromszög-tartományon, mindkét Bézier háromszög felületén egy-egy felületi görbe lesz - a két felületi görbéből pedig egy összetett görbét kapunk Ha minden egyenesből, a fenti módon kapott, összetett felületi görbe C r, akkor a két Bézier háromszög csatlakozása a közös oldal mentén is C r

Bézier háromszögek Háromszögek folytonos csatlakozása d = v 1 a + v 2 b + v 3 c

Bézier háromszögek Háromszögek folytonos csatlakozása Tudjuk, hogy egy adott Bézier háromszögnek le tudjuk írni egy darabját egy, az értelmezési tartomány síkjabeli másik háromszög fölötti részének, a c i = b[f <i> 1, f <j> 2, f <k> 3 ] képlettel Ekkor, ha például a közös paramétervonal az u = 0, a fenti képlettel tudjuk, hogy mikor lesz a két szomszédos b(u), c(u) Bézier háromszög egy közös felületnek a két, C r -ben csatlakozó darabja: c ρ,j,k = b ρ j 0 (v) ahol ρ = 0,.., r, j 0 1 = n ρ, a v pedig a c(u) bázisháromszögének azon csúcsának koordinátái a b(u) bázisháromszögében, amelyik nem közös. A fenti egy szükséges és elégséges feltétel a C r csatlakozásra

Bézier háromszögek Bézier háromszögek folytonos csatlakozása

Bézier háromszögek Bézier háromszögek folytonos csatlakozása

Bézier háromszögek Bézier háromszögek folytonos csatlakozása

Bézier háromszögek Bézier háromszögek folytonos csatlakozása

Bézier háromszögek Bézier háromszögek folytonos csatlakozása - b 0,j,k, j + k = n kontrollpontok

Bézier háromszögek Bézier háromszögek folytonos csatlakozása - b 1,j,k, j + k = n 1 kontrollpontok

Bézier háromszögek Háromszögek folytonos csatlakozása Az r = 0 esetben a fenti azt jelenti, hogy a közös határon található kontrollpontoknak meg kell egyezniük: c 0,j,k = b 0 0,j,k (v) = b 0,j,k, j + k = n A C 1 csatlakozás feltételéül, ha C 0 már teljesül, a következő adódik: c 1,j,k = v 1 b 1,j,k + v 2 b 0,j+1,k + v 3 b 0,j,k+1, j + k = n 1 azaz a c(u) határtól eggyel beljebb található kontrollpontrétegének kontrollpontjai a b(u) csatlakozó háromszögéhez tartozó három kontrollpont baricentrikus kombinációi

Bézier háromszögek Háromszögek folytonos csatlakozása Tehát C 1 csatlakozik a két Bézier háromszög, ha a két élben osztozó háromszög egy síkba esik és mindkettő a bázisháromszögük (paramétertérbeli háromszög) affin képe Fontos: nem elég, hogy egy síkba essenek!

Szárnyas-él adatszerkezet Tartalom 1 Motiváció Görbék Hermite interpoláció Catmull-Rom spline Kochanek-Bartels spline Műveletek görbékkel Subdivision görbék Felületek Doo-Sabin Bézier háromszögek 2 Topológia tárolása Szárnyas-él adatszerkezet Fél-él adatszerkezet

Szárnyas-él adatszerkezet Szomszédsági viszonyok Néha kellenek a szomszédok, pl. felület-felosztásoknál, degenerált primitívek kisz?résekor, egyes felhasználói inputok kezelésekor stb.

Szárnyas-él adatszerkezet Szomszédsági viszonyok Néha kellenek a szomszédok, pl. felület-felosztásoknál, degenerált primitívek kisz?résekor, egyes felhasználói inputok kezelésekor stb. Ismertek a csúcsok számítható mi, minek a szomszédja!

Szárnyas-él adatszerkezet Szomszédsági viszonyok Néha kellenek a szomszédok, pl. felület-felosztásoknál, degenerált primitívek kisz?résekor, egyes felhasználói inputok kezelésekor stb. Ismertek a csúcsok számítható mi, minek a szomszédja! Egy csúcsban tetsz?leges számú poligon találkozhat dinamikus adatszerkezet kéne

Szárnyas-él adatszerkezet Szomszédsági viszonyok Néha kellenek a szomszédok, pl. felület-felosztásoknál, degenerált primitívek kisz?résekor, egyes felhasználói inputok kezelésekor stb. Ismertek a csúcsok számítható mi, minek a szomszédja! Egy csúcsban tetsz?leges számú poligon találkozhat dinamikus adatszerkezet kéne Jobb megoldás: Szárnyas-él (winged-edge) adatszerkezet!

Szárnyas-él adatszerkezet Szárnyas-él adatszerkezet Az alakzatokat határukkal leíró (B-rep) (boundary representation) reprezentáció egyik gyakran használt topológiatároló adatszerkezete manifold poliéderek esetén Tárolás során csúcsokat, éleket és lapokat különböztet meg Az élek szempontjából tároljuk a felületet Minden élhez fix számú adat tartozik Segítségével pl. gyorsan körbe lehet járni egy poligon éleit, közben megkapva minden szomszédot

Szárnyas-él adatszerkezet Szárnyas-él adatszerkezet Minden lapot egy élsorozat határol - minden laphoz tároljunk egy, az élsorozatához tartozó tetsz?leges élre mutató pointert A csúcspontok élekhez illeszkednek (vagy bel?le indul ki, vagy? a célja) - tároljuk valamelyiket a csúcsokhoz!

Szárnyas-él adatszerkezet Egyetlen él adatai Egy él két csúcsot köt össze - tároljuk ezeket az élben Egy él legfeljebb két laphoz tartozhat - az egyik a baloldali, a másik a jobboldali lap lesz, ezekre mutató pointereket (vagy indexeket) tárolunk A fenti két lapon egyúttal egy-egy élsorozat (az adott lapot alkotó élsorozat) része is az adott él - mindkét élsorozatban tároljuk a rákövetkez?jét és megel?z?jét az adott élnek az adott lap bejárási irányának megfelel?en (!)

Szárnyas-él adatszerkezet Egyetlen él adatai 2*él csúcs lap balra jobbra start vég bal jobb el?z? köv. el?z? köv. a B A 0 1 c b d e

Szárnyas-él adatszerkezet Egyéb táblázatok Csúcsok táblája csúcs ID csúcsból induló él Lapok táblája lap ID lap egy éle

Szárnyas-él adatszerkezet Példa: tetraéder Shirley, Fundamentals of Computer Graphics

Szárnyas-él adatszerkezet Pl.: Egy lap összes szomszéd lapjának felsorolása def allneighbours ( face, edges, v e r t i c e s, faces ) : startedge = faces [ face ] edge = startedge i f edges [ startedge ]. f a c e L e f t == face : while edges [ edge ]. succleft!= startedge : p r i n t edges [ edge ]. faceright edge = edges [ edge ]. succleft else : while edges [ edge ]. succright!= startedge : p r i n t edges [ edge ]. f a c e L e f t edge = edges [ edge ]. succright

Szárnyas-él adatszerkezet Pl.: Egy lap összes szomszéd lapjának felsorolása Azaz: induljunk el az adott lap reprezentáns éléb?l (amit tárolunk a laphoz) Ha ennek az élnek a baloldali lapja az adott lap: iteráljunk végig a baloldali éllistán és írjuk ki a jobboldali lapokat (a baloldali a lekérdezést kiváltó lap) Különben a jobboldali lap az adott lap, iteráljunk végig a jobboldali lap éllistáján Az iteráció érjen véget, amint visszaérünk az adott lap reprezentáns élébe

Szárnyas-él adatszerkezet Pl.: Egy adott csúcsot tartalmazó összes lap felsorolása def allfaces ( vertex, edges, v e r t i c e s, faces ) : startedge = v e r t i c e s [ v e r t e x ] edge = startedge done = False while not done : i f edges [ edge ]. v e r t S t a r t == v e rtex : p r i n t edges [ edge ]. f a c e L e f t edge = edges [ edge ]. p r e dleft else : p r i n t edges [ edge ]. faceright edge = edges [ edge ]. predright

Fél-él adatszerkezet Tartalom 1 Motiváció Görbék Hermite interpoláció Catmull-Rom spline Kochanek-Bartels spline Műveletek görbékkel Subdivision görbék Felületek Doo-Sabin Bézier háromszögek 2 Topológia tárolása Szárnyas-él adatszerkezet Fél-él adatszerkezet

Fél-él adatszerkezet Fél-él adatszerkezet A winged-edge élét vegyük szét két fél-élre! lényegében az élek lapra vett vetületével dolgozunk! A fél-élhez csak egy lap tartozhat + meg kell jegyeznünk a testvér fél-élét (az adott él másik oldali lapra vett vetületét) A reprezentáció központi eleme a fél-él

Fél-él adatszerkezet Half-edge

Fél-él adatszerkezet Half-edge

Fél-él adatszerkezet Fél-él adatszerkezet Szigorú értelemben véve egy fél-élhez pontosan egy csúcs, él és lap tartozik (de gyakorlatban ennél többet tárolni hasznos lehet) A következ?t tároljuk egy fél-élben: az fél-él cél csúcspontja (vertex), a fél-él testvére (sym), a fél-él lapja (face) és a lapot körbefogó fél-élsorozatban a rákövetkez?je (next) A lapokhoz egy tetsz?leges alkotó fél-él pointerét jegyezzük fel A csúcspontokhoz egy befutó fél-élt HE sym sym = HE, HE next sym vertex = HE vertex stb.

Fél-él adatszerkezet Pl.: Adott lap körbejárása def faceloop (HE ) : loop = HE do : p r i n t HE loop = HE. next while loop!= HE