Geometrie/Bézierova křivka

Z testwiki
Skočit na navigaci Skočit na vyhledávání

Bézierova křivka, nesprávným pravopisem Beziérova křivka, je další metodou vytváření křivek. Tato metoda umožňuje interaktivní vytváření a modifikaci křivek. Pomocí této metody můžete rovněž datově 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).

Vyjádření

Bézierova křivka stupně n je určena rovnicí:

P(u)=i=0nPiBin(u),

kde:

u<0,1>,

Pi jsou polohové vektory vrcholů řídícího polynomu (tzv. Bézierovy body)

Bin(u) jsou tzv. Bernsteinovy polynomy n-tého stupně,

pro které platí:

Bin(u)=(ni)ui(1u)ni,i=0,1,...n

Vlastnosti

Nezáporná hodnota

Bin(u)0 pro všechny hodnoty i=0,...,n a pro všechna u<0,1>. Tato vlastnost plyne z toho, že pro u<0,1> jsou všechny součinitele v definici Bézierových polynomů nezáporné.

Jednotkový součet

i=0nBin(u)=1 pro všechny hodnoty u<0,1>

Plyne přímo z binomické věty. Platí totiž:

1=(u+(1u))n=i=0n(ni)ui(1u)ni=i=0nBin(u)

Koncové podmínky

Bon(0)=Bnn(1)=1

Maximum

Bin(u) nabývá právě jednoho maxima na u<0,1>, a to pro u=in

Symetrie

Pro libovolné n je množina polynomů Bin(u) symetrická podle u=12

Rekurentní vztah

Bin(u)=(1u)Bini(u)+uBi1ni(u)

a:

B00(u)=1

Rekurentní vztah vyplývá ze vztahu pro kombinační čísla:

(ni)=((n1)i)+((n1)(i1))

Derivace

dBin(u)du=n(Bi1ni(u)Bini(u))

Algoritmizace

Factorial(int a)

Pomocná metoda pro výpočet faktoriálu pro kombinační číslo.

Šablona:Kód

Combin(int a, int b)

Pomocná metoda pro výpočet kombinačního čísla pro výpočet bodů Bernsteinova polynomu.

Šablona:Kód

BernsteinPolynom(int k,int i,double t)

Metoda pro výpočet bodů polynomu.

Šablona:Kód

Vector GetPoint(double t)

Přetěžovaná metoda třídy Curve. V zadaném parametru vrátí polohový vektor bodu na křivce.

Šablona:Kód

RichPoint CreateRichPoint()

Přetěžovaná metoda třídy Curve. Vytvoření řídícího bodu pro křivku. Oproti rodiči má navíc rozšíření o váhový koeficient.

Šablona:Kód

Externí odkazy

Autoři

Tento text vypracovali studenti Univerzity Palackého v Olomouci katedry Matematické informatiky jako zápočtový úkol do předmětu Počítačová geometrie.