movimientos eventos
TRANSCRIPT
-
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