Pre zadanych n+1 bodov  mate za ulohu vykreslit Bezierovu krivku, ktorej riadiacimi vrcholmi su body .

Na vykreslenie sa pouziva aproximacia krivky lomenou ciarou, existuje viacero algoritmov ako tuto aproximaciu ziskat:

 

1. Priamy vypocet z analytickeho vyjadrenia pre reprezentantov definicneho oboru:

 

Def. obor je <0,1>, zoberme jeho reprezentantov (j/m), kde j = 0,1,…,m a m urcuje pocet reprezentantov (cim viac, tym lepsia aproximacia). Potom B(0/m)B(1/m)B(2/m)…B(m/m) je hladana aproximacia (lomena ciara). Bod Bezierovej krivky pre dany parameter sa vypocita z analytickeho vyjadrenia Bez. Krivky:

   

  kde 

 

 

2. Priamy vypocet pomocou Casteljauovho algoritmu pre reprezentantov definicneho oboru:

 

Podobne ako v prvom pripade, len bod Bezierovej krivky pre dany parameter sa vypocita pomocou Casteljauovho algoritmu:

 

 

3. Subdivision algoritmus 1 (Casteljau):

 

Pre dane t nam bod B(t) rozdeli Bezierovu krivku na dve Bezierove krivky. Prva ma riadiaci         polygon , druha ma riadiaci polygon . Vsetky tieto body su ziskane pomocou Casteljauovho algoritmu. Tieto dva riadiace polygony spolu predstavuju lepsiu aproximaciu Bezierovej krivky ako zadany riadiaci polygon. Ked sa tento postup aplikuje rekurzivne, dostavame vzdy lepsiu a lepsiu aproximaciu zadanej krivky pomocou riadiacich polygonov jej casti. Cize na zaciatku mame jeden riadiaci polygon, po prvej iteracii dva, po druhej iteracii styri riadiace polygony, atd…Vo vasej implementacii pouzite parameter delenia vzdy t = 0,5.

 

4. Subdivision algoritmus 2 (zvysovanie stupna):

 

Kazda Bez. krivka stupna n sa da napisat aj ako Bez. krivka stupna n+1 s novymi riadiacimi vrcholmi:

T.j. kazdym zvysenim stupna sa nam nezmeni povodna Bez. krivka, iba sa zvacsi riadiaci polygon, ktory ju reprezentuje. Takto po urcitom pocte opakovani zvysenia stupna dostaneme riadiaci polygon dostatocne aproximujuci Bez. krivku.

 

 

Je potrebne implementovat jedno vykreslovanie pomocou subdivision a jedno pomocou priameho vypoctu (mozete si vybrat). V ulohe pozadujem zadavanie a dynamicky posun riadiacich vrcholov mysou (t.j. pri pohybe sa bude prekreslovat krivka podla aktualne nastaveneho algoritmu), prepinanie jednotlivych metod a pre subdivision algoritmus aj zadavanie poctu opakovani.