PFC – Resumen semana #3

Una semana más.  Esta semana ha sido de dura lucha la verdad.  Durante esta semana he estado intentando cambiar una parte importante del programa.  He sudado tinta y aun no lo he conseguido del todo, no digo más.  Hablo acerca de ello.

Existe una zona en el programa en la que se indica donde están colocados los wiimotes en la sala, y los ángulos de inclinación con respecto al suelo y la pared.  Es esta zona negra:

Captura pantalla principal programa

Dicha zona representa la habitación o sala en la que queremos posicionar el objeto.  Previamente le damos las medidas y el programa calcula el tamaño que ha de tener dicha zona negra.  En concreto esta sala de pruebas tiene 5 metros tanto de largo como de ancho y unos 3 de altura.

Pues bien, clicamos el botón “Editar distribución” y entramos en la fase de edición.  Ahora cuando pulsamos con el botón izquierdo del ratón sobre dicha zona negra (una PictureBox), se nos dibuja un circulo blanco que nos indica que hemos colocado un wiimote, y haríamos así para todos los wiimotes que tuvieramos en la sala.  Después de eso volvemos a clicar el botón “Editar distribución” para pasar a la fase de visualización.

En esta fase, si clicamos con el botón izquierdo en el circulo recién dibujado, se nos mostrará en la zona derecha el panel del que hablé en la entrada anterior.  Dicho panel nos servirá para darle las condiciones físicas de posición: La altura a la que está del suelo y los ángulos con respecto a la vertical y la horizontal.

Mientras vamos introduciendo los datos, en el PictureBox se nos va dibujando en azul un cuadrado, que nos muestra el área de visualización que tiene el wiimote que hemos colocado.  En la siguiente imagen se ve mejor:

Vision de un wiimote colocado a 90º respecto de la horizontal

Pues bien, esto es más o menos ya lo tenía realizado y funcionaba a la perfección.  El problema es las funciones que calculan el área azul, están pensadas solo para funcionar cuando el wiimote está colocado a 90º con respecto de la horizontal.  Lo hice así para poder comenzar con algo, para poder comprobar si funcionaban bien los cálculos que yo había previsto.  Además las fórmulas para calcular el área cuando el wiimote está a 90º son más sencillas, mientras que cuando cambia el ángulo, la cosa se complica mucho más, y por lo tanto lo dejé para más adelante.  Para ahora xD.

Tenía que hacer cambios en el programa, algunos sustanciales, para que pudiera representar los distintos ángulos, no solo cuando el wiimote está colocado a 90º.  Así que lo primero fue pensar en ver las fórmulas necesarias para calcular los cuatro puntos del polígono dado un angulo.  La verdad es que esto lo abandoné rápidamente porque la verdad es que era bastante complicado.  De hecho es todo tema de trigonometría, pero claro, por diferentes razones vi que el código se me iba a complicar, sobre todo cuando uno de esos puntos se sale de la zona negra o visible.

Así que pensé en otro acercamiento que me iba a ahorrar un poco de código.  Lo que pensé fue en rotar cada uno de los puntos del polígono con respecto al centro del circulo blanco.  Estuve buscando por internet para ver si alguien había hecho alguna función para hacer esto, y efectivamente lo encontré, y además en varias páginas distintas de ayuda.  Con lo cual intenté implementarlo en lo que yo ya tenía hecho.

Aquí vino lo complicado.  Tuve que hacer bastantes cambios en las funciones de dibujado, porque de la nueva forma, cada vez que introduzco los grados, tengo que calcular el area a 90º, para después rotarla hasta dejarla en los grados que ha indicado el usuario.  Bueno pues he tenido ahí 3 o 4 días de lucha buena, y alguno que otro de desesperación xD.  Tenía previsto tener esto listo en 3 días y al final llevo una semana y aún estoy retocando código, pero más o menos ya lo tengo dominado.  Ahora puedo hacer lo que veis:

Vision de un wiimote colocado a un ángulo distinto de 90º respecto de la horizontal

Ahora cuando le indico unos grados distintos a 90º con respecto de la horizontal, se ve reflejado en la zona negra.  Ya solo me queda retocar algunas cosas, eso cuando hay solo un wiimote.  Cuando coloco dos o más, aparecen otros problemas, pero bueno iré solucionándolos esta semana.  Y si lo soluciono rápido podré por fin ponerme con el tema de la calibración de wiimotes que se me está retrasando y tengo que entrar en este tema ya mismo.  La semana que viene otro poco más ;)

 

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s