Analisi e sintesi dei gesti comunicativi per gli - Maurizio Mancini
Analisi e sintesi dei gesti comunicativi per gli - Maurizio Mancini
Analisi e sintesi dei gesti comunicativi per gli - Maurizio Mancini
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Appendice A<br />
Appendice A<br />
VII.3 Il metodo Draw della classe Joint<br />
Nella sezione 1 del paragrafo VI.3 avevamo descritto l’algoritmo sul quale è basato<br />
il metodo Draw() della classe Joint. In questo paragrafo riportiamo il codice<br />
commentato della sua implementazione nel linguaggio C++:<br />
void Joint::Draw(){<br />
//disegnare una sfera nel punto attuale, cioè nel punto da cui parte la giuntura<br />
gluSphere(gluNewQuadric(),1.0f,4,4);<br />
//OPENGL:effettuare la rotazione associata alla giuntura<br />
glRotatef(rotation.z,0.0f,0.0f,1.0f);<br />
glRotatef(rotation.y,0.0f,1.0f,0.0f);<br />
glRotatef(rotation.x,1.0f,0.0f,0.0f);<br />
//se la giuntura ha delle giunture fi<strong>gli</strong>e allora <strong>per</strong> ciscuna di esse:<br />
for(int i=0; itranslation.x,sons[i]->translation.y,sons[i]->translation.z);<br />
glEnd();<br />
//OPENGL:spostarsi nella posizione di quella fi<strong>gli</strong>a<br />
glTranslatef(sons[i]->translation.x, sons[i]->translation.y, sons[i]->translation.z);<br />
//disegnare ricorsivamente quella fi<strong>gli</strong>a e tutti i suoi successori<br />
sons[i]->Draw(jointname);<br />
//OPENGL:tornare nella posizione della giuntura attuale<br />
glTranslatef(-sons[i]->translation.x, -sons[i]->translation.y, -sons[i]->translation.z);<br />
}<br />
OPENGL:dopo aver disegnato tutte le fi<strong>gli</strong>e effettuare una rotazione opposta a quella della<br />
giuntura attuale<br />
glRotatef(-rotation.x,1.0f,0.0f,0.0f);<br />
glRotatef(-rotation.y,0.0f,1.0f,0.0f);<br />
glRotatef(-rotation.z,0.0f,0.0f,1.0f);<br />
}<br />
110