2011-04-23 2 views
0

J'ai un QVector3D qui définit la vitesse d'un objet dans le système de coordonnées local (= Z positif signifie aller de l'avant, ...), et un QVector3D au 10ème degré (0 ..3600) étapes définissant la rotation de l'objet dans le système de coordonnées global.Conversion de coordonnées locales (= tournées) en coordonnées globales

maintenant pour simuler ma scène, j'ai besoin de la vitesse de l'objet QVector3D dans le système de coordonnées global.

ce que j'ai trouvé à ce jour sont les matrices de rotation (de http://en.wikipedia.org/wiki/Rotation_matrix#Rotations_in_three_dimensions):

qreal angle(qreal in){ //helper function 
    return in/1800.0f*M_PI; 
} 

    qreal xptr[9]={ 
     1,0,0, 
     0,cos(angle(rotation.x())),-sin(angle(rotation.x())), 
     0,sin(angle(rotation.x())),cos(angle(rotation.x())) 
    }; 
    qreal yptr[9]={ 
     cos(angle(rotation.y())),0,sin(angle(rotation.y())), 
     0,1,0, 
     -sin(angle(rotation.y())),0,cos(angle(rotation.y())) 
    }; 
    qreal zptr[9]={ 
     cos(angle(rotation.z())),-sin(angle(rotation.z())),0, 
     sin(angle(rotation.z())),cos(angle(rotation.z())),0, 
     0,0,1 
    }; 

mais je ne sais pas comment les utiliser correctement.

EDIT: si c'est pertinent: unités, sens de rotation, ... suivre la norme OpenGL.

+0

utilisant escouades maintenant, pas besoin de ces matrices plus ... – nonchip

Répondre

0

produits de la matrice: Utilisation transfomration_matrix x original_vector = transformed_vector

Questions connexes