Za ulohu bude potrebne implementovat dve krivky, obe po
castiach zlozene z Bezierovych kriviek stupna 3, pricom v bodoch nadvezovania
je krivka C1 resp. C2 spojita.
- C1
spojita ciastkova Bez. krivka je zadana n+1 bodmi Vi, i=0,
,n,
ktore tato krivka interpoluje. Pre kazdy dany bod Vi je este
zadana riadiaca usecka AiBi tak, ze Vi
je vzdy stred tejto usecky. V
implementacii sa musi dat menit poloha riadiacich vrcholov Vi a
pre vybrany vrchol Vi sa musi dat menit aj riadiaca usecka AiBi.
Potom vrcholy ViBiAi+1Vi+1
tvoria riadiaci polygon jedneho segmentu (casti) celej krivky. Ked sa
vykreslia vsetky segmenty (pouzite algoritmus dany nizsie) pre i=0,
,n-1,
dostaneme hladanu krivku. Pri pridani riadiaceho vrchola Vi
nech usecka AiBi ma nejaku dlzku a nahodny smer.
- C2
spojita ciastkova Bez. krivka je zadana n+1 bodmi Vi, i=0,
,n,
pricom tato krivka interpoluje 0,3,4,
n ty riadiaci bod. Tato krivka sa
opat sklada zo segmentov, ktore su Bezierovymi krivkami stupna 3. Prvy
segment je urceny bodmi V0,
,V3, kazdy dalsi segment
je zadany vrcholmi Vi, Ai, Bi, Vi+1,
i=3,
,n-1. Body Ai, Bi sa vypocitaju z riadiacich
bodov predchadzajuceho segmentu na zaklade C2 spojitosti. Plati
Ai = 2*Vi-Bi-1 a Bi=4*Vi-4*Bi-1+Ai-1,
pre i=3,
,n-1.
Na vykreslenie jednotlivych segmentov krivky (t.j. kubickych
Beziertovych kriviek) sa pouzije nasledovny optimalizovany algoritmus. Opat sa
jedna o aproximaciu krivky pomocou lomenej ciary, body tejto lomenej ciary sa
vypocitavaju postupne z predchadzajuceho vypoctu. Na zaciatku su dane riadice
body V0, V1, V2, V3 a cislo m,
ktore predstavuje pocet reprezentatntov def. oboru, t.j. presnost aproximacie.
Potom algoritmus na vypocet je nasledovny:
Potom A1,A2,
,Am je
hladana aproximacia Bezierovej krivky. Vsetky pomocne premenne (f, fd, fdd,
)
maju tri zlozky (suradnice).
Znovu je potrebne implementovat aj zakladne modelovacie
nastroje (zmazanie, pridanie bodu, posun riadiacich bodov, zmena m).