martes, 17 de marzo de 2015

Práctica de funciones y trayectorias.

#include "stdafx.h"
#include <glut.h>
#include <math.h>

void Inicializa();
void Dibuja();

void main()
{
glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE);
glutInitWindowSize(800,800);
glutInitWindowPosition(0,0);
glutCreateWindow("Funciones");
Inicializa();
glutDisplayFunc(Dibuja);
glutMainLoop();
}

void Inicializa()
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-6,6,-6,6);
glClearColor(0,0,0,0);
}

void Dibuja()
{
float x,y,z,c,xx,yy;

glClear(GL_COLOR_BUFFER_BIT);

// Cuadricula
glColor3f(1,1,1);
glLineWidth(5);
glBegin(GL_LINES);
for(x=-6;x<=6;x+=4)
{
glVertex2i(x,6);
glVertex2i(x,-6);
glVertex2i(-6,x);
glVertex2i(6,x);
}
glEnd();

// 1
glLineWidth(3);
glPointSize(3);
glColor3f(.2,.1,.8);
glBegin(GL_LINE_STRIP);
for(x=-5.9;x<=-2.1;x+=.01)
{
y=pow(sin(5*x-3),3)+cos(x)+4.2;
glVertex2f(x,y);
}
glEnd();

// 2
glColor3f(1,0,0);
glBegin(GL_LINE_STRIP);
for(z=0;z<=31;z+=.1)
{
x=z*cos(z)/15;
y=z*sin(z)/15+4.1;
glVertex2f(x,y);
}
glEnd();

// 3
glColor3f(1,0,1);
glBegin(GL_POINTS);
for(x=2.1;x<=5.9;x+=.007)
{
y=3*sin(10*(x-4))/(10*(x-4))+2.8;
glVertex2f(x,y);
}
glEnd();

// 4
glColor3f(1,.5,.5);
for(c=.45;c<1.81;c+=.45)
{
glBegin(GL_LINE_LOOP);
for(z=0;z<=6.28;z+=.01)
{
x=c*cos(z)-4;
y=c*sin(z);
glVertex2f(x,y);
}
glEnd();
}

// 5
glColor3f(1,1,0);
glBegin(GL_LINES);
for(x=-1.8;x<=0.1;x+=.45)
{
glVertex2f(x,1.8);
glVertex2f(x+1.8,-1.8);
glVertex2f(-x,1.8);
glVertex2f(-x-1.8,-1.8);
}
glEnd();

// 6
glColor3f(.5,.5,.5);
for(c=.25;c<=1.75;c+=.25)
{
glBegin(GL_LINE_LOOP);
for(z=0;z<=6.28;z+=.01)
{
x=cos(z)+3+c;
y=-.5*sin(z)-1+c;
glVertex2f(x,y);
}
glEnd();
}

// 7
glColor3f(.1,.1,1);
glBegin(GL_POINTS);
for(x=-5.9;x<=-2.1;x+=.01)
{
y=cos(exp(x+4)*sqrt(x*x+4))-4;
glVertex2f(x,y);
}
glEnd();

// 8
glColor3f(.1,.5,.5);
glBegin(GL_LINE_STRIP);
for(z=0;z<=6.28;z+=.01)
{
x=cos(z);
y=sin(z)-4;
glVertex2f(x,y);
if(z==0)
{
for(c=-3.14;c<=3.14;c+=.01)
{
xx=.4*cos(c)+x*1.4;
yy=.4*sin(c)+y;
glVertex2f(xx,yy);
}
}
if(z>1.57&&z<1.58)
{
for(c=-1.57;c<=4.71;c+=.01)
{
xx=.4*cos(c)+x*1.4;
yy=.4*sin(c)+y+.4;
glVertex2f(xx,yy);
}
}
if(z>3.14&&z<3.15)
{
for(c=0;c<=6.28;c+=.01)
{
xx=.4*cos(c)+x*1.4;
yy=.4*sin(c)+y;
glVertex2f(xx,yy);
}
}
if(z>4.71&&z<4.72)
{
for(c=1.56;c<=7.84;c+=.01)
{
xx=.4*cos(c)+x*1.4;
yy=.4*sin(c)+y-.4;
glVertex2f(xx,yy);
}
}
}
glEnd();

// 9
glColor3f(0,1,0);
glBegin(GL_LINE_STRIP);
for(x=0;x<2.9;x+=.01)
{
y=exp(x-1.5)*sin(500*x)/2-2;
glVertex2f(y+6,x-5.8);
}
glEnd();
glutSwapBuffers();
}