Título: Error al coger coordenadas del ratón con FreeGlut Publicado por: kaostias en 29 Octubre 2013, 19:30 pm Buenas, estoy haciendo un proyecto 2d en FreeGlut con C++ y tengo un problema, cuando hago click en una zona, las coordenadas que coge no son las que debería, son de unos 10 píxeles más abajo, pero la cosa es que cuando redimensiono el área visible de la escena haciendo zoom, se descuadra la selección. Estoy calculándola mediante porcentajes, pero no doy con ello, mi código es este:
Código: void mouse(int button, int state, int x, int y) { Gracias. Título: Re: Error al coger coordenadas del ratón con FreeGlut Publicado por: eferion en 29 Octubre 2013, 19:40 pm y no tendrás por algún casual los tipos de las variables implicadas, verdad??
Código mmmm Hasta donde llego el ancho de la ventana debería calcularse como xRight-xLeft... ya que la suma puede darte de todo menos la anchura de la ventana. Por tanto, square_x debería calcularse así: Código Con la coordenada vertical te pasa lo mismo. Como no aparece el algoritmo, puede que también tengas problemas al calcular xLeft y yBot. Un saludo Título: Re: Error al coger coordenadas del ratón con FreeGlut Publicado por: kaostias en 29 Octubre 2013, 20:09 pm No, eso no funciona. De momento selecciona bien si no se redimensiona ni mueve, pero selecciona unos píxeles por debajo de donde debería, pero si se cambia eso, ya empieza la locura.
Título: Re: Error al coger coordenadas del ratón con FreeGlut Publicado por: eferion en 30 Octubre 2013, 07:09 am Vale, espera... una cosa... qué pinta ahí la constante WIDTH??
Código
se supone que x/WIDTH te va a dar el desplazamiento en porcentaje... eso lo multiplicas por la escala real y te debería dar las coordenadas reales, cierto?? También deberías mirar el tipo de las variables... si estás operando con int vas a tener problemas con los redondeos... sobretodo si las operaciones de división se ejecutan antes que las de producto. Título: Re: Error al coger coordenadas del ratón con FreeGlut Publicado por: kaostias en 30 Octubre 2013, 20:40 pm También es posible que el problema esté en la redimensión del área visible de la escena. He de decir que el área visible y el puerto de vista son proporcionales.
Código: void resize(int newWidth, int newHeight){ |