Görbe modellezés. Görbe modellezés A geometriai alakzatok modellezése során számos olyan feladat adódik, melyben megadott pontokra megadott sorrendben, görbéket kell illeszteni, vagy egy grakus tervez által megrajzolt görbét (szabad formájú görbét) a számítógépes szoftverek számára feldolgozhatóvá kell tenni. Nyilvánvalóan ez sokféleképpen lehetséges, más-más feltételekkel és tulajdonságokkal. Többféle módszer közül a tervez nek kell kiválasztani az adott feladat megoldására optimálisat. A görbék modellezést két f megközelítésben lehet kezelni, az egyik az interpolációs, a másik az approximációs görbetervezés. Interpoláció esetén a tervezett görbe az adott pontokon áthalad, approximáció esetén csak közelíti az adott pontokat, legfeljebb néhányra illeszkedik (. ábra). Az adott pontokat interpoláció esetén tartópontok nak, approximáció esetén kontrollpontok nak nevezzük. A kontrollpontokat sorban összeköt szakaszok alkotják a kontrollpoligont. 4. ábra. Interpolációs és approximációs görbe Az egyik legegyszer bb módszer, ha az adott pontokat szakaszokkal összekötjük (. ábra). Ezt nevezzük lineáris interpolációnak. Rajzoláshoz akkor használhatjuk, ha az adott tartópontok nagyon közeliek, valamelyik tengelyirányú távolsága egy pixelnyi. Minden más esetben nagyon durva közelítési módszer. 4. ábra. Lineáris interpoláció Mind az interpoláció, mind az approximáció esetén a görbék megadására két módszer létezik. Az egyik, amikor az összes tartópontot (ill. kontrollpontot) gyelembe véve egy görbét határozunk meg. A másik módszer esetén a görbét egymáshoz kapcsolódó részekb l, görbeívekb l állítjuk össze ügyelve az egyes ívek "jó" csatlakozására. Az ilyen ívekb l összeállított görbét spline-nak (szplájn) nevezzük. Az ívek csatlakozását általában geometriai (érint egyenes, κ = ṙ r görbület) és matematikai (deriváltak) tulajdonságok ṙ alapján a következ képpen jellemezhetjük: A spline eredetileg a hajóépít k által használt rugalmas léc, vonalzó volt.
Számítógépi geometria - a csatlakozó görbeívek érint vektorai a csatlakozási pontban egyirányúak, egy egyenessel párhuzamosak (G geometriai csatlakozás), - a csatlakozó görbeívek érint vektorai a csatlakozási pontban megegyeznek (C matematikai csatlakozás folytonosan dierenciálható), - csatlakozó görbeívek görbületei a csatlakozási pontban megegyeznek (G geometriai csatlakozás), - a csatlakozó görbeívek érint vektorai és második deriváltjai a csatlakozási pontban megegyeznek (C matematikai csatlakozás kétszer folytonosan dierenciálható). - a csatlakozó görbeívek i. deriváltjai (i =,..., n) megegyeznek (C n -ed osztályú csatlakozás n-szer folytonosan dierenciálható). A. ábrán csatlakozó görbéket látunk. A baloldali ábrán egy egyszer, közös érint nélküli csatlakozást láthatunk (G, C ). A következ nél a csatlakozó görbéknek a közös pontjaikban már közös az érint egyenesük (G ), majd közös az érint vektoruk és az els deríváltjuk is (C ). Az utolsó, jobboldali ábrán a két csatlakozó görbének a második deríváltja és a görb lete is megegyezik a csatlakozási pontban (C, G ). (Megjegyezzük, hogy az utolsó két ábrán szemmel nem is vesszük észre a különbséget.). ábra. Csatlakozó görbeívek A térbeli (síkbeli) görbéket egy t r(t) = (x(t), y(t), z(t)), t [a, b] skalár-vektor függvénnyel adjuk meg. Az interpolációs és approximációs eljárások gyakorlati alkalmazhatósága miatt a skalár-vektor függvények közül általában a polinom függvényeket vesszük gyelembe. (A Taylor-tétel következményeként egy elég sokszor dierenciálható függvény jól közelíthet egy polinom függvénnyel.) Túl nagy fokszám esetén a számítási m veletek száma nagy, túl alacsony fokszám esetén nem lehet jól közelíteni a modellezend görbét. A splájn módszer esetén általában harmadrend íveket használunk (néha másod- és ötödrend eket is). A harmadrend görbék a legalacsonyabb fokszámú térbeli görbék és már nagyfokú modellezési lehet ségeket nyújtanak (csúcspont, önmetszés, inexiós pont)... Hermite-interpoláció... Harmadrend (kubikus) Hermite-ív Egy térbeli harmadrend h görbét az a i (i =,,, ) együtthatókkal a következ vektor-skalár függvénnyel írhatunk le: h(t) = a + a t + a t + a t, t [a, b]. ()
Görbe modellezés Legyen adott két pont, és, a helyvektoraival (p és p ) és ezekben a harmadrend görbe két érint vektora, e és e. Határozzuk meg az () görbeegyenlet együtthatóit p, p, e és e ismeretében (4. ábra). Továbbá legyen [a, b] [, ]. e e 4. ábra. Hermite-ív A h görbe egy t paraméterérték pontjában az érint vektort a h(t) függvény t -beli h(t ) els deriváltja adja. Ezért el ször deriváljuk le az () függvényt. h(t) = a + a t + a t, t [, ]. () Helyettesítsük be a görbeív kezd és végpontjának megfelel t = és t = paramétereket, ekkor kapjuk a következ egyenletrendszert: h() = a = p h() = a + a + a + a = p h() = a = e h() = a + a + a = e. Ebb l kifejezve az a i együtthatókat, kapjuk a = p a = e a = (p p ) e e a = (p p ) + e + e. Majd az együtthatókat helyettesítsük vissza ()-be. Ekkor rendezés után adódik a harmadrend (kubikus) Hermite -görbe, azaz h(t) = (t t + )p + ( t + t )p + (t t + t)e + (t t )e t [, ]. () A () Hermite-görbe más alakban is felírható h(t) = H (t)p + H (t)p + H (t)e + H (t)e, (4) ahol a H i (t) Hermite -adfokú alappolinomok Charles Hermite (8-9) H (t) = t t + H (t) = t + t H (t) = t t + t H (t) = t t.
4 Számítógépi geometria Mátrixos alakban h(t) = ( t t t ) p p e e, () azaz h(t) = ( H(t) H(t) H(t) H(t) ) p p e e. (6).. élda. Adottak a (,, ) és (,, ) pontok és ezen pontokbeli e (,, ) és e (,, ) érint vektorok. Írjuk fel a kezd pontú és végpontú Hermite-ív egyenletét az adott érint vektorok ismeretében. Ha az adatokat beírjuk a () vagy az () egyenletbe t [, ] esetén kapjuk, hogy h(t) = (t t +) +( t +t ) +(t t +t) +(t t ) Majd a koordináta-függvényekre egyszer sítve kapjuk a konkrét egyenletet. x(t) 4t + 6t + t h(t) = y(t) = t + t + t + z(t) t + t = ( 4t + 6t + t)i + ( t + t + t + )j + ( t + t )k. Az. ábra néhány példát mutat a harmadrend Hermite-ívekre. Az érint vektor állásának és hosszának változtatásával különböz alakú íveket kapunk... ábra. Hermite-ívek A Hermite-ív számítógépi geometriai alkalmazása során gondot okoz, hogy az ív paramétertartománya an transzformációval szemben nem invariáns. Ez azt jelenti, hogy ha az () Hermite-ívet a t [, ] intervallum helyett tetsz leges t [a, b] (b a )
Görbe modellezés intervallum esetén írjuk le, akkor a görbe változik. Ez kiküszöbölhet, ha az adott érint vektorokat mindig osztjuk az intervallum hosszával, azaz (b a)-val. S t, a Hermite-ív az an transzformációval szemben sem invariáns. Ez azt jelenti, hogy ha a tartópontjainak és érint vektorainak az an transzformáltjaiból meghatározzuk a görbét, akkor nem az eredeti görbe an transzformáltját kapjuk. Megjegyzés. Négy adott pontra, mint tartópontra is fel tudunk írni egy harmadrend ívet, hisz láthatjuk, hogy az () egyenlet együtthatóinak meghatározásához négy geometriai adat (négy vektor) kell. Néhány esetben az ívek végpontjaiban az érint vektorokon kívül a görbületek, vagy a második derivált vektorok is adottak, ekkor az ív egyenletét ötödfokú polinom függvényekkel tudjuk leírni.... Interpolációs splájnok Általában a görbemodellezés során a modellezend görbére illeszked pontok ismeretében kell el állítanunk a görbét. Az egymást követ pontpárokra egy-egy görbe ívet illesztünk, ügyelve a "jó" csatlakozásra. Az interpolációs splájn módszernél a modellez nek kell jól megválasztani a görbe parmétertartományát, végpontokbeli peremfeltételeket és biztosítani az egyes ívek "jó" csatlakozását. A fenntiekre adunk néhány megoldást. araméterezés. Ha a szomszédos pontok távolsága közel egyenl, az uniform paraméterezést alkalmazzuk. Az n + tartópontra illeszked j. görbeív paramétertartománya legyen [t j, t j+ ], (j =,,..., n ). Ekkor az uniform paraméterezés esetén t i = i, (i =,,..., n). Ha a pontok távolsága nem egyenletes, akkor a húrhosszal arányos paraméterezést célszer használni. Csatlakozási feltételek. A "jó" csatlakozáshoz a görbeívek csatlakozási pontjaiban ismerni kell az érint vektorokat (érint egyeneseket), esetleg a második deriváltakat (görbületeket). Megválaszthatjuk az érint vektor irányát a csatlakozási pont szomszédos pontjainak összeköt szakaszával párhuzamosan. Az érint vektor hossza lehet a húrhosszal arányos. Az érint vektor lehet akár a pont és a szomszédos pontok által meghatározott parabola pontbeli érint je. eremfeltételek. Ha az összetett görbe kezd - és végpontjában feltesszük, hogy a görbület nulla (vagy a második derivált nulla), akkor természetes (naturál) peremfeltételr l beszélünk. Bessel peremfeltétel esetén a kezd pontbeli érint az els három pont által meghatározott parabola érint je, vagy az els két pont és a másodikbeli érint által meghatározott parabola érint je (hasonlóan a végpontra). Esetleg a kezd pontbeli görbület (második derivált) megegyezhet a mellette lév pontbeli görbülettel (végpontra hasonlóan). Az utóbbi peremfeltételt hívjuk kvadratikus peremfeltételnek... élda. Egy kézzel rajzolt görbét beszkennereltünk és szeretnénk a görbét modellezni egy interpolációs splájnnal. El ször kijelölünk a görbén tartópontokat. Jelen esetben felvettünk közel egyenletesen hat tartópontot (6. ábra). Így a paraméterezés lehet uniform. A közbüls pontokban az érint vektorokat a szomszédos pontokat összeköt szakaszokkal párhuzamosan vettük fel. A vektorok hossza fele a megfelel szakasz hosszának. A végpontokban az érint vektorokat közvetlenül megadtuk (7. ábra). A modellezend görbét a pont körül nem "jól" közelítettük (8. ábra), ott módosítani kellene az érint n.
6 Számítógépi geometria 6. ábra. A megrajzolt görbe 4 e e e e 4 e e 4 7. ábra. Húrhosszal arányos érint vektorok 4 8. ábra. A pont környéke nagyon eltér A közbüls pontokban határozzuk meg az érint vektorokat a szomszédos pontokkal meghatározott parabolák érint vektoraiként (9. ábra). A peremfeltételek megegyeznek az el z ekkel. Ebben az esetben sem közelítettük "jól" a modellezend görbét a pont körül (. ábra). Jelen példában szinte teljesen megegyezik a 8. ábrán látható közelít görbével. e e e e e 4 e 4 9. ábra. Érint k megadása parabolák segítségével
Görbe modellezés 7 4. ábra. A pont környéke nagyon eltér Az érint k helyes megválasztásával, a közbüls pontokbeli érint kis változtatásával, már jól közelít splájnt állíthatunk el. A, a és a 4 pontokbeli érint k kismértékben változtak a kapott splájn csaknem fedi a tervezett görbét (. ábra). 4. ábra. Hermite interpoláció 6 ponttal Jelen esetben a kevesebb kontroll ponttal majdnem ugyanazt a görbét tudjuk leírni (. ábra).. ábra. Hermite interpoláció ponttal Célszer az alapadatok számát redukálni. Ha kevesebb tartópontra is fel tudunk venni egy megfelel görbét, akkor a görbe adatainak tárolása, mozgatása, változtatása gyorsabb, könnyebb. Kevesebb lesz a csatlakozás, a görbe simább lesz... élda. Írjuk fel a. ábrán látható h(t) síkbeli splájn görbe egyenletét. A támaszpontok és az érint vektorok a következ k : p = (, ), p = (46.9, 9.), p = (., 6.), e = (7.,.), e = (.,.7), e = (7., 4.9). Mindkét görbeívre, a p és p pontok Az adatok A4-es méret lap esetén milliméterben értend k. A rajz méretei miatt a. ábrán az eredeti érint vektorok hosszának csak a harmada van megrajzolva.
8 Számítógépi geometria által meghatározott s (t) (t [, ]) ívre és a p és p pontok által meghatározott s (t) (t [, ]) ívre az adatokat írjuk be ()-ba. Ekkor { s (t), ha t [, ] h(t) = s (t), ha t [, ], ahol ( x(t) s (t) = y(t) s (t) = ( x(t) y(t) ) ) = ( 6.4t + t + 7.t.8t + 9.7t +.t = ( 6.4t + t + 7.t)i + (.8t + 9.7t +.t)j, = ( 4.6t + 88.6t +.t + 46.9 t + 6.8t.7t + 9. = ( 4.6t + 88.6t +.t + 46.9)i + ) ( t + 6.8t.7t + 9.)j. ) Az interpolációs splájn görbék esetén egy másik általános elv, hogy nem adjuk meg a csatlakozó pontokbeli érint vektorokat, hanem a bels pontokban a csatlakozó ívek els és második deriváltjai is egyenl vé tesszük, perem feltételnek pedig a megadott érint vektorok mellett a második deriváltat nullának választjuk... Bézier-görbe... Harmadrend Bézier-görbe Legyenek adottak a térbeli,, és kontrollpontok a p, p, p és p helyvektorokkal. Ekkor az általuk meghatározott harmadrend Bézier 4 -görbét a b(t) = i= egyenlet írja le. Részletesen kiírva ( ) t i ( t) i p i i, t [, ] (7) b(t) = ( t) p + t( t) p + t ( t)p + t p = ( t + t t + )p + (t 6t + t)p + ( t + t )p + t p. (8) Mátrixos alakban 4 ierre Bézier (9-999) b(t) = ( t t t ) 6 p p p p. (9)
Görbe modellezés 9 A B i (t) = ( ) t i ( t) i, () i azaz a B (t) = t + t t +, B (t) = t 6t + t, B (t) = t t és a B (t) = t skalár függvényeket általában súlyfüggvények nek (blending function) nevezzük, Bézier-görbe esetén Bernstein -polinomoknak. A Bézier-görbe felírható a alakban is. b(t) = Bi (t)p i () i= = B (t)p + B (t)p + B (t)p + B (t)p. () A Bernstein-polinomok egységbontást alkotnak (összegük ), azaz i= B i (t), mert = = (t+( t)) = ( ) i= i t i ( t) i = i= B i (t). Tehát valóban nevezhetjük ket súlyfüggvényeknek is. A. ábra a súlyfüggvények grakonjait mutatja. Láthatjuk és könnyen kiszámolhatjuk, hogy a B i (t) polinomnak a t = i helyen van a maximuma, azaz az i pont környékén befolyásolja legjobban a Bézier-görbe alakját. Továbbá az is látható, hogy a t = helyen csak a B () = és a t = helyen csak a B () =, a többi függvény a értéket veszi fel. Tehát a Bézier-görbe a kezd és végpontokon áthalad, a többit csak megközelíti. A Berstein-polinomok szimmetriáiból megállapíthatjuk, hogy a Bézier-görbe szimmetrikus, azaz ha a kontrollpontokat fordított sorrendben tekintjük (a számozás sorrendjét felcseréljük), akkor ugyanazt a görbét kapjuk. B ( t) B ( t) B ( t) B ( t) / / t. ábra. A harmadfokú Bersten-polinomok A 4. ábrán a,, és kontrollpontok által megadott harmadrend Béziergörbét láthatunk. A de Casteljau 6 -algoritmussal a Bézier-görbének egy geometria származtatását adhatjuk meg. A. ábra jelöléseit használva szerkesszük meg a görbe t = paraméterhez tartozó pontját. Tekintsük a kontrollpontokat összeköt poligont, a kontrollpoligont. Ennek minden szakaszának határozzuk meg a kisebb index végpontja felöli harmadoló pontját. Bernstein, Szergej Natanovics (88-968) 6 aul de Casteljau (9-)
Számítógépi geometria 4. ábra. Harmadrend Bézier-görbe Ezek egy újabb poligont, a poligont határozzák meg. Megint elvégezve a harmadolásokat, és így tovább, az algoritmusunk végén kapunk egy pontot a pontot. Ez lesz a keresett görbe pont. Tetsz leges t [, ] paraméterérték pontot is hasonló algoritmussal határozhatjuk meg. (Több pont esetén, magasabb rend Bézier-görbe esetén is alkalmazható ez az algoritmus.). ábra. A Bézier-görbe t = pontja A de Casteljau-algoritmus egy szakaszokkal való közelítésre ad módot. Az eredeti görbét felosztjuk több "kisebb" görbére. Ha megszerkesztjük a görbe paraméterhez tartozó pontját, akkor a 6. ábra alapján az útoljára kapott pontokat tekintve két harmadrend Bézier-görbe kontrollpontjait kapjuk, melyek a görbéhez is és egymáshoz is közelebb vannak. Ezen kontrollpoligonokra újra és újra alkalmazva az paraméterhez tartozó pont megszerkesztését egyre jobban megközelítjük a görbét. A gyakorlatban négyöt "felezéssel" már a görbe közelíthet. A számítógépes programok többsége is ez alapján rajzolja ki a Bézier-görbét. (Ha a megjelenít eszközön két egymást követ kontrollpont valamely koordináta-tengely irányú távolsága kisebb mint. pixel, akkor a kontrollpontokat egy szakasszal köthetjük össze.) A de Casteljau-algoritmusból (vagy a Bernstein-polinomok tulajdonságaiból) következik, hogy a Bézier-görbe a kontrollpontjainak konvex burkán belül halad (7. és 8. ábra). (Nem távolodik el nagyon a kontrollpontoktól. Az. ábrán láthatjuk, hogy a Hermite-ív eléggé el tud távolodni az interpolálandó pontoktól.)
Görbe modellezés 6. ábra. A Bézier-görbe "felezéses" algoritmusa 7. ábra. A kontrollpontok konvex burka 8. ábra. Bézier görbék a kontrollpontok konvex burkán belül Határozzuk meg a harmadrend Bézier-görbe deriváltját. A (8) alakot gyelembe véve a derivált b(t) = ( t + 6t )p + (9t t + )p + ( 9t 6t)p + t p. () A deriváltba behelyettesítve a t = és t = paramétereket, kapjuk hogy b() = (p p ) és b() = (p p ),
Számítógépi geometria azaz a kezd pontban a kezd két kontrollpont által meghatározott vektor háromszorosa lesz az érint vektor, míg a végpontban utolsó két kontrollpontból kapjuk az érint vektort. Hasonlóan ellen rizhetjük, hogy a de Casteljau-algoritmus utolsó szakasza érinti a görbe szerkesztett pontjában a görbét. (éldául a. ábrán a szakasz érinti a görbét a pontban.) További jó tulajdonsága a harmadrend Bézier-görbének, hogy a paramétertartomány és a kontrollpontjainak an transzformációjával szemben invariáns. Tehát megszorítás nélkül mindig használhatjuk a paramétertartománynak a [, ] intervallumot, és elég csak a görbe kontrollpontjait transzformálni, majd megadni a görbét a transzformált kontrollpontokhoz, nem kell a görbe pontjai transzformálni. Így a görbe kontrollpontjai a mer leges vetítésre is invariánsak. Sajnos a centrális vetítés (amely nem an, hanem egy projektív transzformáció) nem rzi meg a kontrollpontjainak invarianciáját. A 9. ábrán a,, és kontrollpontokkal rendelkez Bézier-görbe elöl-, felül-, balnézetét és axonometrikus képét úgy rajzoltuk meg, hogy a kontrolpontoknak vettük a megfelel vetületét és ezekhez határontuk meg a megfelel vetület (már síkbeli) Bézier-görbét. z x O y 9. ábra. Bézier görbe vetületei.4. élda. Írjuk fel az egyenletét a 4. ábrán szerepl harmadrend Bézier görbének. A kontrollpontok koordinátái 7 (, ), (4.,.), (4.9, 6.) és (7.,.). Az adatokat beírva (7), illetve (8) egyenletbe, kapjuk, hogy ( ) ( ) ( ) ( ) 4. 4.9 7. b(t) = ( t) + t( t) + t ( t) + t. 6.. ( ).t + 79.t + 4.6t =, t [, ]. 4.4t 7.t + 9.9t A pont koordinátái (. ábra): ( ) (. ( b = ) + 79. ( ) + 4.6 ( ) ) 4.4 ( ) 7. ( ) + 9.9 ( ) = ( )...6 7 Az adatok A4-es méret lap esetén milliméterben értend k.
Görbe modellezés A harmadrend Bézier-görbe kezd és végpontbeli érint i ismeretében megkapjuk a kapcsolatát a harmadrend Hermite-görbével, melyet a. ábra mutat. A,, és kontrollpontok által meghatározott Bézier-görbe egyben egy kezd - és végpontú, valamint e = kezd - és e = végérint j Hermite-görbe. e e. ábra. Harmadrend Bézier-görbe és Hermite-ív kapcsolata... Interpoláló Bezier-görbe Az adott pontokat interpoláló Bézier-görbét is el tudunk állítani. Ekkor új kontrollpontokat kell felvennünk, melyekkel meghatározott approximáló Bézier-görbe az eredeti pontokon áthalad. Az adott,,, pontok koordinátáiból számoljuk ki az új,,, kontrollpontokat. A hozzájuk tartozó helyvektorok és paraméterek legyenek rendre p, p, p, p, illetve, t, t és, ahol ( < t < t < ). Ekkor az interpoláló Bézier görbe (7) egyenlete a következ alakú lesz. b(t) = i= ( ) t i ( t) i p i, t [, ] (4) i Az egyenletbe behelyettesítve az eredeti i pontok helyvektorait és paramétereit, kapjuk, hogy p = p, p = p, azaz = és =. Továbbá p = p = ( ) t i i ( t ) i p i () i= ( ) t i i ( t ) i p i, (6) i= amely a keresett és koordinátáira egy-egy (bizonyíthatóan megoldható) lineáris egyenletrendszert ad. A t és t paramétereket választhatjuk -nak, illetve -nak. A. ábrán egy interpoláló harmadrend Bézier-görbét láthatunk.
4 Számítógépi geometria * * * *. ábra. Interpoláló Bézier-görbe... Racionális harmadrend Bezier-görbe Legyenek adottak a térbeli,, és pontok és a p, p, p és p helyvektorok mellett az egyes pontokhoz tartozó w, w, w, w IR + {} (w + w + w + w ) 8 súlyok. Ekkor az általuk meghatározott harmadrend racionális Bézier-görbé t az r(t) = i= w i B i (t) i= w ib i (t)p i, t [, ] (7) egyenlet írja le, ahol a Bi függvények a harmadfokú Bernstein-polinomok. A nemnegatív Bi (t) i= w függvények összege, így a harmadrend racionális Bézier-görbe súlyfüggvényei. ibi (t) Azonos súlyok esetén a Bézier-görbét kapjuk vissza. A súlyok növelésével az egyes pontokat hangsúlyosabbakká tehetjük, a görbét a nagyobb súlyú pontok felé "húzzuk". Ha valamely súlyt -nak választjuk, akkor a neki megfelel kontrollpontot "kikapcsoljuk", így a körbe fokszámát is csökkentjük. A. ábrán láthatjuk, hogyan változik a görbe a w súly függvényében. Másodrend racionális Bézier-görbeként a súlyok megfelel választásával nem csak parabolaíveket, hanem ellipszis- vagy hiperbola-, s t köríveket is el tudunk állítani. A racionális Bézier-görbéknek a kontrollpontjai invariánsak a centrális vetítésre is...4. Harmadrend Bézier splájnok Harmadrend (racionális vagy nem racionális) Bézier-görbékb l splájn-görbét is el tudunk állítani. Biztosítani kell a "jó" csatlakozásokat. A C osztályú csatlakozás feltétele, hogy a csatlakozási pontokban az érint vektorok megegyezzenek, azaz a Bézier-görbék esetén az els görbe utolsó két pontja és a második görbe els két pontja egy egyenesre illeszkedjenek és a csatlakozási pont felezze a másik két pont által meghatározott szakaszt. 8 nem mind nulla
Görbe modellezés w = w = w = w =4 w = w = w =. ábra. A súlyok változtatják a görbe alakját Ezt általában egy plusz kontrollpont felvételével érhetjük el. A. ábrán a.. példa (. old.) adataira két els rendben folytonosan csatlakozó harmadrend Bézier-görbét láthatunk. A Q pont az el re adott kontrollpontok közé beiktatott új, csatlakozási pont. Láthatjuk harmadrend Bézier-ívekb l nehézkesen lehet összerakni több pontot közelít splájn görbét. Már a C osztályú csatlakozáshoz is plusz kontrollpontot kellett felvenni. Magasabbrend csatlakozás feltételeit is meghatározhatnánk, de e helyett inkább gyakorlatban a B-spline görbét használjuk. Q. ábra. Bézier-spline 4... n-ed rend Bézier-görbe Legyenek adottak a térbeli,,..., n pontok a p, p,..., p n helyvektorokkal. Ekkor az általuk meghatározott n-ed rend Bézier-görbé t a b(t) = n i= vektor-skalár függvény írja le. Az ( ) n t i ( t) n i p i i, t [, ] B n i (t) = ( ) n t i ( t) n i i n-ed fokú Bernstein-polinomokkal a következ alakban írható b(t) = n Bi n (t)p i, t [, ]. i=
6 Számítógépi geometria A harmadrend esethez hasonlóan, a Bernstein-polinomok egységbontást alkotnak, azaz n i= Bn i (t)... élda. A. példában (. old.) szerepl kontrollpontokra határozzuk meg az ötödrend Bézier-görbét (4. ábra). 4 4. ábra. Az ötödrend Bézier-görbe A harmadrend Bézier-görbe tulajdonságait általánosíthatjuk az n-ed rend re is. Röviden összegezve a Bézier-görbe legfontosabb tulajdonságait láthatjuk, hogy a görbe a kezd és végpontok kivételével approximál, a kontrollpontok konvex burkán belül halad (. ábra). Kezd - és végpontban érint a kontrollpoligonjának a kezd - és utolsó szakasza. Hossza a szakasz hosszának n-szere. Kontrollpontjaira nézve szimmetrikus, a kezd - és végpont szerepe felcserélhet. Kontrollpontjainak és paramétertartományának an transzformációjával szemben invariáns. (Elég a kontrollpontjait elmozgatni, a kontrollpoligont nagyítani, mer legesen vetíteni, majd az így kapott pontrollpontokra kiszámolni, felrajzolni a görbét.) A de Casteljau-algoritmus az n-ed rend Bézier görbe esetén is alkalmazható. A centrális vetítéssel szemben nem invariáns. 4. ábra. A kontrollpontok konvex burka Lehet ség van arra, hogy egy n-rend Bézier-görbének a fokszámát növeljük (n+)-ed rend re, úgy hogy az új, magasabb rend görbe ugyanazt a görbét állítsa el. Ehhez új kontrollpontokat kell felvennünk, melyek az eredeti kontrollpoligonon vannak. Az i. új i kontrollpont az (i ). szakasz n+ arányú osztópontja. A 6. ábrán az eredeti,,, kontrollpontokkal megadott harmadrend Béziér-görbét az új,,,, és 4 kontrollpontok is el állítják, de velük a görbe már negyedrend. A, negyedel -, míg a a megfelel szakasz felez pontja. (A kontrollpoligon sarkait levágtuk.) A görbe fokszámnövelésével több lehet ség nyílik a görbe alakjának változtatására, valamint ismételt fokszámnöveléssel a kontrollpoligonokkal közelíthetjük a Bézier-görbét. A harmadrend racionális Bézier-görbékhez hasonlóan deniálhatók az n-edrend racionális Bézier-görbék is, melyeknek további jó tulajdonságai vannak. Többek között a kontrollpontja a centrális vetítéssel szemben is invariánsak.
Görbe modellezés 7 * * * * * 4 6. ábra. Bézier-görbe fokszámának növelése Mivel sok kontrollpont esetén a görbe fokszáma is nagy, kontrollpontjai változásával a görbe globálisan változik (bármely pont elmozdulása hatással van a teljes görbe alakjára), ezért a CAD programok általában a továbbfejlesztett változatát, a NURBS görbéket alkalmazzák... B-spline görbe Tekintsük a t t... t m skalárokat. Az N i (t) = N k i (t) = {, ha t [ti, t i+ ), egyébként t t i N k i (t) + t i+k t N k i+ (t) t i+k t i t i+k t i+ (8) rekurzióval deniált függvényt normalizált B-spline alapfüggvény nek nevezzük, a t i skalárokat pedig csomóérték eknek (knot values). Az el forduló hányadosokat -nak tekintjük. Az Ni k (t) polinomok legfeljebb (k )-ed fokú polinomok, melyekre teljesül, hogy Ni k (t), Ni k (t) =, ha t [t i, t i+k ] és minden k-ra j N j k (t). Legyenek adottak a térbeli i kontroll pontok a p i (i =,..., n) helyvektorokkal. Ekkor a (k )-ed fokú (vagy k-ad rend ) B-spline görbét leíró függvényt a r(t) = n Ni k (t)p i, k n +, t [t, t m ], (9) i= alakban deniáljuk. Az N k i (t) normalizált B-spline alapfüggvényeket csak k számú pont befolyásolja, így a görbe lokálisan változtatható. Csak megváltoztatott kontrollpont környékén változik a görbe, nem változik a teljes görbe alakja. A B-spline görbe jobban "simul" a kontrollpoligonhoz, mint a Bézier-görbe. A görbe a k-asával vett kontrollpontok konvek burkainak unióján is belül marad (. ábra). A B-spline görbe egymáshoz kapcsolódó ívekb l áll, melyek legfeljebb (k )-ed rendben folytonosan kapcsolódnak egymáshoz. A csomóértékek multiplicitása legfeljebb k. (Legfeljebb k egymást követ csúcspontban lehet azonos csomóérték.)
8 Számítógépi geometria A B-spline görbe paraméterezése lehet uniform (egyenköz ), vagy nem uniform. Ahhoz hogy a görbe a kezd és a végponton áthaladjon, a megfelel csomóértékek multiplicitását kell növelni. A 7. és a 8. ábrákon néhány példát mutat k = és k = 4 esetekre feltüntetve a csomóértékeket tartalmazó csomóérték vektor t. Gyakorlatban is általában négyzetes (k = ) vagy köbös (k = 4) B-spline görbéket alkalmaznak. (A k = esetben visszakapjuk a kontrollpoligont.) (,,,,4,,6) (,,,.,,,) 7. ábra. B-spline görbék k = esetén (,,,,4,,6,7) (,,,,,,,4) 8. ábra. B-spline görbék k = 4 esetén.6. élda. A 9. ábrán a.. példában szerepl kontrollpontokra látunk két B-spline görbét uniform paraméterezés mellett. 4 k = k = 4 9. ábra. B-spline görbék
Görbe modellezés 9... Harmadrend B-spline görbe Legyenek a harmadfokú normalizált B-spline alapfüggvények (t [, ],. ábra) N (t) = 6 ( t), N (t) = 6 (t 6t + 4), N (t) = 6 ( t + t + t + ), N (t) = 6 t. N ( t) N ( t) N ( t) N ( t) / / t. ábra. A harmadfokú B-spline súlyfüggvények Ha a térbeli,,..., n kontrollpontok közül kiválasztunk négy egymást követ i, i, i+, i+ (i =,..., n ) kontrollpontot és keressük az általuk meghatározott harmadrend B-spline görbe r i (t) ívét. (A 8. bal oldali ábrán négy pontra láthatunk egy harmadrend uniform B-spline görbét.) A r i (t) (i =,..., n ) görbeív egyenlete pedig mátrixos alakban r i (t) = ( t t t ) 6 6 4 p i p i p i+ p i+, t [, ]. () A harmadrend B-spline egyes íveinek csatlakozási pontjai a kontrollpoligon segítségével könnyen meghatározhatjuk. Tekintsük a i i i+ (i =,..., n ) háromszög i -hez tartozó súlyvonalának i -hez közelebbi harmadoló pontját. Legyen ez a Q i pont. A kapott n számú Q i (i =,..., n ) pontokban másodrendben csatlakoznak a harmadrend ívek, melyek Bézier-görbék. A Q i pontban a görbe érint vektora a i i+ vektor fele. Így a Q i és a Q i+ pontokon átmen Bézier-görbe középs kontrollpontjait a Q i és a Q i+ pontokbeli érint egyenesek és a i i+ egyenes metszéspontjai adják. A. ábra mutatja a szerkesztést négy pont esetére. A Bézier-ívhez tartozó kontrollpoligon a Q R R Q poligon. (A. ábra és a 9. ábra k = 4 esete uniform harmadrend B-spline görbét ábrázol.) Ha a kezd és a végpontot kétszeres multiplicitással számoljuk, akkor Q = és Q n = n. A Q, Q és a Q n, Q n pontok között is meg tudunk adni
Számítógépi geometria egy-egy Bézier-ívet. Így a kapott splájn interpolál a kezd és végpontokban. (Más peremfeltételeket is megadhatunk, pl. az ACAD az érint vektorokat kéri. Null-vektortól eltér vektorral akár módosíthatunk a kontrollpontok által megadott görbe alakján.) R R Q Q. ábra. Harmadrend B-spline görbe 4 pontra 4. ábra. Harmadrend B-spline görbe 6 pontra A Bézier görbékhez hasonlóan interpoláló B-spline görbéket is el tudunk állítani. Ehhez olyan új kontrollpontokat kell felvenni, melyek esetén a görbe az eredeti pontokon áthalad.... Racionális B-spline görbe Adottak a p i (i =,..., n) helyvektorokkal a i kontrollpontok. A k-ad rend B-spline görbe és a (k )-ed fokú N k i (t) normalizált B-spline alapfüggvények (9) denícióját felhasználva a (k )-ed fokú (vagy k-ad rend ) racionális B-spline görbét a következ képpen deniáljuk: r(t) = n Ri k (t)p i, t [t, t m ], () i= ahol R k i (t) = w i N k i (t) n i= w in k i (t) () és a w i skalárok (nem mind nulla) a i pontokhoz tartozó súlyok. Azonos súlyok használatávak visszakapjuk a B-spline görbét. Valamely kontrollpont súlyának növelése a pont felé húzza a görbét.
Görbe modellezés Ha a racionális B-spline görbéhez tartozó paraméterezés nem uniform, akkor a kapott () görbét nem uniform racionális B-spline görbének, azaz NURBS görbének (nonuniform rational B-spline) nevezzük. A NURBS görbék már minden jó tulajdonsággal rendelkeznek, amely számítógépi geometriai alkalmazásukhoz szükséges. (Az ACAD is NURBS görbéket használ interpoláló splájn görbékhez. Alapesetben a w i súlyokat -nek választja.).7. élda. A. ábrán a 6. példában "megtervezett" görbére látunk további interpoláló és approximáló megoldásokat. Egy approximáló harmadrend B-spline görbét, egy approximáló ötödrend Bézier görbét, egy harmadrend Hermite görbékb l összeállított interpoláló szplájnt és egy ACAD-dal el állított interpoláló NURBS splájn görbét. 4 B-spline Bézier H-spline ACAD. ábra. Különböz szplájn görbék Láthatjuk, hogy a kivánt görbét sokféle szempont szerint, különféle görbékkel közelíthetjük. Rengeteg jól közelít megoldás van, de nincs köztük legjobb. Mindig a tervez nek kell kiválasztani a számára legjobban megfelel t, a pontokat interpolálót vagy approximálót. A kontroll poligont nagyon vagy kevésbé követ t, a könnyen és jól transzformálhatót, a lokálisan vagy globálisan változtathatót. A számítógépes tárolás szempontjából fontos, hogy minél kevesebb alapadatból lehessen meghatározni. A gyorsaság szempontjából minél egyszer bb legyen a görbe el állítása. Minél kevesebb, minél kisebb fokszámú görbékb l legyen összerakva, de a csatlakozási pontokban minél nagyobb legyen a csatlakozás rendje. Megmunkálásra tervezett görbék esetén legalább másod- vagy harmadrendben csatlakozzanak a görbeívek.... Online görbemodellezés http://www.emk.nyme.hu/index.php?id=8 http://www.math.u-szeged.hu/ nagyg/oktatas/inf/bezier/drawbezier.html http://www.doc.ic.ac.uk/ dfg/andyssplinetutorial/beziers.html http://www.ibiblio.org/e-notes/splines/basis.htm http://www.cs.technion.ac.il/ cs4/applets/applets/bspline /GermanApplet.html
Számítógépi geometria.8. Feladat..8.. Az adott kontrolpontok és érint vektorok alapján határozza meg a harmadrend Hermite-íveket! Készítsen ábrát! a) (, ), (, ), t (, ), t (, ). b) (, ), (, ), t (, ), t (, ). c) (, ), (, ), t (, ), t (, ). d) (, ), (4, ), t (, ), t (, ). e) (,, ), (4,, ), t (,, ), t (,, ). f) (,, ), (,, ), t (,, ), t (,, )..8.. Írja fel a (, ), (, ), (4, ), (6, ) kontrollpontok és a t (, ), t (, ), t (, ), t (, ) érint vektorok által meghatározott harmadrend Hermite-ívekb l álló görbe egyenletét! Készítsen ábrát! (A h(t) görbe a h (t), h (t) és h (t) görbeívekb l áll.).8.. Egy f(x) függvényr l a következ adatokat ismerjük: f() =, f() =, f(4) =, f() =, f () =, f () =, f (4) = 4, f () =. Határozza meg az f(x) függvényt közelít h(x) függvényt Hermite-interpolációval!.8.4. Az f(x) = x függvényt az x [, ] intervallumon közelítse a h(x) Hermiteinterpolációs spline függvénnyel, az a) x =, x =, x = b) x =, x =, x =, x = helyeken tekintett f(x i ) és f (x i ) értékekkel interpolálva!.8.. Legyen x =, x =, x =! Közelítse a h(x) Hermite-interpolációs spline függvénnyel az f(x) = log(x) függvényt az [, ] intervallumon!.8.6. Írja fel az alábbi kontrollpontok által meghatározott b(t), t [, ] harmadrend Bézier-görbét leíró vektor-skalár függvényt, majd rajzoljuk meg a görbét! a) (, ), (, ), (, ), (, ). b) (, ), (, ), (, ), (, ). c) (, ), (, ), (, ), (, ). d) (, 8), (, 6), (, 6), (, 8). e) (, ), (, ), (, ), (, ). f) (, ), (, ), (, ), (, ). g) (, ), (, ), (, ), (, ).
Görbe modellezés h) (, ), (, ), (, ), (, ). A következ feladatoknál rajzolja meg a görbe elöl- és felülnézetét, valamint egy axonometrikus képét! Az egységkocka éleit is rajzolja meg! i) (,, ), (,, ), (,, ), (,, ). j) (,, ), (,, ), (,, ), (,, ). k) (,, ), (,, ), (,, ), (,, )..8.7. Írja fel a következ kontrollpontok által meghatározott b(t), t [, ] másodrend Bézier-görbét leíró vektor-skalár függvényt, majd rajzolja meg a görbét! a) (, 4), (, 4), (, 4). b) (, ), (, ), (, )..8.8. Írja fel a következ kontrollpontok által meghatározott b(t), t [, ] negyedrend Bézier-görbét leíró vektor-skalár függvényt, majd rajzolja meg a görbét! a) (, ), (, 4), (6, ), (8, ), 4 (, ). b) (, ), (, ), (, ), (, ), 4 (, )..8.9. Rajzoljon meg ACAD-dal egy spline görbét, majd annak megforgatásával készítse el egy váza, pohár, kehely vagy harang modelljét felületként és testként!