JcLunar, nuevo software de producción nacional [Actualizado]

JcLunar es un software que permite conocer la fase lunar de un dia calendario solar cualquiera  (que es el comun, el que todos conocemos) ademas permite conocer en que dia se encuentra la fase.

Este programa nacio ayer cuando un amigo que tiene por entretenimiento pescar me pidio que le buscara el calendario lunar de este año, le comente que si queria le podia hacer un programa que calculara la fase de la luna para cualquier fecha de cualquier año y asi no tendria que buscar eso todos los años, a el le encanto la idea asi que anoche me puse manos a la obra.

El software esta desarrollado en Java y se puede abrir con una maquina virtual version 1.6.5 en adelante o (JRE 6u50 que es lo mismo), esta siendo desarrollado usando el IDE Netbeans.

Por el momento esta bastente sencillo, de hecho tengo que implementarle que muestre las lunas anteriores a diciembre del 2011 el fin de semana me encargare de eso y ademas quiero agregarle informacion sobre las mareas pero para eso tengo que estudiar un poquito 🙂 .

Tiene licencia GPL v2.0 y como todos saben java es multiplataforma asi que es independiente del sistema operativo, para los que usan debian 7 la maquina virtual viene en los repos en el synaptic ponen openjre y enseguida aparece, sin mas preambulo aqui les dejo los link de descarga uno es el programa como tal y el otro es la carpeta que genera el Netbeans con los codigos fuente.

Ya se le corrigio el error en la entrada de fechas, ahora los link son de la version 0.11

                                                    JcLunar0.11 ejecutable

                                                           JcLunar0.11

¿Te resultó interesante? Compártelo ...



bosito7

Publicado por bosito7

http://gutl.jovenclub.cu » Forma parte de GUTL desde el 19 diciembre, 2012. Soy un investigador apasionado de Machine Learning / Deep Learning. Me encanta aplicar Inteligencia Artificial en áreas que mejoran significativamente la calidad de vida del ser humano, como la salud y la agricultura. Amante de GNU/Linux y el Software Libre en general.

Este artículo tiene 35 comentarios

  1. Brother
    no es por na pero en Debian 7, en el escritorio kde ya viene un plasmoid que hace esto y que tiene codigo abierto, sería bueno que le echaras una ojeada y por que no, que lo mejores poniendo lo de las mareas. El plasmoid te muestra la luna tal y como debes verla en ese momento en el cielo (si es de noche).

    • Si yo ya lo sabia, lo que pasa es que mi amigo usa Windows asi que esa opcion no era viable, ademas al hacerlo en java SE se puede migrar a java ME o sea para moviles, ya se que no estoy inventado la rueda, de todas maneras gracias por la idea Salu2

    • Brother
      En el código veo que haces mal el calculo de los dias al no tener en cuenta los años bisiestos, en Java y en todos los lenguajes que conozco hay una función que debe ser así:
      ddias=Fecha(requerida)-Fecha(referencia);
      Esta función te devuelve el numero de días para atras y para alante, búscala que es mejor que ponerse a programar todo de 0.
      Por otra parte, le echaste una ojeada al plasmoid de la luna de kde? Es realmente interesante y si le puedes añadir lo de las mareas mejor todavia.

      • En la cuenta si se tienen en cuenta los biciestos pongo de nuevo la formula para aclarar

        ddiff=(annobuscar – 2012)*365 + (int)((annobuscar-2012)/4)+1 + TMP + diabuscar – 9 ;

        donde TMP es la suma de los dias de cada mes donde febrero es 28 pero en la linea (int)((annobuscar-2012)/4)+1 se calculan los años biciestos que han pasado desde el 2012 y suma uno pq 2012 es biciesto, de todas maneras desconocia la funcion que me dices la tendre en cuenta la revisare luego si tienes mas informacion de ella seria de ayuda, a que clase pertenece.

        • En java ni idea pero en C++ viene por defecto al invocar las clases usuales que tienes que invocar normalmente, de hecho nunca me he preocupado por averiguar de donde viene, pero en Java tiene que ser igual.

        • De todas maneras con las funciones del dia juliano puede hacer los calculos que quieras pues convierte cualquier fecha en un numero y viceversa.
          Están un poco largas para ponerlas aquí, dime tu correo para enviarte todo eso.

        • En java, el util, creo que viene una función llamada Date(función, jeje, que pythonico).
          import java.util.Date
          o algo de eso, en Python, es con datetime.datetime, quedaria algo así:
          import datetime
          now = datetime.datetime.now()
          diff_date = now – datetime.datetime(year, month, day)

  2. Ideas como estas son bien recibidas, siempre y cuando sean aplicaciones libres y multiplataforma. ¡Felicidades y gracias!

  3. Controladle las fechas incorrectas !!!
    Menos mal que está echo en Java , pues si es uno de mis programas echos en C# al ponerle una fecha incorrecta: «X-Programa ha detectado un problema y debe cerrarse » :@

    • JEJEJEEJE, me he reido bastante con tu comentario, por condiciones ajenas a mi use C# en mi epoca de estudiante y durante mi tesis y no soy un especialista en lenguajes de programacion pero la verdad me gusto el lenguaje y las librerias me parecen muy buenas, lastima que sea tan restictivo ;( , por eso estoy trabajando con java, con el cual me va bastante bien y lo mejor de todo es la multiplataforma sin necesidad de recompilar 🙂 . Salu2

  4. Bosito7:

    Envíame al privado los datos necesarios para agregarlo a REPOGUTL.

    Saludos,

    • @Delio muchas gracias, por querer incluir este humilde aporte a REPOGUTL hoy en la noche te mando los datos desde casa y te mando la ultima version del software en la que arregle algunos errores la cual tambien subire a este sitio. Salu2

  5. oigan, probé el programa es cuestión, me permitió agregar, en días, el 0 y números negativos… revisen bien eso..

    • @Kakashi, si lees detenidamente el articulo te daras cuenta que tengo en conocimiento el error que dices, de todas maneras muchas gracias por descargar y probar el programa, el fin de semana arregle ese error tengo que subir los arreglos pero antes quiero hacerle otras cositas por ejemplo que se pueda determinar la luna para fechas anteriores a enero del 2012 (para saber que luna habia el dia en que naci 🙂 o cosas por el estilo) tambien tengo en mente poner un calendario del mes completo en el que el usuario entro la fecha que para eso deje el espacio vacio que se ve en la parte inferior del programa. Una vez mas gracias no solo a ti sino tambien a los demas que lo han descargado y lo han probado, de eso se trata la comunidad, Salu2

  6. yo ni soy pescador ni sembrador de plátanos pero sí probador de todo, bueno, CASI todo, jaja, y la idea está buena.
    perfeccionala y vuélvela a sacar…
    una sugerencia: si pudieras incluirle gráficos para que se vean las lunas, quedaría mejor; de esa forma, no hay que ir a cada día, sino que puedes ver la semana o más días…. y ya anticipas cuándo será el próximo cambio.. jajaj
    nos vemos

    saludos, y sigue trabajando

  7. Oe Paco, le saque una versioncilla en python. Aún esta en cli, deja ver si el fin le hago una interfaz en Qt. Tienes algun mail nacional, que el de mi curro no tiene salida internacional.

          • Jode, que si, Galdalf que pesao eres! Que te he entendío.:-D.
            Por cierto, hablando del plasmoide, usan un algoritmo satánico ahí que calcula la posición de la luna dada la fecha, y luego calcula la fase en dependencia de esa posición.

          • Ese mismo, pero con la posicion de la luna se puede sacar además la marea. En fin que este plasmoide tiene de sobra para mejorar, pero si podemos sacar ese algoritmo e incorporarlo a nuestro jclunar sería más provechoso.

          • Por optimizar pongo un ejemplo:
            en el código buscan el dia juliano de la fecha actual de la siguiente forma
            uint lun = 0;
            time_t last_new = 0;
            time_t next_new = 0;

            do {
            double JDE = moonphasebylunation(lun, 0);
            last_new = next_new;
            next_new = JDtoDate(JDE, 0);
            lun++;
            } while (next_new < time);

            Evidentemente esto es fuerza bruta y se pudiera usar una busqueda binaria con incremento adaptativo.
            si quieren el código completo lo publico aquí o diganme a donde se los mando.

          • @BishopWolf segun lo que he estado estudiando la marea no solo depende de la Luna sino tambien del mes, de la hora de cada dia, es un poquito ,mas complicado pero es solo estudiar bien y sacar el ciclo. Salu2

          • @bosito7: mandame un mail a alex @@ cphr.edu.cu y te mando el source del plasmoid en caso que no lo tengas

    • Yo te escribi una vez desde mi correo de todas manerar te mando un correo para que tengas la direccion. Salu2 y Gracias por el port a Python.

      • Tigre, que ya cambié de curro :). Mi anterior mail lo puedes eliminar. Este es el de ahora

        ozkar (at) elechol (dot) une (dot) cu

  8. para los que me estan escribiendo al correo que puse con el codigo fuente, por motivos ajenos a mi no puedo revisar ese mail por el momento, por favor escribanme a con copia a co8cv[@arroba@]frcuba.co.cu que es el que puedo revisar en estos momentos un saludo y gracias por el apoyo y por contribuir con sus ideas y comentarios. Salu2

  9. Que bueno yo ando buscando algo similar para implementarlo en mi conky, y así tener algo similar al plasmoide, le echaré un vistazo a tu código y espero me sirva de ayuda o al menos de referencia.

Los comentarios están cerrados.