Partager via


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.

illustration montrant deux types de rotation d’un doigt : autour du centre ou autour du bord, avec le bord impliquant à la fois la rotation et la traduction

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;
}
     

Manipulations avancées

Manipulations