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

Smazaný obsah Přidaný obsah
m Editace uživatele „195.113.146.195“ (diskuse) vráceny do předchozího stavu, jehož autorem je „Sumivec
Řádek 1:
[[Soubor:Bezierova_krivka.png|thumb|Příklad užití Bézierovy křivky]]
'''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 křivky 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 ==
Řádek 22 ⟶ 27:
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>
:s kontrolními body ''P''<sub>i,j</sub> a s [[Bersteinův polynom|Bersteinovým polynomem]] ''B''<sub>i,n(u)</sub> a ''B''<sub>j,m(v)</sub>. Bézierova plocha může být popsána také dvěma na sebe kolmými Bézierovými křivkami.
 
== Použití ==
 
V [[počítačová grafika|počítačové grafice]] se Bézierovy křivky používají k definování křivek a ploch v rámci [[Computer aided design|CAD]], při vektorových grafikách (např. [[SVG]]) a k popsání písma (např. [[PostScript|PostScript Type 1]] a [[OpenType|CFF-OpenType]]).
 
== Příklady ==
 
===Lineární Bézierovy křivky (n = 1)===
[[Image:Bezier linear anim.gif|thumb|Lineární Bézierova křivka.]]
 
Dva [[kontrolní bod]]y ''P''<sub>0</sub> a ''P''<sub>1</sub> určují lineární Bézierovu křivku, která odpovídá [[úsečka|úsečce]] mezi těmito dvěma body.
 
Křivka je specifikována jako:
:<math>\begin{align}
C(t) \ & =\ \sum_{i=0}^1 t^i (1-t)^{1-i} P_i \\
\ & =\ (1-t)P_0 + t P_1 \mbox{ , } t \in <0,1>
\end{align}</math>.
 
===Kvadratické Bézierovy křivky (n = 2)===