Bézierova křivka: Porovnání verzí

Smazaný obsah Přidaný obsah
Bez shrnutí editace
Verze 10319545 uživatele 84.242.81.101 (diskuse) zrušena
Řádek 1:
[[Soubor:Bezierova_krivka.svg|thumb|Příklad užití Bézierovy křivky]]
HOUHOUHOU
'''Bézierova křivka''', nesprávným pravopisem ''Beziérova křivka'', pojmenovaná po [[Francie|francouzském]] inženýru [[Pierre Bézier|Pierru Bézierovi]], je jednou z mnoha parametrických [[křivka|křivek]]. Umožňuje interaktivní vytváření a modifikaci jejího tvaru. Pomocí Bézierovy křivky je také možno reprezentovat i [[interpolace|interpolační]] křivky (existují například [[algoritmus|algoritmy]] na převod mezi interpolačními [[spline křivka|spline]] kubikami a [[B-spline křivka|B-spline]] kubikami resp. Bézier kubikami).
 
== Racionální Bézierova křivka ==
[[Soubor:Racionalni_Bezierova_krivka.png|thumb|Příklad užití Racionální Bézierovy křivky]]
[[Soubor:Curves_rbezier_ratcoef.gif|thumb|Vliv váhy na tvar racionální Bézierovy křivky.]]
Jak napovídá název, jedná se o zobecnění Bézierových křivek. Pokud chce uživatel změnit tvar Bézierovy křivky, tak musí vybrat příslušný řídící bod a změnit jeho polohu. To nemusí být vždy jednoduché a vyžadujete jistou zkušenost. Tento problém se navíc komplikuje, pracujeme-li v třírozměrném prostoru. Přirozenou se potom jeví metoda, která každému bodu řídicího polygonu přiřadí reálné číslo („váha“), jehož změnou se mění tvar křivky. Největším přínosem racionálních Bézierových křivek je možnost manipulace s tvarem [[křivka|křivky]] bez změny polohy bodů řídicího [[mnohoúhelník|polygonu]].
 
== Definice ==
[[Soubor:SKladaniBeziera-Polygon.JPG|thumb|Skládání Bézierových křivek]]
 
Bézierova křivka ''n''-tého stupně pro ''n+1'' zadaných kontrolních bodů, které tvoří tzv. ''řídící [[mnohoúhelník|polygon]]'', je pro <math>t \in < 0,1 ></math> definována jako
 
:<math>C(t)= \sum_{i=0}^n B_{i,n}(t) P_i </math>,
 
přičemž <math>B_{i,n}(t)</math> je ''i''-tý [[Bernsteinův polynom]] ''n''-tého stupně:
 
:<math>B_{i,n}(t)= \binom n i t^i (1-t)^{n-i}</math>
 
[[Bernsteinův polynom|Bernsteinovy polynomy]] tvoří bázi [[vektorový prostor|vektorového prostoru]] [[polynom]]u a splňují [[rekurentní vzorec]]:
 
<math>B_{i,n}(t) = (1-t) \cdot B_{i,n-1}(t) + t \cdot B_{i-1,n-1}(t)</math>,
 
navíc <math>B_{i,n} = 0 \ \forall \ (i < 0) \or (i > n)</math>, dále <math>B_{0,0}=1</math>. Je tak umožněn stabilní číselný rekurzivní výpočet hodnoty Bézierovy křivky pomocí [[algoritmus de Casteljau|Casteljauova algoritmu]]:
 
:<math>\begin{align}C_i^0(t) & = P_i \\
C_i^j(t) & = (1-t)C_i^{j-1}(t) + tC_{i+1}^{j-1}(t) \begin{cases} j=1,...,n \\
i=0,...,n-j. \end{cases}\end{align}</math>
 
== Vlastnosti ==
 
* Křivka se nachází uvnitř [[konvexní]] obálky svého řídícího [[mnohoúhelník]]u. Z toho plyne, že [[Bernsteinův polynom|Bernsteinovy polynomy]] stupně ''n'' jsou rozkladem jedné:
*: <math> 1 = \sum_{i=0}^n B_{i,n}(t) \ \ \ t \in <0,1></math>
 
* Křivka prochází přesně koncovými body ''P''<sub>0</sub> a ''P''<sub>n</sub>:
*: <math> \begin{align}
C(0) \ & = \ \sum_{i=0}^n \binom n i 0^i(1-0)^{n-i} P_i = P_0 \\
C(1) \ & = \ P_n
\end{align}</math>
 
* [[Tečna|Tečny]] v koncových bodech jsou:
*: <math>C'(0) =n \cdot (P_1 - P_0)</math>
*: <math>C'(1) = n \cdot (P_n - P_{n-1})</math>
 
* Jedna přímka protíná Bézierovu křivku nanejvýše tolikrát, kolikrát jí protíná její kontrolní [[mnohoúhelník|polygon]] (křivka má omezené kolísání).
 
* Bézierova křivka je invariantní vůči lineární transformaci (posunutí, změna měřítka, otáčení, atd.), což znamená, že transformovaný řídící polygon dá stejný výsledek jako když transformujeme každý bod z vygenerované křivky. Obecná Bézierova křivka, na rozdíl od racionální Bézierovy nebo [[NURBS]] křivky, není invariantní k perspektivnímu promítání.
 
* Leží-li všechny kontrolní body na jedné přímce, pak se Bézierova křivka stává [[úsečka|úsečkou]] (výhoda oproti interpolaci polynomu).
 
[[Soubor:SkladaniiBeziera.JPG|thumb|Napojení dvou kubických křivek (vlevo) a kubické a kvadratické křivky (vpravo).]]
* Vliv kontrolního bodu na křivku je globální. Tzn. posune-li se jeden bod, změní se celá křivka. Proto se v praxi nejčastěji používají tzv. [[Splines]], složené pracovní křivky daného stupně, které do sebe kontinuálně přecházejí.
 
* Jako zobecněnou formu Bézierovy křivky lze použít [[Bézierova plocha|Bézierovu plochu]]. Bézierova plocha (''n,m'')-tého řádu je plocha ve formě
*: <math>C(u, v) = \sum_{i=0}^n \sum_{j=0}^m P_{i,j} B_{i,n}(u) B_{j,m}(v)</math>