#include #include #include #include #define ANG 1 #define PI 3.141592654 #include #define MAXINT (unsigned) -1 /* sorteia um angulo entre 0 e 2 PI */ double Sorteia() { double v; v = rand(); v *= 4.*PI/MAXINT; return v; } void Desenha(void) { double a; int n = 900; /* Limpa a janela de desenho */ glClear(GL_COLOR_BUFFER_BIT); /* Desenhando os eixos */ glColor3f(1.,1.,1.); /* cor branca */ glBegin(GL_TRIANGLE_FAN); glVertex2f(0.,0.); for (a = 0; a <= 2*PI ; a += ANG * PI/180.) { glVertex2f(cos(a),sin(a)); } glVertex2f(1.,0.); glEnd(); glColor3f(.8,.4,.4); glBegin(GL_LINES); while(n--) { double x = Sorteia(); glVertex2f(0.,0.); glVertex2f(sin(x),cos(x)); } glEnd(); glFlush(); } /* Tratamento de teclas pressionadas */ void tecla(unsigned char c, int x, int y) { switch(c) { case 's': case 'x': exit(0); break; } } /* Programa principal */ int main(int argc, char **argv) { srand(time(NULL)); /* Inicialização obrigatória do GLUT */ glutInit(&argc, argv); /* Modo de desenho: só um buffer, colorido */ glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); /* posição da janela */ glutInitWindowPosition(100,100); /* tamanho */ glutInitWindowSize(500,500); /* Cria a janela e dá um nome */ glutCreateWindow("Aleatorio"); /* Registra a função de desenho */ glutDisplayFunc(Desenha); /* Registra a função de tratamento de teclas */ glutKeyboardFunc(tecla); /* Dispara o tratamento dos eventos */ /* Os eventos são: teclas pressionadas, redimensionamento da janela, reaparecimento da janela na tela (depois de minimizada ou ocultada por outra, por exemplo), etc */ glutMainLoop(); return 0; }