miércoles, 11 de junio de 2008

La distancia entre dos puntos

Pasamos a sacarle partido a la cámara de infrarrojos del wiimote. Para empezar vamos a calcular la distancia (en pixeles) entre dos puntos, mas adelante usaremos esta información para saber lo lejos (o cerca) que nos encontramos de un objeto que disponga de dos emisores infrarrojos que están separados el uno del otro por una distancia conocida.

El primer paso, entonces, se trata en conocer la distancia entre estos dos puntos. Para verlo todo de formas mas gráfica he utilizado la extensión pygame y he tomado unas 'fotos' para contar los pasos seguidos.

Partimos de un momento 't', en el que leemos dos puntos en la cámara del mando, estos dos puntos, como indica la figura 1, son A y B

figura 1

De cada punto conocemos sus coordenadas, lo cual nos facilita enormemente el trabajo. A estas coordenadas las llamaremos (Xa, Ya) (Xb, Yb). Como los ejes X y Y son perpendiculares, trazamos dichos ejes atravesando nuestros puntos, obteniendo el resultado de la figura 2

figura 2

A la intersección de ambos ejes la denotaremos como C, con un poco de imaginación puede verse que la recta AB es la hipotenusa formada por los vértices ABC (figura 3).

figura 3

Recordando uno de los teoremas de Pitágoras sabemos que h2 = c2 + C2. (el dos indica cuadrado, a falta de Latex...)

Sólo nos faltaría saber las coordenadas de C, o bien la longitud de los lados AC y BC, algo que tenemos que extraer de la información disponible. Para conocer la distancia AC basta con restar la coordenada Xb a Xa, o siendo mas precisos, el valor absoluto de esta diferencia.

BC lo obtendremos por el mismo procedimiento, y será igual al valor absoluto de la diferencia de Ya e Yb

Ya disponemos de la distancia, en píxeles, de ambos puntos. El siguiente paso es utilizar esta información para saber la distancia a la que nos encontramos del objeto que tiene los emisores

NOTA: Me habría encantado utilizar Latex para las fórmulas, pero la solución que me pasó Javi parece no funcionar en linux

No hay comentarios: