//Autor:Daniel Soriano Grande Matricula:200917141
//Algoritmo tradicional de lineas (punto a punto)
#include <GL/glut.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
void init (void)
{
//color de la pantalla
glClearColor(0.5,0.5,0.5,0.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D (-400.0, 400.0, -300.0, 300.0);
}
void calcula(double x1,double y1,double x2,double y2){
glColor3f(1.0,0.2,0.2);//DEFINO COLOR
double m,y;
int x;
m=(y2-y1)/(x2-x1); //CALCULO LA PENDIENTE
for(x=x1;x<x2;x++){
glBegin(GL_POINTS);
y=(x-x1)*m+y1;
glVertex2f(x, ceil(y)); //redondeo hacia arriba
}
glEnd();
glFlush();
}
void rombo()
{
int i=0;
double y=300;// ALTO/2
double x=400;// ANCHO/2
while(i<300){
// ---------- VERTICES(PUNTOS) DEL ROMBO
//(0,y-i); //0,300 PUNTO A
// (x-i,0);//400,0 PUNTO B
//(0,-y+i); // 0,-300 PUNTO C
//(-x+i,0);//-400,0 PUNTO D
calcula(0,y-i,x-i,0);// PINTO LA LINEA A,B
calcula(0,-y+i,x-i,0);//PINTO LA LINEA C,B
calcula(-x+i,0,0,-y+i);//PINTO LA LINEA D,C
calcula(-x+i,0,0,y-i);//PINTO LA LINEA D,A
i=i+2; //AUMENTO EL CONTADOR ,ES DECIR AVANZO HACIA EL CENTRO DE LA PANTALLA
}
}
int main(int argc, char ** argv)
{
clock_t t_ini, t_fin;//reloj inicio,fin
double t_total; //tiempo que tardo la aplicacion
t_ini = clock(); //iniciar reloj
//Se inicializa la pantalla grafica
glutInit(&argc,argv);
//Se establece el modo de visualizacion
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
//Se establece coordenadas de pantalla
glutInitWindowSize(800,600);
//Se crea la ventana de visualizacion
glutCreateWindow("Algoritmo Tradicional de lineas (punto a punto)");
//Se ejecuta la funcion de inicializacion de parametros
init();
glutDisplayFunc(rombo);
t_fin = clock();//parar reloj
t_total= (double)(t_fin - t_ini) / CLOCKS_PER_SEC; //calculo el tiempo que tardo
printf("Tardo: %.16g milisegundos\n", t_total * 1000.0);//total en milisegundos
glutMainLoop();
return 0;
}
Comentarios sobre la versión: 1.0 (0)
No hay comentarios