Rotation avancée
Cette section explique comment faire pivoter un objet en fonction de l’emplacement où l’utilisateur effectue la manipulation de rotation.
L’image suivante illustre deux façons différentes de faire pivoter un objet.
Dans l’exemple A, l’objet est manipulé autour du point central de l’objet. Dans l’exemple B, l’objet est pivoté autour du point central de la manipulation. Pour prendre en charge la manipulation autour d’un point autre que le point central de l’objet, vous devez effectuer une manipulation composée qui effectue à la fois la rotation et la traduction. Le code suivant montre comment cette manipulation est effectuée et calculée.
RotateVector(FLOAT *vector, FLOAT *tVector, FLOAT fAngle) {
FLOAT fAngleRads = fAngle / 180.0f * 3.14159f;
FLOAT fSin = sin(fAngleRads);
FLOAT fCos = cos(fAngleRads);
FLOAT fNewX = (vector[0]*fCos) - (vector[1]*fSin);
FLOAT fNewY = (vector[0]*fSin) + (vector[1]*fCos);
tVector[0] = fNewX;
tVector[1] = fNewY;
}
Rubriques connexes