martes, 21 de febrero de 2017

Práctica 2

Ejercicio 1:

#include <windows.h>
#include <C:\GLUT\include\GL\glut.h>
#include <stdlib.h>
#include <math.h>
#include <stdio.h>



float r=1,g=0,b=0;
float dx,dy;
int lado=20,linea=7,inc=1,i;
int ban=1;
int b2 = 0;

void cuadro(float r, float g, float b)
{
    glColor3f(r,g,b);
    glEnable( GL_LINE_SMOOTH );
    glBegin( GL_POLYGON);
    glVertex2f(6,3);glVertex2f(3, 3);
    glVertex2f(3,6);glVertex2f(6,6);
    glEnd();
}

void cuadrof(float r, float g, float b)
{
    glColor3f(r,g,b);
    glEnable( GL_LINE_SMOOTH );
    glBegin(GL_LINE_LOOP);
    glVertex2f(6,3);glVertex2f(3,3);
    glVertex2f(3,6);glVertex2f(6,6);
    glEnd();
}


void display(void)
{
   // ban=1;
    glClear( GL_COLOR_BUFFER_BIT );
    glEnable( GL_LINE_SMOOTH );
    if(ban==1){
        cuadro(r,g,b);

    }else
    {
        cuadrof(r,g,b);
    }


    glFlush();

}

void key(unsigned char c, int x, int y)
{
    if (c == 27) {
        exit(0);
    }if(c == 'a')
    {
        r=0;
        g=0;
        b=1;
    } else if(c == 'v')
    {
        r=0;
        g=1;
        b=0;
    }else if(c == 'r')
    {
        r=1;
        g=0;
        b=0;
    }else if(c='w'){
        if( ban == 1 )
            ban=0;
            else
                ban = 1;
    }
    glutPostRedisplay();
    //glFlush();

}




int main(int argc, char** argv){
    glutInit(&argc, argv); // Inicializa la libreria GLUT
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB );
    glutInitWindowSize(550,550); // Inicializa el tamaño de la ventana
    glutInitWindowPosition(100,50); // posicion de la ventana
    glutCreateWindow("CuadroFrame"); // crea la ventana

    glClearColor( 1, 1, 1, 0);
    gluOrtho2D( 0, 9, 9, 0 );
    glutDisplayFunc(display);
    glutKeyboardFunc(key);
    glutMainLoop();
    return EXIT_SUCCESS;
}



Ejercicio 2:


#include <windows.h>
#include <C:\GLUT\include\GL\glut.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#define PI 3.1415926535897932384626433832795


float r, g, b, y;
int ancho = 600, alto = 300, linea = 6, inc = 1;

void funcionseno(float r,float g, float b)
{
    glLineWidth(linea);
    glBegin( GL_LINE_STRIP );
    glColor3f(r,g,b);
    //glVertex2f(0,0);
    for( float i = -3.005*PI; i<= 3.005*PI; i = i + PI/20 )
    {
        y = 2*sin(i);
        //x = i;
        glVertex2f( i,y);
    }
    glEnd();
}

void funcioncoseno(float r,float g, float b)
{
    glLineWidth(linea/3);
    glBegin( GL_LINE_STRIP );
    glColor3f(r,g,b);
    for( float i = -3.005*PI; i<= 3.005*PI; i = i + PI/20 )
    {
        y = 2*cos(i);
        //x = i;
        glVertex2f( i,y);
    }
    glEnd();
}




void referencia(float r, float g, float b)
{
    glLineWidth(linea/4); //ANCHO DE LINEA
    glColor3f(r, g, b);
    glBegin(GL_LINES);
    glVertex2f(-1000,0);glVertex2f(1000,0);// EN X
    glVertex2f(0,-1000);glVertex2f(0,1000);//EN Y
    glEnd();
    //glLineWidth(linea);
}


void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT);
    referencia(0,0,0);
    glPushMatrix();
        glScalef( 30.0, 30.0, 1.0 );
        funcionseno(1,0,0);
        funcioncoseno(0,1,0);
    glPopMatrix();

    glFlush();
}

void Init()
{   glClearColor(1.0,1.0,1.0,0);
    gluOrtho2D( -ancho/2, ancho/2, -alto/2, alto/2 );
}

int main(int argc, char **argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowPosition(100,100);
    glutInitWindowSize( ancho, alto);
    glutCreateWindow("Graficas");

    Init();

    glutDisplayFunc(display);
    glutMainLoop();
    return 0;
}



Ejercicio 3:

Versión 1:


#include <windows.h>
#include <C:\GLUT\include\GL\glut.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>

float r = 0.5, g = 0.5, b = 0.5;
int ancho = 600, alto=600;
int tam_px = 10;
int matrizPuntos[1000][2];
int i = 0;
int clics = 0;


void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT);
    glPointSize(tam_px);
    glColor3f(r,g,b);
    glBegin( GL_LINE_STRIP );

    if( clics >= 2 )
    {
        int j;
        for( j = 0; j < clics; j++ )
        {
            glVertex2f( matrizPuntos[j][0], matrizPuntos[j][1] );
        }
    }

    glEnd();
    glFlush();

}
void mouse(int boton, int estado, int x, int y)
{
    if ( boton == GLUT_LEFT_BUTTON && estado == GLUT_DOWN ) // BOTON IZQ y el estado es presionado
    {
        clics++;
        matrizPuntos[i][0] = x;
        matrizPuntos[i][1] = y;
        i++;
    }
    glutPostRedisplay();
}


void miInicializacion()
{   glClearColor( 1.0, 1.0, 1.0,0);
    gluOrtho2D( 0, ancho, alto, 0 );
    glEnable(GL_POINT_SMOOTH);
}

int main(int argc, char **argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowPosition(100,100);
    glutInitWindowSize(ancho,alto);
    glutCreateWindow("Dibujo a mano alzada");

    miInicializacion();

    glClear(GL_COLOR_BUFFER_BIT);
    glutDisplayFunc(display);
    glutMouseFunc(mouse);

    glutMainLoop();
    return 0;
}



Versión 2:


#include <windows.h>
#include <C:\GLUT\include\GL\glut.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>

float r = 0.5, g = 0.5, b = 0.5;
int ancho = 600, alto=600;
int tam_px = 10;
int matrizPuntos[60000][2];
int i = 0;
int clics = 0;


void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT);
    glPointSize(tam_px);
    glColor3f(r,g,b);
    glBegin( GL_LINE_STRIP );

    if( i >= 2 )
    {
        int j;
        for( j = 0; j < i; j++ )
        {
            glVertex2f( matrizPuntos[j][0], matrizPuntos[j][1] );
        }
    }

    glEnd();
    glFlush();

}
void mouse( int x, int y)
{
    matrizPuntos[i][0] = x;
    matrizPuntos[i][1] = y;
    i++;
    //printf( "x: %d,   y: %d, iii:%d       ", x, y, i );
    glutPostRedisplay();
}


void miInicializacion()
{   glClearColor( 1.0, 1.0, 1.0,0);
    gluOrtho2D( 0, ancho, alto, 0 );
    glEnable(GL_POINT_SMOOTH);
}

int main(int argc, char **argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowPosition(100,100);
    glutInitWindowSize(ancho,alto);
    glutCreateWindow("Dibujo a mano alzada");

    miInicializacion();

    glClear(GL_COLOR_BUFFER_BIT);
    glutDisplayFunc(display);
    glutPassiveMotionFunc(mouse);

    glutMainLoop();
    return 0;
}

No hay comentarios.:

Publicar un comentario