Movimientos Eventos

download Movimientos Eventos

of 13

Transcript of Movimientos Eventos

  • 7/23/2019 Movimientos Eventos

    1/13

    EVENTOS YMENS

  • 7/23/2019 Movimientos Eventos

    2/13

    Un eventoes algo que el usuariopuede hacer como por ejemplo

    maximizar una ventana, oprimir el

    botn izquierdo del mouse, o usar

    una determinada combinacin de

    teclas

  • 7/23/2019 Movimientos Eventos

    3/13

    EN OPENGL CON GLUT LE PERMITE AL

    USUARIO TRABAJAR CON LOS SIGUIENTES

    EVENTOS:

    glutMouseFunc();

    glutMotionFunc();

    glutkeyboardFunc();glutReshapeFunc();

    glutDisplayFunc();

    glutIdleFunc();

    SON LAS LLAMADAS callbacks O FUNCIONES

    CONTROLADORAS DE EVENTOS

  • 7/23/2019 Movimientos Eventos

    4/13

    A menudo queremos controlar lo que debe hacerse

    cuando el usuario oprime unos de los botones. Si

    deinimos lo siguiente en la uncin main de nuestro

    programa!

    glutMouseFunc(ControlMouse);

    "pen#$ entiende que cada vez que se oprima uno de

    los botones del mouse debe llamar a una rutinallamada %ontrol&ouse, que por supuesto tenemos

    que crear ' deinir nosotros mismos.

    EL MOUSE

    siguiente

  • 7/23/2019 Movimientos Eventos

    5/13

    SE HACE DE LA SIGUIENTE FORMA:

    // funcin de control de eentos con el !ouse

    oid ControlMouse(int boton" int estado" int #" int y)

    $% codigo &ue desea!os e'ecutar

    boton: es un entero que puede tomar los valores

    #$U()$*+()U(("-, #$U()&//$*)U(("- o#$U()0#1()U(("- seg2n el usuario ha'a oprimido el

    botn izquierdo, el de en medio o el derecho, respectivamente.

    estado: puede tomar los valores #$U()U3 o #$U()/"4-,

    seg2n si se ha oprimido5soltado el correspondiente botn.

    x e y: son las coordenadas reeridas a la ventana de

    visualizacin, no al mundo virtual, en las que se oprimi5solt

    el reerido botn.

  • 7/23/2019 Movimientos Eventos

    6/13

    $a uncin glutMotionFunc(ControlMoMouse);

    #lut llamar6 a %ontrol&ov&ouse a intervalos discretos, es decir,

    de tanto en tanto, mientras el mouse se est7 moviendo por la

    pantalla. Se deine as8!

    55 uncin de control de eventos de movimiento del mouse

    oid ControlMoMouse(*lsi+ei #" *lsi+ei y)

    $

    % codigo &ue se desea e'ecutar

    teniendo en cuenta que x e y son las coordenadas de pantalla

    por las que el mouse est6 pasando. As8 podr8amos usar esta

    uncin para indicar nuestra situacin en pantalla de la siguiente

    orma!void %ontrol&ov&ouse9#lsizei x, #lsizei ':;

    print93osicion del mouse en coordenadas de ventana! ? @

  • 7/23/2019 Movimientos Eventos

    7/13

    EL TECLADO

    *l control del teclado se realiza mediante!

    glut,eyboardFunc(Control-eclado);

    *sto lo aCadimos a nuestra uncin main ' entonces

    deinimos aparte la uncin de control propiamente dicha!

    55 uncin de control de eventos con el teclado

    oid Control-eclado(unsigned char key" int #" int y)

    $

    % codigo &ue desea!os e'ecutar

    siguiente

  • 7/23/2019 Movimientos Eventos

    8/13

    3odemos movernos dentro del mundo virtual, de una

    orma simple ' primitiva=

    3ara implementar este comportamiento, necesitamos

    deinir dos variables >3"S ' 3"S, que contienen

    nuestra posicin 9x, z: en el mundo.(an slo tendremos que incrementar5decrementar

    estas variables seg2n la tecla que el usuario oprima.

  • 7/23/2019 Movimientos Eventos

    9/13

    *l evento m6s importante que puede darse en nuestra

    ventana de visualizacin es un cambio de tamaCo, es decir un

    0eshape.D 3ara controlarlo debemos usar!

    D glutReshapeFunc(Control.entana);

    D $a uncin de control es!

    oid Control.entana(*si+ei 0" *si+ei h)

    $% codigo &ue desea!os e'ecutar

    CAMBIO DE TAMAO

    $os par6metros que llegan a la uncin se reieren al nuevoA-%1" 94idth, E: ' al nuevo A$(" 91eight, h: de la ventana

    tras ser redimensionada por el usuario.

    D

    /ebemos asegurarnos que la imagen no se distorsione. (odo

    esto depende de la aplicacin en concreto.

  • 7/23/2019 Movimientos Eventos

    10/13

  • 7/23/2019 Movimientos Eventos

    11/13

  • 7/23/2019 Movimientos Eventos

    12/13

  • 7/23/2019 Movimientos Eventos

    13/13