Rotação Avançada
Esta seção explica como girar um objeto com base em onde o usuário está executando a manipulação de rotação.
A imagem a seguir ilustra duas maneiras diferentes de um objeto ser girado.
No exemplo A, o objeto é manipulado em torno do ponto central do objeto. No exemplo B, o objeto é girado em torno do ponto central da manipulação. Para dar suporte à manipulação em torno de um ponto diferente do ponto central do objeto, você deve executar uma manipulação composta que execute rotação e tradução. O código a seguir mostra como essa manipulação é executada e calculada.
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;
}
Tópicos relacionados