sábado, 1 de enero de 2011

Novedades y correcciones

Tras el parón navideño, he comenzado a modificar varias cosas en el proyecto. He estado modificando la interfaz, ahora la ventana contendrá 2 pestañas, una para las gráficas de velocidad, RPM y aceleración y otra pestaña para la telemetría.
Además estas gráficas las diseñaré desde 0, ya que las que diseñé con la librería JFreeChart tienen el problema de que no se podía modificar la variable del eje X, e interesa poder modificar ese eje para representar la distancia desde la salida en él.

Por otra parte, la idea que comenté en la entrada anterior no era correcta, ya que lo correcto es calcular el radio de curvatura para ver lo abierta o cerrada que es una curva. Para ello emplearé fórmulas matemáticas de Geometría, tales como la fórmula para calcular una circunferencia dados 3 puntos. Imaginando que estos 3 puntos son A,B y C ésto consistiría en calcular la mediatriz entre los puntos AB y también BC. El punto dónde se corten las mediatrices será el centro de la circunferencia, y sabiendo el centro ya si se podrá calcular el radio (y por tanto sabremos la curvatura, a más radio será mas abierta).

También, como era de esperar, me han surgido nuevos problemas en la interfaz:
- El gráfico de telemetría aparece también en la otra solapa de gráficas por algún problema de refresco.
-Tengo que tomar una decisión sobre qué hacer cuándo la gráfica de velocidad (y de RPM y aceleración) lleguen al límite derecho del panel cuando lo represento. Lo ideal (pero que no se como implementarlo de momento), sería que se desplazase dinámicamente tal y como sucedía con la librería JFreeChart. También he pensado que otra solución sería que cuándo llegue al borde del panel, comience a pintar de nuevo desde el principio, en el borde izquierdo. Y otra posible solución sería que fuese scrollable (algo parecido a la idea que tenía para representar el mapa, pero que no funcionaba también por problemas de refresco).


Además de estas correcciones, también tengo que comprobar como están espaciados los sensores del coche, ya que parece ser que no parten todos desde el mismo punto.

Saludos.

3 comentarios:

  1. hola, la verdad es que me está costando avanzar, principalmente por no tener las ideas claras y tampoco poder dedicarle el tiempo necesario al estar cerca febrero, con sus respectivos exámenes. Intentaré pasarme por tutoría el lunes, que necesito bastante orientación.
    Solo hacen aparecer problemas con la interfaz gráfica, no consigo resolver el problema de que se solapen los contenidos de los JTabbedPane (las pestañas) ni tampoco conseguir paneles autoscrollables que se ajusten al pintar dentro gráficas. Es bastante desmotivador querer avanzar y no poder.
    Sobre la parte de geometría, si tengo las ideas más claras sobre cómo calcular el radio de una curva. Tengo pensado lo siguiente:

    1º Calcular 3 puntos (A,B,C) de la circunferencia. Esto lo haría tomando como origen el (0,0) que sería el punto dónde se encuentra el coche. La coordenada x e y de cada punto la puedo obtener fácilmente aplicando coordendas polares a la distancias obtenidas por 3 sensores (S11,S14,S16 en caso de curva hacia la izquierda ó S7 , S4, S2 en caso de curva a la derecha).

    2ºCalcular las rectas mediatrices de AB y BC. En este paso aplicaría la fórmula sqrt( (x-x1)^2 + (y-y1)^2 ) = sqrt( (x-x2)^2 + (y-y2)^2 ). En este paso no tengo claro cómo almacenar las rectas resultantes en Java, básicamente habría que reordenar la ecuación para que tenga la forma y =mx (así ya sería tan fácil de representar como una función) , pero de momento no se que algoritmo usar que haga esto.

    4º Resolver el sistema de 2 ecuaciones con 2 incógnitas (que no tienen por qué ser enteras, pueden pertenecer al conjunto de reales) dado por las 2 ecuaciones de las mediatrices. En este punto supongo que habrá que aplicar algún método numérico para resolver la x y la y (que sería el centro de la circunferencia que pasa por A,B,C) o aplicar el método de sustitución de álgebra elemental. Este paso tampoco tengo claro cómo implementarlo. Hacerlo en papel, sin embargo, si sería trivial.

    5º Calcular la distancia euclídea desde el punto resultante del sistema de ecuaciones y el punto A, B ó C. Dicha distancia sería el radio buscado.

    ¿Es correcto mi procedimiento, o hay alguna forma más simple de calcular el punto del centro?

    ResponderEliminar
  2. Me autorespondo a una de las dudas que tenía, he pensado otra forma de calcular las rectas mediatrices, sin utilizar la fórmula que puse en el paso 2 en mi comentario anterior. Esta otra forma sería sumar 90º a la pendiente de la recta AB, así se tendría la pendiente de la perpendicular, y como también tengo el punto medio de AB, sólo tengo que aplicar la fórmula punto-pendiente (y-y0=m(x-x0)) para tener la ecuación de la recta mediatriz. Esta recta si sabría tratarla, consistiría en almacenar la pendiente y el punto.
    Después sería aplicar lo mismo para la mediatriz BC. Y ahora el problema sería resolver el sistema de 2 ecuaciones con 2 incógnitas (al final tendré un sistema del tipo Y - aX = c ; Y -bX = d )... creo que quizá se podría aplicar Cramer ,ya que se trata de un sistema compatible determinado, al menos en teoría debería serlo, ya que las rectas se deben de cruzar en un único punto.

    ResponderEliminar