Animação 2D
description
Transcript of Animação 2D
Animação 2D
// Variáveis que guardam a translação que será aplicada // sobre a casinhaGLfloat Tx;GLfloat Ty;
// Variáveis que guardam os valores mínimos de x e y da // casinhaGLfloat minX, maxX;GLfloat minY, maxY;
// Variáveis que guardam o tamanho do incremento nas // direções x e y (número de pixels para se mover a // cada intervalo de tempo)GLfloat xStep;GLfloat yStep;
// Variáveis que guardam a largura e altura da janelaGLfloat windowXmin, windowXmax;GLfloat windowYmin, windowYmax;
// Função callback de redesenho da janela de visualizaçãovoid Desenha(void){
// Muda para o sistema de coordenadas do modeloglMatrixMode(GL_MODELVIEW);// Inicializa a matriz de transformação correnteglLoadIdentity();
// Limpa a janela de visualização com a cor // de fundo definida previamenteglClear(GL_COLOR_BUFFER_BIT);
// Aplica uma translação sobre a casinhaglTranslatef(Tx, Ty, 0.0f);
... // desenha o que vc quiser
...
// Executa os comandos OpenGL glutSwapBuffers();}
Funções e Variáveis que Devem ser colocadas
// Função callback chamada quando o tamanho da janela é alterado void AlteraTamanhoJanela(GLsizei w, GLsizei h){ ...}
// Função callback chamada para gerenciar eventos de teclasvoid Teclado (unsigned char key, int x, int y){
if (key == 27)exit(0);
}
Funções e Variáveis que Devem ser colocadas
// Função callback chamada pela GLUT a cada intervalo de tempovoid Anima(int value){
// Muda a direção quando chega na borda esquerda ou direitaif( (Tx+maxX) > windowXmax || (Tx+minX) < windowXmin )
xStep = -xStep;
// Muda a direção quando chega na borda superior ou inferiorif( (Ty+maxY) > windowYmax || (Ty+minY) < windowYmin )
yStep = -yStep;
// Move a casinhaTx += xStep;Ty += yStep;
// Redesenha a casinha em outra posiçãoglutPostRedisplay();glutTimerFunc(150,Anima, 1);
}
// Função responsável por inicializar parâmetros e variáveisvoid Inicializa (void){
// Define a cor de fundo da janela de visualização como branca
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
// Inicialização das variáveis globaisxStep = yStep = 1.0f;Tx = Ty = 0.0f;minX = -15.0f;maxX = 15.0f;minY = -15.0f;maxY = 17.0f;windowXmin = windowYmin = -40.0f;windowXmax = windowYmax = 40.0f;
}
// Programa Principal int main(void){
// Define do modo de operação da GLUTglutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
//Registra as callbacks necessárias// Registra a função callback que será chamada a cada intervalo de tempoglutTimerFunc(150, Anima, 1);
// Chama a função responsável por fazer as inicializações I// Inicia o processamento e aguarda interações do usuárioglutMainLoop();
return 0;}
TAREFA
1) Fazer uma animação 2D semelhante ao demo AnimaCasa
2) Fazer uma animação 3D semelhante ao demo Anima3D