PROGRAM 1 : To perform rotation you must define
starting vector and ending vector. Then the program solve the angle of
rotation and rotate model from vector 1 to vector 2.
Problem is when angle of rotation is 0 or nPi becouse the model have
no order in which directon must be rotated. To solve this problem I define
:
PROGRAM 2 : This program also perform rotation
by using quaternions. In this program you must define vector and angle
of rotation. In this case I don't have any problem with singularity.
Interpolacija orientacije naj bi se izvedla indirektno z interpolacijo
kotov in ne s transformacijo matrik. V dveh dimenzijah imamo samo en kot
zato je vrtenje
enostavno. V treh dimenzijah pa imamo tri kote in s tem vrtenje krogle.
Interpolacija je zato bolj zahtevna za prikaz.
Definicija
Kvaternioni so sestavljeni iz treh imaginarnih velcin i, j in k in skalarnega dela a
Pravila za sestavljanje imaginarnih velicin so naslednja:
Lastnosti kvaternionov
Produkt kvaternionov ni komutativen. Kvaternioni se lahko razdelijo na skalarni in vektorski del:
V vektorski notaciji lahko zapisemo produkt dvek kvaternionov kot:
Enotski kvaternion
za enotski vektor je ekvivalenten rotaviji za okoli osi definirani z . je ekvivalenten ko ga interpretiramo kot orientacijo.
Kvaternioni imajo tudi konjugate: . Norma kvaterniona je definirana z
Rotacija in kvaternioni
Tocke v prostoru so lahko predstavljene s kvaternioni, ce imajo nicni skalarni del. Tocka P je predstavljena kot:
Rotacija tocke P je definirana z
Za enotske kvaternione je inverz enak konjugatu.
Prednosti kvaternionov
1. Za veliko aplikacij je neodvisna definicija osi zavrtitve in
kota primerna.
2. Definicija orientacije s kvaternionom je neodvisna od koordinatnega
sistema in izotropna.
3. Krozna interpolacija kvaternionov daje boljse rezultate kot
Eulerjevi koti.
Interpolacija s kvaternioni
Kot med dvema kvaternionoma je
Za dani parameter je kvaternion zavrtitve s krozno interpolacijo podan kot
Naloga.
Izdelati je potrebno program, ki bo mrezni model popisan v prostoru
zavrtel iz enega polozaja v drugi z uporabo
krozne interpolacije s kvaternioni. Potrebno je resiti tudi problem
singularnosti pri in
. Izris 3D
modela in vmesnih stopenj z uporabo knjiznice PHIGS ali OPEN GL.
Tocko p v prostoru predstavim s kvaternionom P = ( 0, p). Zeljeno rotacijo tocke p izracunam s enacbo
Qrot = mat(4,4)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
S to matriko lahko zapisemo P(rotirano) drugace
Program 2 za 21"/1280*1024 in 15"/1024*768
PROGRAM 1:
1.Podaj vrednosti enotskega smernega
vek. u=x,y,z!
Podamo koordinate tocke smernega
vektorja, ki ima izhodisce v koordinatenemu izhodiscu (0,0,0)
2.Podaj vrednosti kota zasuka theta
v stopinjah!
Podamo kot celotnega zasuka. Kot
se poda v stopinjah. Rotacija se izvaja okoli vektorja u
3.Velikost spodnje stranice a 4-str. 3D lika!
4.Velikost zgornje stranice b 4-str. 3D lika!
5.Visina 4-str. 3D lika!
6.Stevilo vmesnih stopenj do koncnega
polozaja!
Podamo stevilo vmesnih stopenj,
ki naj jih program narise, da pridemo do koncnega stanja.
PROGRAM 2:
1.Podaj vrednosti zacetnega enotskega
smernega vek. V1=x,y,z!
Podamo koordinate tocke smernega
vektorja, ki ima izhodisce v koordinatenemu izhodiscu (0,0,0)
2.Podaj vrednosti koncnega
enotskega smernega vek. V2=x,y,z!
Podamo koordinate tocke smernega
vektorja, ki ima izhodisce v koordinatenemu izhodiscu (0,0,0)
3.Velikost spodnje stranice a 4-str. 3D lika!
4.Velikost zgornje stranice b 4-str. 3D lika!
5.Visina 4-str. 3D lika!
6.Stevilo vmesnih stopenj do koncnega
polozaja!
Podamo stevilo vmesnih stopenj,
ki naj jih program narise, da pridemo do koncnega stanja.
Program zahteva tudi tocno definiranje osi rotacije pri kotih rotacije
0 in 180 stopinj. V programu sem definiral osi rotacije za naslednje primere,
ko so koordinate enotskega vektorja V1[s1, s2, s3] v naslednjem razmerju
z koordinatami enotskega vektorja V2[e1,e2,e3]:
1. s1=-e1 rotacija okoli Z
osi
2. s2=-e2 rotacija okoli
Z osi
3. s3=-e3 rotacija okoli
X osi
4. s1=e1 rotacija okoli
X osi
5. s2=e2 rotacija okoli
Y osi
6. s3=e3 rotacija okoli
Z osi
Pri tem so variante pod zaporednimi stevili tudi prioritetno uvrscene.
Npr. ce imamo enotski vektor V1[2, 4, 0]
in V2[1, 4, 0] bo rotacija okoli X osi saj je koordinata s3=-e3.
Prevajalnik PHIGS knjiznice DJGPP
je mogoce dobiti na strezniku ftp.lecad.uni-lj.si
na podrocju /pub/vaje/install. Program je potrebno razsiriti na
direktorij c:\djgpp, nato pa pognati datoteko POT.BAT. Tako je vse nared
za pogon izvr¹nih programov z uporabo PHIGS knjiznice.