Vježbe 11
Parametarske krivulje i plohe
Primjer 1:
Lagrangeov interpolacijski polinom - uočite nagle oscilacije kako raste
stupanj polinoma.
Izvorni kod:
Lagrange.c
Točke se postavljaju pritiskom lijeve tipke na mišu (svaka sljedeća
točka mora biti desno od prethodne). Pošto su postavljene, točke se mogu
pomicati gore-dolje (doći na točku i stisnuti lijevu tipku miša, povući
pokazivač na željenu visinu, te pustiti tipku). Za izlaz iz programa
pritisnuti srednju tipku na mišu.
Primjer 2:
Bezierove krivulje - uočite kako se modificiraju kad se pomiču
kontrolne točke.
Izvorni kod:
Bezier1D.c
Točke se postavljaju pritiskom lijeve tipke na mišu - položaj svake
sljedeće točke je potpuno proizvoljan. Pritiskom na desnu tipku započinje
se nova krivulja. Točke se mogu po volji seliti (postaviti pokazivač na
točku, pritisnuti lijevu tipku miša i povući do nove pozicije, te
pustiti tipku). Za izlaz iz programa pritisnuti srednju tipku na mišu.
Primjer 3:
Kubični B-splajnovi - bijela krivulja je otvoreni
jednoliki B-splajn, a cijan krivulja je jednoliki periodički B-splajn.
Iscrtkana plava krivulja je Bezierova. Za specijalni slučaj kod 4 točke
otvoreni B-splajn identičan je s Bezierovom krivuljom. Uočite kako se
B-splajnovi ponašaju kad se pomiču kontrolne točke. Periodički B-splajn
stupnja 4 može se zatvoriti (tj. spojiti početak i kraj u zatvorenu
krivulju) ako se preklope prve i zadnje 3 točke.
Izvorni kod:
Bspline1D.c
Točke se postavljaju pritiskom lijeve tipke na mišu - položaj svake
sljedeće točke je potpuno proizvoljan. Pritiskom na desnu tipku započinje
se novi splajn. Točke se mogu po volji seliti (postaviti pokazivač na
točku, pritisnuti lijevu tipku miša i povući do nove pozicije, te
pustiti tipku). Za izlaz iz programa pritisnuti srednju tipku na mišu.
Primjer 4:
Bezierove plohe u OpenGL-u - izvorni kod:
cutura.c
Za rotaciju koristi se miš - pritisnuti lijevu tipku i povući
u željenom smjeru. Za izlaz iz programa pritisnuti srednju tipku
na mišu.
- 'n' - smanjuje broj poligona u mreži
- 'N' - povećava broj poligona u mreži
- 'a' - isključuje automatsko generiranje vektora normale
- 'A' - uključuje automatsko generiranje vektora normale
Primjer 5:
B-splajn plohe u OpenGL-u - izvorni kod:
boca.c
Za rotaciju koristi se miš - pritisnuti lijevu tipku i povući
u željenom smjeru. Za izlaz iz programa pritisnuti srednju tipku
na mišu.
- 'm' - uključuje prikaz žičane mreže
- 'M' - uključuje prikaz s ispunjenim poligonima
- 'n' - smanjuje se tolerancija kod teseliranja
- 'N' - povećava se tolerancija kod teseliranja
- 'a' - isključuje automatsko generiranje vektora normale
- 'A' - uključuje automatsko generiranje vektora normale
11.1. Nacrtajte Bezierove krivulje definirane kontrolnim točkama
zadanima u datoteci
ktocke.txt
(za svaku krivulju najprije je ispisan broj kontrolnih točaka, a slijede
parovi koordinata
x i
y. Kraj datoteke označen je nulom za
broj kontrolnih točaka).
11.2. Modificirajte plinsku bocu iz primjera 5 (ili eventualno
ćuturu iz primjera 4) u snjegovića, žarulju, cepelin, podmornicu, amforu,
ribu, kasicu-prasicu - bilo što, što vam padne na pamet!