Compartir a través de


Rotación avanzada

En esta sección se explica cómo girar un objeto en función de dónde realiza el usuario la manipulación de rotación.

En la imagen siguiente se muestran dos formas diferentes de rotar un objeto.

Ilustración en la que se muestran dos tipos de rotación de un solo dedo: alrededor del centro o alrededor del borde, con el borde que implica la rotación y la traducción

En el ejemplo A, el objeto se manipula alrededor del punto central del objeto. En el ejemplo B, el objeto se gira alrededor del punto central de la manipulación. Para admitir la manipulación alrededor de un punto distinto del punto central del objeto, debe realizar una manipulación compuesta que realice la rotación y la traducción. En el código siguiente se muestra cómo se realiza y calcula esta manipulación.

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

Manipulaciones avanzadas

Manipulaciones