Computacion grafica

27
Ing. José Luis Peralta Luján COMPUTACION GRÁFICA Y VISUAL

description

diapos de computacion grafica y visual

Transcript of Computacion grafica

  • Ing. Jos Luis Peralta Lujn

    COMPUTACION GRFICA Y VISUAL

  • Ing. Jos Luis Peralta Lujn

    Traslacin

  • Ing. Jos Luis Peralta Lujn

    x

    y

    z

    // Trasladar 10 unidades hacia arribaglTranslatef (0.0f, 10.0f, 0.0f);

    // Dibuja el cuboglutSolidCube (10.0f);

    x

    y

    z

    Para construir una matriz de traslacin:void glTranslatef (GLfloat x, GLfloat y, GLfloat z)

  • Ing. Jos Luis Peralta Lujn

    Rotacin

  • Ing. Jos Luis Peralta Lujn

    x

    y

    z

    Para construir una matriz de rotacin:void glRotatef (GLfloat ang, GLfloat x, GLfloat y, GLfloat z)

    // Rotar 45 grados en el eje yglRotatef (45.0f, 0.0f, 1.0f, 0.0f);

    // Dibuja el cuboglutSolidCube (10.0f);

    x

    y

    z

  • Ing. Jos Luis Peralta Lujn

    Escalado

  • Ing. Jos Luis Peralta Lujn

    x

    y

    z

    Para construir una matriz de escalado:void glScalef (GLfloat x, GLfloat y, GLfloat z)

    // Escalar el doble en verticalglScalef (1.0f, 2.0f, 1.0f);

    // Dibuja el cuboglutSolidCube (10.0f);

    x

    y

    z

  • Ing. Jos Luis Peralta Lujn

    Orden de las Transformaciones

  • Ing. Jos Luis Peralta Lujn

  • Ing. Jos Luis Peralta Lujn

    Ejemplo

  • Ing. Jos Luis Peralta Lujn

  • Ing. Jos Luis Peralta Lujn

  • Ing. Jos Luis Peralta Lujn

  • Ing. Jos Luis Peralta Lujn

    Ejemplo con OpenGL

  • Ing. Jos Luis Peralta Lujn

  • Ing. Jos Luis Peralta Lujn

    glRotatef(45,0,0,1);

    glTranslatef(10,0,0);

    glRectf(-5,-5,5,5);

    x

    y

    x'y'

    =

    100001000021/21/0021/21/

    M

    x

    yx'

    y'

    P

    =

    ==

    10

    25210

    105

    5

    10000100

    210/021/21/210/021/21/

    PMP

    =

    =

    10000100

    210/021/21/210/021/21/

    100001000010

    10001

    MM

    x

    yx'

    y'

    //Segunda Transformacin que se aplica

    //Primera Transformacin que se aplica

  • Ing. Jos Luis Peralta Lujn

    Otro Ejemplo con OpenGL

  • Ing. Jos Luis Peralta Lujn

  • Ing. Jos Luis Peralta Lujn

    Funciones de Matrices

  • Ing. Jos Luis Peralta Lujn

    glLoadIdentity(void)

    glLoadMatrix{fd}(cont TYPE *m)

    glMultMatrix{fd}(cont TYPE *m)

    =

    161284

    151173

    141062

    13951

    mmmm

    mmmm

    mmmm

    mmmm

    M

  • Ing. Jos Luis Peralta Lujn

    glMatrixMode(GL_MODELVIEW);glLoadIdentity();glMultMatrixf(M1);glMultMatrixf(M2);glMultMatrixf(M3); Se aplica al vector v:

    M1M2M3v = [M1[M2[M3v]]]

    Nota: en realidad se aplica: [M1M2M3]v

  • Ing. Jos Luis Peralta Lujn

    Reiniciar la Matriz de Modelado

  • Ing. Jos Luis Peralta Lujn

    Si quisiramos obtener esta escena, no podemos hacer esto

    // Sube 10 unidades en yglTranslatef (0.0f, 10.0f, 0.0f);

    // Dibuja el primer cuboglutSolidCube (1.0f);

    // Mueve 10 unidades en xglTranslatef (10.0f, 0.0f, 0.0f);

    // Dibuja el segundo cuboglutSolidCube (1.0f);

    porque obtendramos esto:

    x

    y

    z

    10

    10

    x

    y

    z

    10

    10

  • Ing. Jos Luis Peralta Lujn

    Necesitamos una forma de resetear la matriz de modeladovoid glLoadIdentity()

    El cdigo correcto sera:// Inicializa la matriz del modeladorglMatrixMode (GL_MODELVIEW);glLoadIdentity();// Sube 10 unidades en yglTranslatef (0.0f, 10.0f, 0.0f);// Dibuja el primer cuboglutSolidCube (1.0f);// Reinicia de nuevo la matrizglLoadIdentity();// Mueve 10 unidades en xglTranslatef (10.0f, 0.0f, 0.0f);// Dibuja el segundo cuboglutSolidCube (1.0f);

    x

    y

    z

    10

    10

  • Ing. Jos Luis Peralta Lujn

    Pila de Matrices

  • Ing. Jos Luis Peralta Lujn

    No siempre es deseable reiniciar por completo la matrizde modelado

    A veces es preferible querer almacenar la matriz actual, yvolverla a recuperar ms adelante

    OpenGL mantiene una pila de matrices

    Para conocer la profundidad mxima de la pila:glGet(GL_MAX_MODELVIEW_STACK_DEPTH)

  • Ing. Jos Luis Peralta Lujn

    glPushMatrix(void)

    glPopMatrix(void)