Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
#include "windows.h" #include "GL/gl.h" #include "GL/glu.h" #include "GL/glut.h" #include "stdio.h" void putpixel(double x, double y); void breseham(double x0, double y0, double x1, double y1); void DDA(double x1, double y1, double x2, double y2); void DesenhaPlano(void); void Desenha(void); // FUNCAO BRESEHAM void breseham(double x0, double y0, double x1, double y1){ double Dx, Dy, p, p2, xy2, x, y, xf; Dx = x1 - x0; Dy = y1 - y0; /* IMPLEMENTAR PARA O DIA DA PROVA ** [ DDA, POLILINEA, BRESEHAM ] * Tem que funcionar mais de 45 graus em linhas verticais e horizontais */ p = 2*Dy - Dx; p2 = 2*Dy; xy2 = 2*(Dy - Dx); // DEIXAR IMPLEMENTADO // Reta Vertical if (x0 == x1){ for (y=y0; y<=y1; y++){ putpixel(x0, y); } } // Reta -------- if (y0 == y1){ for (x=x0; x<=x1; x++){ putpixel(x, y0); } } // if (x0 > x1){ /* code */ x = x1; y = y1; xf = x0; } else{ /* code */ x = x0; y = y0; xf = x1; } putpixel(x, y); while(x < xf){ x = x+1; if (p<0){ /* code */ p = p + p2; } else{ y = y+1; p = p + xy2; } putpixel(x, y); } } // Função pintar o pixel!! void putpixel(double x, double y){ // Especifica que a cor corrente é vermelha // RGB glColor3f(1.0f, 0.0f, 0.0f); // cor ponto glBegin(GL_POINTS); //define os pontos // round(y); glVertex2f(x, y); glEnd(); }; // Função DDA void DDA(double x1, double y1, double x2, double y2){ double x, y; double m; m = (y2 - y1)/(x2 - x1); for (x = x1; x < x2; x++){ y = y1 + m*(x - x1); putpixel(x, y); }; }; void polilinha(){ glColor3f(1.0f, 0.0f, 0.0f); // Cor ponto glBegin(GL_LINE_STRIP); //glVertex2f(10, 10); glVertex2f(0, 10); glVertex2f(10, 20); glVertex2f(15, 20); glVertex2f(20, 40); glEnd(); }; void DesenhaPlano(void){ glColor3f(1, 1, 0); // Cor da linha glLineWidth(3.0); // Espessura da linha glBegin(GL_LINES); glVertex3f(-500, 0, 0); glVertex3f(500, 0, 0); glVertex3f(0, -500, 0); glVertex3f(0, 500, 0); glEnd(); }; // Função callback chamada para fazer o desenho void Desenha(void){ // Limpa a janela de visualização com a cor de fundo especificada glClear(GL_COLOR_BUFFER_BIT); DesenhaPlano(); // Desenha plano cartesiano DDA(0, 0, 5, 5); // Algoritmo DDA(0.0, 0.0, 5.0, 5.0) glFlush(); }; // Programa Principal int main(void){ /* code */ glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(1000, 1000); // tamanho da janela glutInitWindowPosition(100, 100); // localização que a janela abrirá glutCreateWindow("Computação Gráfica"); // Nome da Janela glClearColor(0.0, 0.0, 0.0, 0.0); // Cor Fundo da tela - Preto glPointSize(5.0); // seta o tamanho do ponto gluOrtho2D(-50.0, 50.0, -50.0, 50.0); // é usada para determinar que... glutDisplayFunc(Desenha); // Chama a função principal glutMainLoop(); //breseham(20, 10, 30, 18); polilinha(); //return 0; };