Bézierova křivka

Kategorie: Nezařazeno (celkem: 23181 referátů a seminárek)

Informace o referátu:

Příbuzná témata



Bézierova křivka

Příklad užití Bézierovy křivky
Příklad užití Bézierovy křivky

Bézierova křivka, nesprávným pravopisem Beziérova křivka, pojmenovaná po francouzském inženýru Pierru Bézierovi, je jednou z mnoha parametrických křivek. Umožňuje interaktivní vytváření a modifikaci jejího tvaru. Pomocí Bézierovy křivky je také možno reprezentovat i interpolační křivky (existují například algoritmy na převod mezi interpolačními spline kubikami a B-spline kubikami resp. Bézier kubikami).

Obsah

Racionální Bézierova křivka

Příklad užití Racionální Bézierovy křivky
Příklad užití Racionální Bézierovy křivky
Vliv váhy na tvar racionální Bézierovy křivky.
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řivky bez změny polohy bodů řídicího polygonu.

Definice

Skládání Bézierových křivek
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í polygon, je pro t in < 0,1 > definována jako

C(t)= sum_{i=0}^n B_{i,n}(t) P_i ,

přičemž Bi,n(t) je i-tý Bernsteinův polynom n-tého stupně:

B_{i,n}(t)= inom n i t^i (1-t)^{n-i}

Bernsteinovy polynomy tvoří bázi vektorového prostoru polynomu a splňují rekurentní vzorec:

B_{i,n}(t) = (1-t) cdot B_{i,n-1}(t) + t cdot B_{i-1,n-1}(t),

navíc B_{i,n} = 0  forall  (i < 0) or (i > n), dále B0,0 = 1. Je tak umožněn stabilní číselný rekurzivní výpočet hodnoty Bézierovy křivky pomocí Casteljauova algoritmu:

egin{align}C_i^0(t) & = P_i \
C_i^j(t) & = (1-t)C_i^{j-1}(t) +  tC_{i+1}^{j-1}(t) egin{cases} j=1,...,n \
                                                                   i=0,...,n-j. end{cases}end{align}

Vlastnosti

  • Křivka prochází přesně koncovými body P0 a Pn:
     egin{align}
    C(0)  & =  sum_{i=0}^n inom n i 0^i(1-0)^{n-i} P_i = P_0 \
    C(1)  & =  P_n
end{align}
  • Tečny v koncových bodech jsou:
    C'(0) =n cdot (P_1 - P_0)
    C'(1) = n cdot (P_n - P_{n-1})
  • Jedna přímka protíná Bézierovu křivku nanejvýše tolikrát, kolikrát jí protíná její kontrolní 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čkou (výhoda oproti interpolaci polynomu).
Napojení dvou kubických křivek (vlevo) a kubické a kvadratické křivky (vpravo).
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ézierovu plochu. Bézierova plocha (n,m)-tého řádu je plocha ve formě
    C(u, v) = sum_{i=0}^n sum_{j=0}^m P_{i,j} B_{i,n}(u) B_{j,m}(v)
s kontrolními body Pi,j a s Bersteinovým polynomem Bi,n(u) a Bj,m(v). 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é grafice se Bézierovy křivky používají k definování křivek a ploch v rámci CAD, při vektorových grafikách (např. SVG) a k popsání písma (např. PostScript Type 1 a CFF-OpenType).

Příklady

Lineární Bézierovy křivky (n = 1)

Lineární Bézierova křivka.
Lineární Bézierova křivka.

Dva kontrolní body P0 a P1 určují lineární Bézierovu křivku, která odpovídá úsečce mezi těmito dvěma body.

Křivka je specifikována jako:

egin{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}.

Kvadratické Bézierovy křivky (n = 2)

Kvadratická Bézierova křivka.
Kvadratická Bézierova křivka.

Kvadratická Bézierova křivka je dráha, která je popsána funkcí C(t) pro body P0, P1 a P2:

egin{align}
      C(t)  & = sum_{i=0}^2 inom 2 i t^i (1-t)^{2-i} P_i \
            & = (1 - t)^{2}P_0 + 2t(1 - t)P_1 + t^{2}P_2 mbox{ , } t in <0,1>
end{align}.

Kubické Bézierovy křivky (n = 3)

Kubická Bézierova křivka.
Kubická Bézierova křivka.

Kubické Bézierovy křivky mají velký význam pro praxi, protože jsou skládány z menších dílů, kde můžeme jednoduše definovat spojitost v řídících (koncových) bodech jednotlivých segmentů. Další výhodou je omezený vliv změny polohy jednoho bodu na tvar celé křivky. Pro rasterizaci Beziérovy křivky se většinou používá adaptivní algoritmus de Casteljau.

Čtyři body (P0, P1, P2 a P3) určují kubickou Bézierovu křivku. Křivka začíná v bodě P0 a pokračuje směrem P1 a dále směrem na P2 a P3. Obecně křivka skrz body P1 a P2 neprochází – tyto body určují pouze tvar k5ivky, přičemž P1 určuje směr, kterým křivka z bodu P0 vychází. P2 určuje směr, kterým se křivka přibližuje k bodu P3. Vzdálenost mezi body P0, P1 a mezi body P2, P3 určuje „jak dlouho“ se křivka pohybuje ve směru kontrolního bodu P1 a P2, před tím než se stočí ve směru bodu P3.

egin{align} 
   C(t)  & =  sum_{i=0}^3 inom 3 i t^i (1-t)^{3-i} P_i \
          & =  (1-t)^3P_0+3t(1-t)^2P_1+3t^2(1-t)P_2+t^3P_3 \
          & =  (-P_0 + 3P_1 -3P_2 + P_3) t^3 + (3P_0 - 6P_1 + 3P_2) t^2 + (-3P_0 + 3P_1) t + P_0 \
          & =  underbrace{egin{pmatrix} t^3 &  t^2 &  t &  1 end{pmatrix}}_{radkovy  vektor} 
                underbrace{egin{pmatrix} -1 & 3 & -3 & 1 \
                                  3 & -6& 3 & 0 \
                                 -3 & 3 & 0 & 0 \
                                  1 & 0 & 0 & 0 end{pmatrix}}_{bazova matice} 
                underbrace{egin{pmatrix} P_0 \ P_1 \ P_2 \ P_3 end{pmatrix}}_{sloupcovy vektor} quad, t in <0,1>
end{align}.

Pro každý parametr t Bézierovy křivky může být určen tečný vektor odvozením z výchozí rovnosti. Přitom je délka vektoru měřítkem pro rychlost „postupu“ na křivce.

egin{align}
dot C(t)  &=  (-P_0 + 3P_1 -3P_2 + P_3) 3t^2 + (3P_0 - 6P_1 + 3P_2) 2t + (-3P_0 + 3P_1) \
            &=  egin{pmatrix} 3t^2 & 2t &  1 end{pmatrix}
                 egin{pmatrix} -1 &  3 & -3 & 1 \
                                  3 & -6 &  3 & 0 \
                                 -3 &  3 &  0 & 0 end{pmatrix}
                 egin{pmatrix} P_0 \ P_1 \ P_2 \ P_3 end{pmatrix} quad, t in <0,1>
end{align}

Související články

Projekt Wikiknihy nabízí knihu na téma:
logo Wikimedia Commons
Wikimedia Commons nabízí obrázky, zvuky či videa k tématu

Tento článek je zčásti nebo zcela založen na překladu článku Bézierkurve na německé Wikipedii.



Nový příspěvek


Ochrana proti spamu. Kolik je 2x4?



Na-mobil.cz

Spřátelené weby

Přidat stránku k oblíbeným

Nejnovější v diskusi

Diskusní fórum »

TIP: Chcete zkrátit dlouho chvíli sobě nebo blízkému?
Klikněte na Puzzle-prodej.cz a vyberte si z 5000 motivů skladem!
TIP: Hračky a hry za dobré ceny?
Klikněte na Hračky obchod.cz a vyberte si z tisícovky hraček skladem!