Bézier-görbe

A Wikipédiából, a szabad enciklopédiából
(Bézier görbe szócikkből átirányítva)
Harmadfokú Bézier-görbe

A Bézier-görbe a számítógépes grafikában gyakran használt parametrikus görbe. A Bézier-görbe több dimenzióra való általánosítását Bézier-felületnek nevezik, ezeknek speciális esete a Bézier-háromszög.

A vektorgrafikában a Bézier-görbéket szabadon alakítható sima görbék modellezésére használják. A képszerkesztő programok, mint például az Inkscape, Adobe Photoshop vagy a GIMP a görbe vonalak rajzolásához egymáshoz kapcsolt Bézier-görbék sorozatát használják. Ezeket a görbéket nem korlátozza a raszterképek felbontása és interaktívan alakíthatóak. A Bézier-görbéket a számítógépes animációban a mozgások vezérlésének eszközeként is használják olyan programok, mint például az Adobe Flash, Adobe After Effects, Microsoft Expression Blend, Blender, Maya és az Autodesk 3D Studio Max.

A Bézier-görbéket az idő dimenziójában is használják, különösen az animációkban és az interfésztervezésben, azaz Bézier-görbéket lehet használni a képernyőn végbemenő mozgások sebességének az idő függvényében való megadására ahelyett, hogy fázisképenként egyszerűen néhány képpontnyi elmozdulást írnának elő.

A Bézier-görbék a matematikában jóval a számítógépek illetve számítógépes grafika megjelenése előtt ismertek voltak. Szergej Natanovics Bernstein orosz matematikus 1912-ben publikált cikkében a Hermite-polinomokkal kapcsolatos kutatásai során definiálja a később róla elnevezett Bernstein-polinomot. Ezt a x ∈ [0, 1] intervallumra korlátozott Bernstein-polinomot használta fel Pierre Bézier a Renault gyár mérnöke a számítógépes grafikai tervezésben.[1]

A Bézier-görbékről 1962-ben Pierre Bézier francia mérnök sok publikációja jelent meg, aki a gépkocsi-karosszériák tervezésénél használta azokat. A görbék számítógépes grafikai alkalmazásához szükséges számítógépes algoritmust 1959-ben Paul de Casteljau dolgozta ki. Ez a Bézier-görbék előállításának egy numerikusan stabil módszere: a róla elnevezett de Casteljau-algoritmus.

Alkalmazás[szerkesztés]

Számítógépes grafika[szerkesztés]

A Bézier-görbéket széles körben alkalmazzák a számítógépes grafikában sima görbe vonalak modellezésére. A görbék interaktív módszerrel is könnyen igazíthatók kontrollpontjaik mozgatásával. Affin transzformációjuk, mint például a transzláció és a rotáció, könnyen elvégezhető kontrollpontjaik megfelelő transzformációjával.

Általában másod- és harmadfokú Bézier-görbéket használnak; a magasabb fokszámú görbék előállítása túlságosan sok számítást igényel. A bonyolultabb alakú vonalak közelítő alakját alacsonyabb fokszámú Bézier-görbékből állítják össze. A csatlakozási pontokon a görbe simaságát az biztosítja, ha a közös pont és a hozzájuk közelebb eső kontrollpontok egy egyenesen fekszenek.

A Bézier-görbe raszterré alakításának legegyszerűbb módja az, ha sok közel fekvő pontját meghatározzák, majd ezeket közelítő egyenesekkel összekötik. Ennek a módszernek a hibája, hogy nem biztosítható, hogy a raszterkép mindenütt elegendően simának látszódjék, ha a pontok túlságosan távol helyezkedhetnek el egymástól. Emiatt sokszor túlságosan sok pontot generál az ilyen algoritmus az egyeneshez közel álló görbék esetében. Szokásos módszer a rekurzív felosztásos eljárás, melynek során az algoritmus ellenőrző pontokat vizsgál meg, hogy a közelítő egyeneshez eléggé közel fekszenek-e, és ha nem, a két pont között további pontot jelöl ki, majd megismétli az eljárást.

Animáció[szerkesztés]

Animációnál a Bézier-görbéket például mozgások leírására használják. A felhasználó kijelöli a kívánt útvonalat, az alkalmazás pedig előállítja az objektum mozgásának megfelelő képkockákat. A módszer térbeli mozgásokra is alkalmazható.

Betűk[szerkesztés]

A TrueType betűkészlet másodfokú Bézier-görbékből összeállított Bézier-splineokat használ a betűk megjelenítéséhez.

A korszerű képmegjelenítő rendszerek, mint a PostScript, Asymptote és a Metafont harmadfokú Bézier-görbékből álló Bézier-splineokkal rajzolja fel a betűket.

Különböző fokszámú görbék[szerkesztés]

Lineáris Bézier-görbe[szerkesztés]

Adott a P0 és P1 pont, a lineáris Bézier-görbe egyszerűen a két pontot összekötő egyenes szakasz. A görbét a

függvény írja le, és ekvivalens a lineáris interpolációval.

Másodfokú Bézier-görbe[szerkesztés]

A másodfokú Bézier-görbét három pont: a P0, P1, és P2 határoz meg, és a B(t) függvény írja le:

A görbe a P0 ponttól indul a P1 pont irányába, majd elhajlik, és a P2 pontban végződik. Más szavakkal mind a P0, mind a P2 pont érintője átmegy a P1 ponton. Ez közvetlenül látható a Bézier-görbét leíró függvény deriváltjából:

A másodfokú Bézier-görbe egyben egy parabolaív is.

Harmadfokú Bézier-görbe[szerkesztés]

A harmadfokú Bézier-görbét (egy síkban fekvő vagy térbeli elhelyezkedésű) négy pont: P0, P1, P2 és P3 definiál. A görbe a P0 pontból indul a P1 irányába és a P3 pontba érkezik a P2 irányából. Általában nem halad át a P1 vagy P2 ponton, ezek csak az irányokról adnak információt. A P0 és P1 pont közötti távolság azt határozza meg, hogy „milyen hosszan” halad a P2 irányába, mielőtt a P3 pont felé fordul. A görbe parametrikus egyenlete:

A P1 és P2 bizonyos elhelyezkedése önmagát metsző vagy csúcsos görbét eredményezhet.

Általánosítás[szerkesztés]

Az n-edfokú Bézier-görbe a következőképpen általánosítható. Legyen n+1 pont: P0, P1,..., Pn, a Bézier-görbe egyenlete:

ahol a binomiális együttható.

Például n = 5 esetre:

Ez az összefüggés az alábbi rekurzív formulával fejezhető ki: Jelölje a P0, P1, ..., Pn pontokkal meghatározott Bézier-görbét. Ezzel

Más szavakkal az n-edfokú Bézier-görbe két (n – 1)-edfokú Bézier-görbe közötti lineáris interpoláció.

Negyedfokú Bernstein-polinomok a [0, 1] intervallumon.

Tulajdonságai[szerkesztés]

A parametrikus görbékhez néhány fogalom kapcsolódik. A Bézier-görbe egyenlete

ahol a

polinomok az úgynevezett n-edfokú Bernstein polinomok, ahol t0 = 1 és (1 –; t)0 = 1.

Az binomiális együttható alternatív jelölése

A Pi pontokat a Bézier-görbéhez tartozó kontrollpontoknak hívják. A görbéhez tartozó keret a kontrollpontok egyenesekkel való összekötésével kialakított tört vonalsorozat.

  • A görbe a P0 pontnál kezdődik és a Pn pontnál ér véget. Ezt a módszert végpont interpolációnak hívják.
  • A görbe akkor és csakis akkor egyenes vonal, ha a kontrollpontok egy egyenesen fekszenek.
  • A görbe kezdőpontjának (végpontjának) érintője a keret első (utolsó) szakasza.
  • A görbét bármely pontjánál két részgörbére lehet vágni, mindkettő szintén Bézier-görbe.
  • Néhány egyszerűnek látszó görbe (például a kör) nem helyettesíthető pontosan Bézier-görbével vagy szakaszaival, bár négy harmadfokú Bézier-görbével közelített kör a pontos alakzattól mindössze egy ezredrésznyire tér el a kontrollpontok megfelelő felvételével.
  • Egy Bézier-görbéhez rajzolt egyenközű („párhuzamos”) görbét néhány kivételtől eltekintve nem lehet Bézier-görbével pontosan leírni.

Bézier-görbék szerkesztése[szerkesztés]

Animation of a linear Bézier curve, t in [0,1]
Lineáris Bézier-görbe animációja, 0 ≤ t ≤1

Lineáris görbe[szerkesztés]

A t paraméter a lineáris Bézier-görbe esetén szemléletesen a B(t) távolságát jelenti a P0 ponttól a P1 irányában. Például t=0,25 esetén a B(t) a P0 ponttól P1 pontig terjedő távolság negyed részét tette meg. A B(t) egyenest ír le a P0 pont és a P1 pont között.

Másodfokú görbe[szerkesztés]

A másodfokú Bézier-görbéknél a Q0 és Q1 segédpontot a t paraméter függvényében így lehet szerkeszteni: (t 0 és 1 között változik)

  • A Q0 pont helyzete P0 ponttól P1 pontig változik, miközben lineáris Bézier-görbét ír le.
  • A Q1 pont helyzete P1 ponttól P2 pontig változik, miközben lineáris Bézier-görbét ír le.
  • A B(t) pont helyzete Q0 ponttól Q1 pontig változik, miközben másodfokú Bézier-görbét ír le.
Construction of a quadratic Bézier curve Animation of a quadratic Bézier curve, t in [0,1]
Másodfokú Bézier-görbe szerkesztése Másodfokú Bézier-görbe animációja, 0 ≤ t ≤ 1

Magasabb fokszámú görbék[szerkesztés]

Magasabb fokszámú görbékhez több közbenső pont szükséges. Harmadfokú görbéhez Q0, Q1, és Q2 közbenső pontot lehet szerkeszteni, ezek lineáris Bézier-görbéket határoznak meg, az R0 és R1 pont pedig másodfokú Bézier-görbét ír le:

Construction of a cubic Bézier curve Animation of a cubic Bézier curve, t in [0,1]
Harmadfokú Bézier-görbe szerkesztése Harmadfokú Bézier-görbe animációja, 0 ≤ t ≤ 1

Negyedfokú görbéhez a Q0, Q1, Q2 és Q3 pont lineáris, az R0, R1 és R2 pont másodfokú, az S0 és S1 pont pedig harmadfokú Bézier-görbét határoz meg:

Construction of a quartic Bézier curve Animation of a quartic Bézier curve, t in [0,1]
Negyedfokú Bézier-görbe szerkesztése Negyedfokú Bézier-görbe animációja, 0 ≤ t ≤ 1

Fokszámemelés[szerkesztés]

Az n-edfokú Bézier-görbét ugyanolyan alakú n + 1 görbévé lehet alakítani. Ez akkor hasznos, ha az adott szoftver csak bizonyos fokszámú Bézier-görbéket támogat. Például rajzolható negyedfokú Bézier-görbe a Cairo programmal is, holott az csak harmadfokú Bézier-görbét használ.

A fokszám emeléshez az egyenletből lehet kiindulni. Minden tagot megszorozva (1 – t) vagy t szorzóval a fokszám eggyel emelkedik. Az alábbi példa a másodfokú görbe harmadfokúvá alakítását mutatja be:

Tetszőleges n fokszámra az alábbiak írhatók:

A P1 súlyának hatása a racionális Bézier-görbe lefutására

ahol és tetszőleges.

Az új kontrollpontok:[2]

Racionális Bézier-görbék[szerkesztés]

Kúpszeletszakaszok pontosan megjeleníthetők racionális Bézier-görbékkel

A racionális Bézier-görbék további súlyokat adnak a függvényekhez abból a célból, hogy pontosabban közelítsék a kívánt alakot. A számláló súlyozott Bernstein-formájú Bézier-görbe, a nevező pedig Bernstein-polinomok súlyozott összege. A racionális Bézier-görbék többek között kúpszelet szakaszok pontos megjelenítésére használhatók[3]

Legyen n + 1 darab Pi kontrollpont, a racionális Bézier-görbe egyenlete:

vagy egyszerűen

Tudnivalók:

  • Bármilyen NURBS görbe hiba nélkül megadható racionális Bézier-görbék seregével is, amik a végpontjaiknál csatlakoznak. (A bizonyításhoz a NURBS csomópontvektorában minden csomópont multiplicitását k-ra kell növelni csomópontbeszúrásokkal, ha k-adfokú a NURBS, és így végül leolvashatóak a k-adfokú Bézier-görbék, amik a kibővített csomópontú NURBS szegmensei lesznek.)
  • Ennél több is elmondható: minden k dimenziós C(t) görbe, ami explicit felírható legfeljebb n-edfokú polinomokkal, felírható n-edfokú Bézier- és B-Spline-görbeként is, és minden k dimenziós C(t) görbe, ami felírható legfeljebb n-edfokú polinomok hányadosaival, felírható n-edfokú racionális Bézier-görbeként és NURBS-ként is. Helyesebb tehát a Béziert és a NURBS-ot reprezentációnak hívni, hiszen egy adott görbét több különböző módon is reprezentálhatunk, és kiválaszthatjuk a konkrét alkalmazás szempontjából számunkra legelőnyösebb, legkényelmesebb reprezentációt.
  • Racionális Bézier-görbék eltolási görbéje sem adható meg általában hiba nélkül racionális Bézier-görbékkel. Az ok leolvasható az eltolási görbe képletéből. Ha az eltolás értéke d, akkor:
    A legnagyobb baj a hányadosban szereplő gyökjellel van, ugyanis ha a gyökvonás nem végezhető el a deriváltak négyzetösszeg-polinomján szimbolikusan, akkor a helyébe írható Taylor-polinom végtelen számú nemnulla tagot fog tartalmazni. Ezt csak egy végtelen fokszámú racionális Bézier-görbével lehetne hibátlanul megadni. Jó megoldás nincs; ilyenkor az eltolási görbe jó közelítéshez vagy egy lényegesen magasabb fokszámú polinom kell (ami általában nem praktikus), vagy a kontrollpontok számát kell az elvárt hiba függvényében exponenciálisan megnövelni.

Jegyzetek[szerkesztés]

  1. http://www.ams.org/samplings/feature-column/fcarc-bezier#2 From Bézier to Bernstein
  2. Gerald Farin: Curves and surfaces for computer-aided geometric design. Elsevier Science & Technology Books 1997, ISBN 978-0-12-249054-5, 4. kiadás
  3. Neil Dodgson: Some Mathematical Elements of Graphics: Rational B-splines

Források[szerkesztés]

Ez a szócikk részben vagy egészben a Bézier curve című angol Wikipédia-szócikk fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel.

Külső hivatkozások[szerkesztés]

Commons
A Wikimédia Commons tartalmaz Bézier-görbe témájú médiaállományokat.