Bézierova křivka

Tyto Bézierovy křivky jsou křivky polynom parametrický design, vyvinutý pro části těla automobilů . Navrhl je Paul de Casteljau v roce 1959 pro Citroën a samostatně Pierre Bézier v roce 1962 pro Renault (práce Paula de Casteljau byla důvěrná, jméno Bézier přešlo na potomky). Mají mnoho aplikací v syntéze obrázků a vykreslování písem . Porodili mnoho dalších matematických objektů .

Před Bézierem existovaly korekční křivky zvané splajny , ale vadou bylo změnit jejich vzhled během rotace souřadnic, což je v CADu zneužilo . Bézierova začal z geometrického přístup založený na linearitu z euklidovském prostoru a již existující teorie barycenter  : v případě, že definice je čistě geometrické, žádné referenční bod zasahuje od konstrukce je nezávislá na tom, který nebyl není případ drážek ( splajny splňující Bézierovy principy budou následně nazývány B-splajny ).

Obecná teorie

Bézierova křivka pro kontrolní body n +1 ( P 0 , ..., P n ) je množina bodů definovaná parametrickou reprezentací , pro t ∈ [0; 1] a kde Bn
i
jsou Bernsteinovy ​​polynomy .

Posloupnost bodů P 0 , ..., P n tvoří „  Bézierův kontrolní polygon “.

Příklady

Potom přidáme kontrolní body n +1 pro každý koeficient polynomu:

s t ∈ [0; 1] . Jedná se tedy o Bézierovu křivku stupně 2.

Potom přidáme kontrolní body n +1 pro každý koeficient polynomu a získáme,

s t ∈ [0; 1] . Jedná se tedy o Bézierovu křivku stupně 3.

Poznámka Protože Bernsteinovy ​​polynomy tvoří rozdělení jednoty, máme . Součet koeficientů je tedy nenulový pro všechna t , proto jsou správně definovány všechny body P ( t ) křivky.

Vlastnosti

Kubické Bézierovy křivky

Čtyři body P 0 , P 1 , P 2 a P 3 definují kubickou Bézierovu křivku. Křivka je nakreslena počínaje od bodu P 0 , směřujícího k P 1 a přicházejícího do bodu P 3 ve směru P 2 - P 3 . Křivka obecně neprochází ani P 1, ani P 2  : tyto body poskytují pouze informace o směru. Vzdálenost mezi P 0 a P 1 určuje rychlost pohybu ve směru P 1 před otočením na P 3 .

Bézierova křivka.svg

Z výše uvedeného je parametrický tvar křivky zapsán jako afinní kombinace kontrolních bodů

pro 0 ≤ t ≤ 1 .
Můžeme zde jasně vidět vlastnost rozdělení jednotky Bernsteinových polynomů: podle Newtonova binomického vzorce řádu 3,

Součet koeficientů spojených s kontrolními body má hodnotu 1.

Bézierovy křivky jsou pro zpracování obrazu zajímavé ze dvou hlavních důvodů:

nebo ekvivalent

, ,

Pozor  : na rozdíl od použití v matematice jsou zde body (přesněji vektory) a ne komponenty vektoru. Kromě toho ve druhé formulaci musí být uvedené operace provedeny v pořadí, shora dolů, zleva doprava a opakovat operace, i když se objeví několikrát shodně, to s novými hodnotami kvůli předchozímu operace. (matematicky je to jako rozbití matice 4 × 4 jako součin 6 matic 4 × 4 se dvěma jinde 1 , 2 ½ a 0 všude jinde).

Přesněji můžeme křivku P ( t ) rozložit na dvě křivky P L a P R, jejichž kontrolní body jsou příslušně ( L 1 , L 2 , L 3 , L 4 ) a ( R 1 , R 2 , R 3 , R 4 ) s

a

Bezier rec.png

Během tohoto rekurzivního volání vykreslení P ( t ) , protože Bézierova křivka prochází prvním a posledním kontrolním bodem, je známa poloha konců každého kusu ( L 1 , L 4 = R 1 a R 4 ) . Když je takový graf implementován, může být kritérium pro zastavení opakování spojeno se vzdáleností mezi dílčí křivkou, která má být vynesena, a segmentem [ L 1 , L 4 ] .

Poznámka  : Plovoucí aritmetika reálného čísla, která je k dispozici přímo na moderních procesorech, se stala mnohem rychlejší než alokace paměti potřebná pro rekurzi. Metoda, která poskytuje pixely křivky, které se mají vykreslit, aniž by postupovala krok za krokem, navíc neumožňuje vyhlazování . Rekurze proto již není správnou metodou k vykreslení Bézierových křivek; výhodně se použije metoda, která prochází pixely krok za krokem, zatímco v každém kroku vypočítává „tečnou vadu“, kterou lze použít pro vyhlazování .

Výpočet bodu Bézierovy křivky lze také provést pomocí Hornerovy metody nejprve výpočtem vektorových koeficientů a i polynomu:

Příklady

Lineární Bézierova křivka (stupně 1) Kontrolní body P 0 a P 1 definují Bézierovu křivku danou rovnicí: Jedná se tedy o segment [P0, P1]. Kvadratická Bézierova křivka (stupně 2) Kvadratická Bézierova křivka je křivka B ( t ) definovaná kontrolními body P 0 , P 1 a P 2 . Tyto kvadratické křivky jsou dnes široce používány (například v definicích glyfů písem ve formátu TrueType a písem OpenType v jejich odrůdě kompatibilní s TrueType). Pokud však umožňují zajistit kontinuitu v tečnosti dvou spojených křivek, neumožňují (obecně) zachovat kontinuitu zakřivení v bodech propojení. K překonání této nevýhody je pak nutné zvýšit počet vzájemně propojených oblouků, aby se snížily zlomy zakřivení mezi každým z nich, což omezuje jejich hodnotu a může vést ke složitějšímu návrhu křivek (s více vrcholy a kontrolou body do polohy). Kubická Bézierova křivka (stupně 3) Kubická Bézierova křivka je křivka B ( t ) definovaná kontrolními body P 0 , P 1 , P 2 a P 3 . Jeho parametrická forma je: Toto jsou Bézierovy křivky nejpoužívanější v grafickém designu (protože umožňují zajistit nejen kontinuitu v tečnosti dvou spojených křivek, ale také kontinuitu jejich zakřivení, aniž by bylo nutné umisťovat mnoho vrcholů a bodů. Ovládání). Používají se například v jazyce PostScript a při definici glyfů písem typu „typ 1“, stejně jako u písem OpenType v jejich rozmanitosti CFF ( Compact Font Format ), která používá stejné definice vrcholů a řídicích bodů. Bézierova křivka stupně větší než 3 Jsou zřídka používány. Raději se omezujeme na použití kubických křivek, které jsou spojeny, aby se zachovala výhoda kontinuity zakřivení. K tomu je nutné a dostačující, aby poslední bod křivky byl prvním z ostatních. Takto se získá spojitá křivka. Například pro křivku definovanou body A , B , C , D , E , F a G použijeme kubické křivky definované A , B , C a D a D , E , F a G a je tak zajištěna kontinuita. Abychom měli křivku C 1 v D , potřebujeme [ C , D ] = [ D , E ], a pokud navíc chceme, aby to byla C 2 v D , pak [ B , D ] = [ D , F ], a totéž pro následné deriváty. Tato transformace však ztrácí kontinuitu C 3 v D (a jediný způsob, jak to překonat, je vložit další kontrolní body (aby se zvýšil počet kubických oblouků, aby se dosáhlo lepší aproximace a alespoň aby ​​se zajistila kontinuita C 3 v počáteční body, ale ne kolem přidaných kontrolních bodů). Zájem Bézierových křivek stupně 4 a více je však dnes omezenější z důvodu pokroku a integrace podpory nejednotných B-splajnů v moderních grafických knihovnách, zejména NURBS , na racionální koeficienty, ekvivalentní uniformní B-splajny (ale s celou váhou v průběhu nemusí být nutně aritmetické, jako je tomu u Bézierových křivek), tyto B-splajny se však počítají nejprve v projektivním prostoru s homogenními souřadnicemi , což umožňuje zachovat všechny výhody B-splajnů stupně 3 nebo vyššího, a to i v případě kónických (nelineárních) křivek, které nelze přesně reprezentovat jinými Bézierovými křivkami než aproximací velkým počtem vrcholů a řídicích bodů.

Aplikace

Syntéza obrázků

Animace

Vykreslování písem

Hudební rytina

Racionální Bézierova křivka

Abychom velmi přesně popsali křivky jako kruhy (i když v praxi jsou aproximace pomocí Bézierových křivek dostatečné), jsou zapotřebí další stupně volnosti.

Myšlenkou je přidání závaží do kontrolních bodů (to jsou ). Jmenovatel je zde pouze k normalizaci součtu přídavných vah, takže křivka je definována jako konvexní kombinace kontrolních bodů.

Racionální Bézierova křivka má následující obecnou podobu:

Bibliografie

Poznámky a odkazy

  1. (in) „The curve commands“ SVG 1.1 (druhé vydání) - 16. srpna 2011 ( neoficiální francouzský překlad )

Podívejte se také

Související články

externí odkazy