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(1−u)n−i,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+(1−u))n=∑i=0n(ni)ui(1−u)n−i=∑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)=(1−u)⋅Bin−i(u)+u⋅Bi−1n−i(u)

a:

B00(u)=1

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

(ni)=((n−1)i)+((n−1)(i−1))

Derivace

dBin(u)du=n(Bi−1n−i(u)−Bin−i(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.