Compartilhar via


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.

ilustração mostrando dois tipos de rotação de dedo único: ao redor do centro ou ao redor da borda, com a borda envolvendo rotação e tradução

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

Manipulações avançadas

Manipulações