************************************************************************                                              
*---------------------------------------------------------------------- *
* FICHERO ChangeLog                                                     *
*---------------------------------------------------------------------- *
*************************************************************************

15/sep/2000 Comienzo version inicial 0.1---------------------------------
            Investigacion sobre GTK+, GDK. Esta version no es funcional,
            pero en ella se han desarrollado ejemplos de manejo de GTK y
            GDK.
20/sep/2000 Version 0.1 CONGELADA. Ya se tienen investigados los elementos
            necesarios de GTK y GDK como para empezar a desarrollar el 
            software de CUBE.
            Un unico fichero: cube-virtual.c

22/sep/2000 Version 0.3.-------------------------------------------------
            Primera modularizacion.
            Modulos: cube-virtual.c : Programa principal
                     gtkutils.c: Funciones de utilidad gtk
            Eliminadas opciones del menu que no se van a utilizar         
24/sep/2000 Nuevo modulo video.c   : Modulo que gestiona los dibujos
            Nuevo modulo cube.c: Gestion de la estructura de datos del
              gusano.

25/sep/2000 Añadidos cuatro botones en la barra inferior, para desplazar
             el origen de coordenadas de pantalla.
26/sep/2000 Creadas las rutinas necesarias (cube_rotar y cube_rotar_art) para
             rotar el gusano a partir de una articulacion.
            Creados botones de articulacion
            Movimiento de las articulaciones
27/sep/2000 Flechas de incremento/decremento del angulo.
            CONGELADA

            Version 0.6 -------------------------------------------------
            -Inicializar del gusano a partir de datos que definen su
              estructura fisica (longitud de los segmentos, colocacion futabas..)
            -Boton de reset para llevar las articulaciones a su estado inicial  
            -Modificada rutina de dibujo de CUBE (en modulo video) para 
              dibujar gusanos de cualquier numero de articulaciones
            -Reestructurado modulo video
            -Reestructurado modulo cube
            -Reestructurado modulo principal: cube-virtual
            -Reestructurado modulo gtkutils
            -Solucionado bug  de rotacion (Cambio de signo al sobrepasar 90 grados)
            -Propagacion de movimiento tanto a derechas como a izquierdas
            -Flechas en el menu para desplazar a derechas o a izquierdas
            CONGELADA
            
            Version 0.8 -------------------------------------------------            
            -Nuevo modulo func.c para manejo de funciones
            -Implementado dibujo de funciones
            -Dibujo de la linea de tierra (eje x)
            
29/sep/2000 Nueva rutina cube_rotar_punto para girar un punto. La rutina
              cube_rotar_art es similar pero actualiza el valor de la articulacion
              extremo. Para los algoritmos es necesario calcular los puntos rotados
              sin cambiar el valor de la articulacion.
            Modificada rutina cube_rotar_art, que ahora llama a cube_rotar_punto  
            Añadida barra de botones inferior nº2
30/sep/2000 Añadida rutina video_set_func_draw para establecer la funcion matematica
            a dibujar.
01/oct/2000 -Añadido boton de informacion sobre articulacion
            -Añadida funcion cube_calcular_angulo() para calcular el angulo que  forma
              una articulacion con el eje x.
            -Añadida funcion cube_calcular_angulo_aprox() para calcular el angulo de
              aproximacion de un punto a la funcion de contorno activa, con respecto
              a un centro de giro.  
            -Funcion cube_ajustar_art para ajustar una articulacion a la funcion de
              contorno activa. Para el ajuste primero se calcula en angulo de 
              aproximacion y luego se aplica el algoritmo
            -Funcion cube_ajustar para ajustar el gusano desde la articulacion activa hacia
              la derecha
            -Boton "Ajustar" para ajustar cube a la funcion de contorno
            -Primera version del algoritmo de ajuste. Funciona bastante bien, aunque no con
             todas las funciones de contorno.
             VERSION CONGELADA
             
02/oct/2000 Version 1.0--------------------------------------------------------------------             
03/oct/2000 - Introducido boton para mostrar/no mostrar eje x
            - Introducido boton para mostrar/no mostrar cube
            - Introducido boton para mostrar/no mostrar funcion de contorno
            - Cambiado un poco el aspecto del interfaz
            - Botones para cambiar la funcion activa
            - modulo func: funciones para cambiar la amplitud
            - Botones para aumentar/disminuir la amplitud
            - modulo func: funciones para cambiar el periodo
            - Botones para aumentar/disminuir el periodo
            - Cambiada funcion de dibujo de funciones de contorno: en vez de puntos se dibujan
              lineas, lo que hace que se obtenga unos dibujos mejores
04/oct/2000 - Creada una funcion de onda: func_onda_sinusoidal() con los parametros independientes:
               Amplitud, long de onda, frecuencia y tiempo
            - Creada funcion de contorno F2: onda sinusoidal con una ventana que muestra solo el 
              lobulo positivo, que se desplaza con el parametro tiempo
            - ¡¡Descubierto el manejo de los potenciometros!!
            - Añadido potenciometro, con cuadro de dialogo que muestra la posicion  de la articulacion
              Solo para la articulacion 1. Se mueve muy bien.
            -Nuevo modulo calc.c para realizar calculos y operaciones con puntos 2D. Este modulo no 
             entiende de articulaciones de ni de gusanos. El modulo cube no entiende nada de puntos,
             solo de articulaciones
06/oct/2000 - Añadida funcion calc_angulo_ajuste al modulo calc para aplicar el algoritmo de ajuste
              a un punto respecto de un centro y devolver el angulo que hay que aplicar
            - Re-estructurado modulo cube y documentado
            - Funciona con diferentes longitudes de segmento, que se definen en la variable global
              long_seg del modulo cube.
            - Funcion cube_func_contorno_set para establecer la funcion de contorno activa en el 
              modulo cube
            - Eliminado el punto de entrada cube_entry del modulo cube. Las funciones de interfaz son
              llamadas directamente desde las funciones de retrollamada de los botones en el modulo
              cube-virtual.
            - Creada funcion cube_articulacion_get_pos() para leer la posicion de una articulacion
            - Movimiento de las articulaciones mediante un unico potenciometro. Solo se mueve la
              articulacion que esta activa. La posicion se refleja en un LCD
            - Funcion video_set_art_activa para establecer la articulacion activa en el modulo
              video, en vez de usar una variable global
            - Botones de eleccion del sentido de propagacion ya funcionan. Segun el sentido que se
              encuentre activo, el potenciometro actua moviendo el lado derecho de la articulacion
              activa o el lado izquierdo.  
            - VERSION CONGELADA    
            
20/oct/2000 -VERSION 1.2-------------------------------------------------------------------
            -Creados lcd's para visualizar las posiciones de todas las articulaciones en grados,
             asi como las coordenadas x,y
22/oct/2000 -El valor del angulo de la articulacion activa se imprime en su LCD correspondiente y 
             no solo en el lcd asociado al potenciomentro
            -El Valor de los angulos de las articulaciones se saca por todos los LCDS
            -Implementadas funciones cube_cola_set_xy() y cube_cola_get_xy()
23/oct/2000 -Implementados botones para mover cube arriba/abajo-izquierda/derecha
            -Implementada funcion cube_articulacion_get_xy() para obtener las coordenadas x,y
             de cada articulacion
            -Impresion en los LCD's de las coordenadas x,y
            -Modificada funcion cube_ajustar(), para que al aplicar el algoritmo de ajuste en la
             articulacion de la cola, se situe en la funcion de contorno.
            -Cuadro de dialogo de introduccion de la amplitud. Interfaz e implementacion
            -Cuadro de dialogo de introduccion de la longitud de onda. Interfaz e implementacion 
            -Cuadro de dialogo de introduccion del tiempo. Interfaz e implementacion
            -Cuadro de dialogo de introduccion de la frecuencia. Interfaz e implementacion
            -Creada funcion cube_error_get() para devolver el error de aproximacion. Esta funcion
             ha sustituido a cube_mostar_error() que imprimia el error en la pantalla.
            -Cambiado el algoritmo de ajuste. Ahora se realizan iteraciones sobre el angulo de
             aproximacion inicial, para que converja mas rapidamente
            -Modificada funcion cube_rotar() para incorporar la restriccion en los angulos de
             los futabas: angulo comprendido entre -90 y 90 grados. 
            -Creado e implementado boton de enganche entre cube y la funcion de contorno
24/oct/2000 -Creado interfaz para vector de offset, de sentido y lcd para mostrar el vector
             fisico. No implementado
25/oct/2000 -Nuevo modulo vectores.c, traido del programa cube_fisico 1.6.
            -Añadidas funciones vector_suma() y vector_producto() para sumar y multiplicar
             vectores
            -Mostrado el vector de posicion, calculado a partir del vector de offset y del
             vector de sentido.
            -Añadida funcion func_periodo_get() para obtener el periodo de la onda, a partir de
             los parametros actuales
            -Traido modulo gtkutils.c del programa cube_fisico 1.6
            -Implementado boton de play para reproducir movimiento de ondas. ¡Es alucinante!
            -Modificada funcion gtkutils_dialog_ok() del modulo gtkutils.c. Se ha añadido un 
             parametro para establecer o no la restriccion de foco de la nueva ventana
            -Eliminada funcion vector_posicion() del modulo vectores(). Esta funcion llamaba al
             modulo f4client.c y era necesaria la libreria cts. Es mejor dejar este modulo 
             independiente del puerto serie para poder portarlo a Windows
            VERSION CONGELADA.
            
            -VERSION 1.4--------------------------------------------------------------------
            -Creado modulo interface.c con todo el interfaz. El estado global se almacena en
             una estructura del tipo main_state_t
             
27/oct/2000 -Implementada funcion obtener_vector_fisico() que obtiene el vector angular corregido,
             listo para ser aplicado en cube-fisico
            -Implementado boton de grabacion, para grabar una secuencia fisica en un fichero .f4
            -Implementado un file-selector para introducir el nombre del fichero a generar
            VERSION CONGELADA.
            
01/abr/2001 Version 1.4.1
            -Cambiado color del fondo a blanco en vez de negro para que se
             puedan imprimir los screenshots mejor
            -Metido el About...            
                        
                      
