Tenim un objecte com el descrit en el fitxer p1_escena.pov
Per a visualitzar-lo, executeu les comandes:
povray +W640 +H480 +a0.2 p1_escena.pov
xv p1_escena.png
Noteu que hem associat a aquest objecte un sistema de referencia fixat
a ell (eixos 1, 2, 3,
de color vermell, verd, blau). Es vol fer rotar l'objecte i el sistema
de referència associat
des de la orientació inicial en t=0 fins a la orientació
en t=1 especificada per una
matriu de rotació de valors:
0.53632 -0.30202 0.78813 1a fila
0.68301 0.70388 -0.19506 2a fila
-0.49583 0.64292 0.58379 3a fila
els elements de la qual estan emmagatzemats per columnes en el fitxer rijxcolumnes
L'exercici consisteix en trobar quines 3 operacions de rotacio elementals
consecutives
R1(z,fi_z) R2(y,fi_y) R3(x,fi_x) ens proporcionaran la rotacio desitjada,
i realitzar una
animació que passi de forma continua de la orientació
inicial (fi's = 0) en t=0 fins als
valors calculats en t=1.
Per a això seguiu els següents punts:
1) Determineu quina es la matriu de rotació resultant de la composició
de les 3 operacions
de rotació elementals esmentades.
2) Imposant que els diferents elements r_ij donats coincideixin amb
els resultants de la
composició, trobeu les equacions que ens relacionen r_ij amb
fi_x, fi_y, fi_z.
3) Escriviu un algorisme que permeti aillar fi_z, fi_y,
fi_x a partir dels valors numèrics dels
coeficients r_ij (vegeu punt 5).
4) Implementeu l'algorisme en un programa que llegeixi el fitxer rijxcolumnes
i volqui fi_x, fi_y, fi_z en el fitxer fisef.out (separats per comes).
Si us és més fàcil,
podeu volcar el contingut del fitxer rijxcolumnes en un altre
fitxer dadesrij
en el format que vulgeu (per exemple, amb els elements en linies separades).
5) executeu el programa, generant el fitxer fisef.out
(Noteu que aquest fitxer ja existeix, de manera que podeu verificar
si l'algorisme us funciona
correctament. Si és així, al final podreu realitzar el
punt 10).
6) Examineu el fitxer p1_verifica.pov:
#fopen Rij "rijxcolumnes" read
#read (Rij,r11,r21,r31,r12,r22,r32,r13,r23,r33)
#fopen Fis "fisef.out" read
#read (Fis,f1z,f1y,f1x)
Noteu que utilitza la matriu de rotació per a representar en
gris la posicio dels
eixos rotats (objecte SRob, Sistema de Referencia objectiu):
// Escena
object {SRob matrix < r11,r21,r31,r12,r22,r32,r13,r23,r33, 0.0, 0.0, 0.0 > }
//
i les tres rotacions que heu calculat R1(z,fi_z) R2(y,fi_y) R3(x,fi_x)
per a representar l'objecte i el sistema de referencia fixat
a ell:
object{Roda_dentada rotate f1x*x rotate f1y*y rotate f1z*z}
object {SRef rotate f1x*x rotate f1y*y rotate f1z*z}
Fixeu-vos que la primera transformacio sobre les coordenades dels
diferents punts que constitueixen l'objecte es R(x), la segonaR(y)
i
la darrera R(z) (Ha de ser aixi?). Visualitzeu l'escena amb les comandes
povray +W640 +H480 +a0.2 p1_verifica.pov
xv p1_verifica.png
Si tot ha anat bé, els eixos en gris estaran continguts dins
dels eixos en color
(si la orientacio generada per les rotacions elementals que heu determinat
coincideix amb la de la matriu de rotacio donada).
7) En un directori nou, genereu una sequencia d'imatges entre t=0 i
t=1,
substituint
rotate f1x*x rotate f1y*y rotate f1z*z per
rotate Factor*f1x*x rotate Factor*f1y*y rotate Factor*f1z*z
on Factor varia de 0 a 1 a mesura que avança la sequencia
(ho teniu preparat en el fitxer p1_anim.pov i p1_anim.ini).
Modifiqueu els paràmetres convenients continguts en p1_anim.ini
i executeu
povray +W640 +H480 +a0.2 p1_anim.ini
8) examineu la seqüencia de imatges png amb el programa xv. Prement
la barra d'espai
passeu d'una imatge a la seguent. Genereu un fitxer mpg amb la comanda:
convert p1*.png p1.mpg
podeu visualitzar-la:
/home/share/assig/fmar/mpeg_player/mpeg_play p1.mpg
9) En aquesta animació, hem fet variar els tres angles seguint
una funció lineal amb el
temps (clock varia uniformement entre els valors definits a p1_anim.ini):
// #declare Factor=sin(pi*clock)*sin(pi*clock);
#declare Factor=clock;
Repetiu l'animació fent que la dependencia de la rotació
amb el temps sigui del tipus sin^2
en lloc de lineal, comentant i descomentant les declaracions de la
variable Factor en el
fitxer p1_anim.pov .
10) Repetiu el procediment amb la rotació que teniu especificada en el fitxer final/rijxcolumnes.
Mostreu la visualització de totes les seqüències.