Ugrás a tartalomhoz

Komputergrafika -- Matematikai alapok

Dr. Kovács Emőd

Kempelen Farkas Hallgatói Információs Központ

Bézier-görbe

Bézier-görbe

Az eljárást Pierre Bézier francia mérnök publikálta először 1962-ben, aki az autótervezésben alkalmazta a közelítő görbéket. Paul de Casteljau 1959-ben már kifejlesztette azt az algoritmust, amelyet a mai napig is használunk a Bézier-görbék előállítására.

Keressünk olyan görbét, amely a megadott pontokat közelíti (approximálja) az előre megadott sorrendben és nem érinti (nem interpolálja) a pontokat, vagy legalábbis nem mindegyiket.

A de Casteljau-algoritmus

Adottak a sík vagy a tér pontjai és paramétertartomány. A megadott pontokat kontrollpontoknak, az általuk meghatározott poligont kontrollpoligonnak nevezzük. Legyen

A második egyenlet jól ismert, hiszen a szakasz osztópontjának a meghatározására szolgál. Most már elvégezhető a szerkesztés, ahol az így meghatározott pont a Bézier-görbe paraméterhez tarozó pontja lesz.

8.2. ábra. paraméterhez tartozó Bézier-görbepont szerkesztése de Casteljau-algoritmussal.

A Bézier-görbe előállítása Bernstein-polinommal

A Bézier-görbe polinominális előállításához segítségül hívjuk a Bernstein polinom-ot:

ahol a binominális együtthatók a következőképpen adottak

Ezekután az

a Bézier-görbe polinominális alakja. Láthatjuk, hogy a Hermite-görbéhez hasonlóan a kontrolladatok, jelen esetben a kontrollpontok súlyozott összegéről van szó.

A Bézier-görbe néhány tulajdonsága

A Bézier-görbe kontrollpontjai affin transzformációjával szemben invariáns. Ez következik a de Casteljau-féle előállításból. Ezen tulajdonságot kihasználva, a görbe affin transzformációja (Pl.:eltolás, elforgatás, tükrözés, skálázás, párhuzamos vetítés) esetén elég a kontrollpontokra végrehajtani a transzformációt, mivel a transzformált pontok által meghatározott Bézier-görbe megegyezik az eredeti görbe transzformáltjával.

Ha , akkor a Bezier görbe kontrollpontjainak konvex burkán belül van.

8.3. ábra. A Bézier-görbe kontrollpontjainak konvex burkán belül marad

A Bézier-görbe az első és utolsó kontrollponton áthalad.

A Bézier-görbe „szimmetrikus”, azaz a és a pontok ugyanazt a görbét állítják elő.

Ha akkor a Bézier-görbe kezdő- és végérintője:

Tehát a kezdő és a végpontban az érintők tartó egyenese a kontrollpoligon oldalai.

8.4. ábra. A Bézier-görbe és érintői esetén az érintővektorok harmadát felmérve.

A görbe globálisan változtatható, azaz, ha megváltoztatjuk egy kontrolpontjának a helyzetét, akkor az egész görbe alakváltozáson megy keresztül. Bebizonyítható a Bernstein-polinomok tulajdonsága alapján, hogy a kontrollpontnak a paraméterértéknél van legnagyobb hatása a görbe alakjára. Ez utóbbi tulajdonságot nevezik úgy, hogy a görbe pszeudolokálisan változtatható. Tehát a Bézier-görbe alakváltozása jól prognosztizálható.

A polinominális előállításból jól látható, hogy pontok, azaz db pont esetén n-edfokú approximáló görbét kapunk, azaz a kontrollpontok számának növekedésével arányosan nő a poligon fokszáma is.

Harmadfokú Bézier-görbék

Adjuk meg az esetén kontrollpontokat közelítő Bézier-görbe polinominális alakját a harmadfokú Bernstein-polinomok segítségével:

Ahol a harmadfokú Bernstein-polinomok

azaz

tehát

A görbe érintője:

Ezután könnyedén megtalálhatjuk az Hermite-görbe és a Bézier-görbe közötti kapcsolatot. Ha az Hermit-görbe a és pontokkal, valamint a és érintő vektorokkal van meghatározva, akkor a kezdő és végpontbeli érintőknek meg kell egyezniük a Bézier-görbe érintőivel, azaz , továbbá a kezdő és végpontok is egybeesnek.

Tehát az Hermite-görbével megegyező Bézier-görbe kontrollpontjai:

A harmadfokú Beziér-görbék (s természetesen az Hermite-görbék is) változatos képet mutathatnak.

8.5. ábra. Harmadfokú Bézier-görbék

Ha a harmadfokú Bézier-görbe kontrollpontjai nincsenek egy síkban, akkor a Bézier-görbe térgörbe lesz, azaz nem találunk olyan síkot amelyre a görbe minden pontja illeszkedne. A három kontrollpont esetén a másodfokú Bézier-görbe már egy jól ismert síkgörbe, parabola lesz.

Kapcsolódó Bézier-görbék

Az előző fejezetben láttuk, hogyan milyen kapcsolat van az Hermite-görbe és a Bézier-görbe között. Ha több mint két pontot szeretnénk összekötni interpoláló görbével, akkor kézenfekvő megoldás a kapcsolódó harmadfokú Bézier-görbék alkalmazása, amelyek természetesen Hermite-görbék is lehetnek. Kapcsolódó görbeívek használata igen gyakori a modellezésben. Ilyen esetekben a csatlakozásnál megadjuk a folytonosság mértékét. Ha az és két csatlakozó görbe amely négy-négy kontrollponttal adott: és .

A kapcsolódásnál megkövetelhetünk nulladrendű , elsőrendű , illetve másodrendű folytonosságot. Általánosságban azt mondhatjuk, hogy két csatlakozógörbe kapcsolódása folytonos, ha az egyik görbe deriváltjai a végpontjában megegyeznek a másik görbe deriváltjaival a kezdőpontban, az deriváltig bezárólag. A matematikai folytonosság vagy parametrikus folytonosság mellett létezik geometriai folytonosság is. Pl. megegyezik -lal, és folytonosan kapcsolódik két görbe, ha az érintők a kapcsolódási pontban egy irányba néznek, de a hosszuk nem feltétlenül egyezik meg, azaz egyik érintő skalárszorosa a másiknak:

A nulladrendű folytonossághoz elegendő, ha a csatlakozáskor keletkező görbe megrajzolható anélkül, hogy a ceruzánkat felemelnénk. A mi esetünkben ez akkor teljesül, ha az első görbe végpontja megegyezik a második görbe kezdőpontjával, azaz: és mivel ezen görbepontok megegyeznek a megfelelő kontrollpontokkal, hiszen a Bézier-görbe a végpontokat interpolálja, ezért kell, hogy teljesüljön.

Az elsőrendű, folytonossághoz az érintőknek kell megegyezniük, azaz kell, hogy teljesüljön. Ez a kontrollpontokra az feltételt jelenti, azaz, amellett, hogy a két szegmens kezdő- és végpontja megegyezik, az pontoknak egy egyenesre kell illeszkedniük és az pontnak feleznie kell az szakaszt.

A másodrendben folytonos kapcsolódáshoz a fenti feltételeken kívül a második deriváltaknak is meg kell egyezniük, azaz Ez a kontrollpontokra nézve a következőt jelenti:

,

ami geometriai szempontból azt jelenti, hogy az egyenes és a egyenes m metszéspontjára teljesül, hogy felezi az szakaszt, pedig felezi az szakaszt.

A gyakorlatban folytonosságú kapcsolat elégséges, pl. animáció esetén a mozgó kamera által készített felvétel akkor lesz valósághű, ha a második derivált is megegyezik. Gondoljunk arra, hogy az út/idő függvény második deriváltja a gyorsulást adja, tehát ha a kapcsolódási pontban megváltozik a gyorsulás, akkor szaggatott felvételt kapunk.

8.6. ábra. , és folytonosan kapcsolódó Bézier-görbék

Cardinal spline

A cardinal spline egy a kontrollpontokat interpoláló, azaz az előre megadott pontokon adott sorrendben áthaladó görbe, tulajdonképpen elsőrendben folytonosan csatlakozó harmadfokú (kubikus) Hermite-görbék sorozata. Mivel az előző fejezetben már kimutattuk az Hermite- és a Bézier-görbe közötti kapcsolatot, ezért a cardinal spline megadhatjuk harmadfokú folytonosan kapcsolódó Bézier-görbék sorozataként is. Járjunk el az utóbbi módon!

8.7. ábra. 3 pontot interpoláló C folytonosan csatlakozó Bézier-görbék

Az Bézier szegmens kezdő és végpontja a szomszédos a  és  pontok. A görbe deriváltja egy közbülső  pontban párhuzamos a  egyenessel, azaz

Ne felejtsük el, hogy a harmadrendű Bézier-görbe négy kontrollpontjával, az Hermit-görbét pedig a kezdő- és a végpontjával, valamint a kezdő- és a végpontban húzott érintővel adjuk meg. Az Bézier-görbe szegmens kezdő és végpontja  Mivel a görbe érintője:

ezért minden kontrollpont minden szegmens esetén most már meghatározható. Az érintők meghatározásánál használhatunk egy tenziós értéket, amely az érintők nagyságát befolyásolja. Ha akkor a Catmul-Rom spline-t, ha akkor a kontrollpontokat összekötő poligont kapjuk meg.

8.8. ábra. tenziós érték hatása a görbe alakjára

Zárt görbe estén az érintő a kezdő és a végpontban is az

általános képlettel határozható meg.

8.9. ábra. Zárt görbék különböző értékeknél

Visual Studióban GDI+ segítségével lehetőségünk van cardinal spline előállítására DrawCurve metódussal. Mivel a GDI+ kihasználja, hogy a cardinal spline csatlakozó Bézier-görbékből áll, ezért szükség van egy Bézier-görbét előállító metódusra is. A DrawBezier négy kontroll pontra illeszt közelítő görbét, míg a DrawBeziers pedig folytonosan kapcsolódó Bézier-görbéket rajzol.

8.10. ábra. 7 pont esetén a DrawBeziers metódus futási eredménye