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.
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;
}
Temas relacionados