Foros del Web » Programando para Internet » Javascript »

JS Fase lunar Y estación del año

Estas en el tema de JS Fase lunar Y estación del año en el foro de Javascript en Foros del Web. A ver si alguien me puede ayudar, me gustaría incluir en una pagina que estoy haciendo de jardinería un JavaScript que indicase la fase lunar, ...
  #1 (permalink)  
Antiguo 24/11/2002, 18:41
Avatar de bhagat  
Fecha de Ingreso: julio-2002
Ubicación: Granada
Mensajes: 469
Antigüedad: 21 años, 9 meses
Puntos: 7
JS Fase lunar Y estación del año

A ver si alguien me puede ayudar, me gustaría incluir en una pagina que estoy haciendo de jardinería un JavaScript que indicase la fase lunar, y la estación del año.
Hay una pagina web donde lo he visto, pero funcionan con archivos .js que no estan incluidos en el codigo fuente.
la pagina es: www.lospenotes.com .
Agradezco las sugerencias, gracias de antemano

Última edición por bhagat; 24/11/2002 a las 18:54
  #2 (permalink)  
Antiguo 25/11/2002, 09:47
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Si me das una pista de los rangos de fecha de tus estaciones (que no son iguales a las mias) y una pista del algoritmo de las fases lunares, te ayudo a hacerlo en JS.

Saludos.
  #3 (permalink)  
Antiguo 25/11/2002, 12:53
Avatar de bhagat  
Fecha de Ingreso: julio-2002
Ubicación: Granada
Mensajes: 469
Antigüedad: 21 años, 9 meses
Puntos: 7
Kaopectate gracias, creo que Venezuela esta en el hemisferio norte = que España, y supongo que las estaciones seran las mismas:
- primavera 21 de Marzo- 20 de Junio
- verano 21 de Junio - 20 de Septiembre
- otoño 21 de Septiembre - 20 de Diciembre
- invierno 21 de Diciembre- 20 de Marzo.
Lo del Algorismo de las fases lunares solo se que cada 28 días se repite la luna Llena y por lo mismo cada fase , menguante, nueva y creciente. Si puedes ser mas concreto, si hacen falta horas exactas, etc, te lo agradezco muchisimo que me lo comuniques pues no se muy bien que necesitas.
De antemano recibe un saludo y agradecimientos por tu interes.
Un ciberabrazo.
  #4 (permalink)  
Antiguo 25/11/2002, 13:04
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Te voy a preparar un ejemplo corto sobre las estaciones (que no son las mismas que en Venezuela ya que acá no tenemos primavera ni otoño y en lo que respecta a lluvias, tenemos una temporada en la que probablemente no lloverá mucho y otra en la que probablemente tampoco).

En lo de las fases, voy a tomar una fecha base y preparo el algoritmo.

Ya estaré en contacto.
  #5 (permalink)  
Antiguo 25/11/2002, 13:56
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Para la estación prueba esto:

Código PHP:
<html>
 <
head>
  <
script language="JavaScript">

   function 
enRango(dHoymHoydInimInidFinmFin){
    
bRes true;
    
bRes bRes && ((mHoy mIni) || ((mHoy == mIni) && (dHoy >= dIni)));
    
bRes bRes && ((mHoy mFin) || ((mHoy == mFin) && (dHoy <= dFin)));
    return 
bRes;
   }

   function 
estacion(diames){
    if (
enRango(diames213206)) sRes "Primavera"; else
    if (
enRango(diames216209)) sRes "Verano";    else
    if (
enRango(diames2192012)) sRes "Otoño";    else
    
sRes "Invierno";
    return 
sRes;
   }

   function 
calcula(){
    var 
dia parseInt(document.frm.Dia.value);
    var 
mes parseInt(document.frm.Mes.value);
    return 
estacion(diames);
   }
  
</script>
 </head>
 <body>
  <form name="frm">
   Dia:
   <input type="text" name="Dia"><br>
   Mes:
   <input type="text" name="Mes"><br>
   Estación:
   <input type="text" name="Res" readonly><br>
   <input type="button" value="Calcular" onclick="javascript:document.frm.Res.value=calcula()">
  </form>
 </body>
</html> 
Saludos.
  #6 (permalink)  
Antiguo 25/11/2002, 13:59
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Bhagat, si me das la fecha de la última vez que hubo una luna llena, te hago el algoritmo a partir de ese mimento.

Espero...
  #7 (permalink)  
Antiguo 25/11/2002, 15:09
Avatar de bhagat  
Fecha de Ingreso: julio-2002
Ubicación: Granada
Mensajes: 469
Antigüedad: 21 años, 9 meses
Puntos: 7
Calendario Lunar 2.003

Gracias Kaopectate, acabo de encontrar un calendario Lunar del 2.003, y te voy a decir las fechas y horas de cada fase de Enero y Febrero (+ vale que sobre que no que falte):
ENERO
NUEVA día2 a las 20:24h
CRECIENTE día 10 a las13:16
LLENA día 18 a las 10:49
MENGUANTE día 25 a las 08:34
FEBRERO
NUEVA día 1 a las 10:49
CRECIENTE día 09 a las 11:12
LLENA día 16 a las 23:52
MENGUANTE día 23 a las 16:47

Gracias por el codigo html que me enviaste pero no me funciona o al menos no se como llenar los campos. Este si se como funciona me puede servir para otro apartado del web, pero lo que necesito es que el resultado se vea ya escrito en el documento como aparece en la pagina web que comento al principio del tema
www.lospenotes.com

Un saludo
  #8 (permalink)  
Antiguo 26/11/2002, 10:00
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Bhagat, no me he olvidado del problema, vamos a ver si ahora a mediodia puedo ofrecerte una primera aproximación.

Saludos.
  #9 (permalink)  
Antiguo 26/11/2002, 10:25
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Estaciones v2.0

Te reenvío el cálculo de la estación ajustado a lo que necesitas:

Código PHP:
<html>
 <
head>
  <
script language="JavaScript">

   function 
enRango(dHoymHoydInimInidFinmFin){
    
bRes true;
    
bRes bRes && ((mHoy mIni) || ((mHoy == mIni) && (dHoy >= dIni)));
    
bRes bRes && ((mHoy mFin) || ((mHoy == mFin) && (dHoy <= dFin)));
    return 
bRes;
   }

   function 
estacion(diames){
    if (
enRango(diames213206)) sRes "Primavera"; else
    if (
enRango(diames216209)) sRes "Verano";    else
    if (
enRango(diames2192012)) sRes "Otoño";    else
    
sRes "Invierno";
    return 
sRes;
   }

   function 
calcula(){
    var 
dia parseInt(document.frm.Dia.value);
    var 
mes parseInt(document.frm.Mes.value);
    return 
estacion(diames);
   }

   function 
calculaActual(){
    var 
Hoy = new Date();
    var 
dia Hoy.getDate();
    var 
mes Hoy.getMonth() + 1;
    return 
estacion(diames);
   }
  
</script>
 </head>
 <body>
  <form name="frm">
   <script language="JavaScript">
    document.write("<h1>Estación actual: " + calculaActual() + "</h1>");
   </script>
   Escriba un número de dia (Ej. 22) y un número de mes (Ej. 11) y presine el botón 

Calcular.<br><br>
   Dia:
   <input type="text" name="Dia"><br>
   Mes:
   <input type="text" name="Mes"><br>
   Estación:
   <input type="text" name="Res" readonly><br>
   <input type="button" value="Calcular" onclick="javascript:document.frm.Res.value=calcula()">
  </form>
 </body>
</html> 
Saludos.
  #10 (permalink)  
Antiguo 26/11/2002, 11:18
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Bhagat, el algoritmo de la fase lunar no es sencillo aunque ciertamente posible, te explico un poco:

Según los datos que me diste, las distancias entre las fases son las siguientes:

Nueva a creciente: 7d, 16h, 52m
Creciente a llena: 7d 21h, 33m
Llena a menguante: 6d, 21h, 45m
Menguante a nueva: 7d, 2h, 15m

Nueva a nueva: 29d, 14h, 25m (10.215 m)

Esto considerando que las relaciones se mantengan durante el año cosa de la que no estoy seguro.

Siendo asi, hay que tomar un dia base (por ejemplo 1/1/2002) y para calcular cualquier fecha a partir de esta hay que hacer una división entre el número de minutos transcurridos desde entonces entre 10.215 (período lunar).Eso nos da el número de ciclos transcurridos. Luego, con el resto de la división, hay que ver en que fase cae.

A esto hay que sumarle que se debe tener en cuenta los años bisiestos y que si los ciclos no son parejos durante el año, entonces el problema se complica.

Si tu quisieras poner una espécie "calculadora de fases lunares", vale la pena el cálculo, pero como lo que quieres es colocar la fase actual, creo que es mejor colocar en una matriz los rangos de los próximos cinco años para que al cargar la página se compare la fecha y hora con una serie de valores ya calculados.

¿Ventajas? Rapidez y sencillez básicamente.

¿Desventajas? Antes de cinco años tienes que actualizar la página (¿te importa?).

Espero tu feedback.
  #11 (permalink)  
Antiguo 26/11/2002, 12:09
Avatar de bhagat  
Fecha de Ingreso: julio-2002
Ubicación: Granada
Mensajes: 469
Antigüedad: 21 años, 9 meses
Puntos: 7
Kaopectate, estoy alucinado, no pensé que fuese tan complicado, lo vi en esta página que te digo y me pareció interesante, pero lo que no quiero que el script lleve mas tiempo de trabajo. que la web.
Si la calculadora de fases lunares es mas sencillo de configurar pues bien y si no, nada. tengo que comentarte que ninguno de los codigos que me mandaste funciona, pues al apretar el boton no aparece nada.(el document.write O.K.)
Estoy muy agradecido por tu ayuda pero no quiero ser un pesado, y no tengo demasiada prisa para este asunto, te lo digo porque no quiero parecer insistente ni exigente, nada mas lejos de mis intenciones.
SE ME OCURRE UNA IDEA ¿es posible que el resultado de un script como el de esta página "los penotes" se pueda ver en otra URL? me refiero a algo parecido a con las imágenes.
Un saludo de todo corazón, tengo mucha conexión con Venezuela, soy canario y una tia mia vive ahí, ya sabes "isleños" emigrados hace muchos años.
  #12 (permalink)  
Antiguo 26/11/2002, 14:28
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Hola Bhagat.

Estoy revisando el algoritmo que usan en la página que me indicaste y no difiere mucho de lo que te dije. Con una sola excepción, ellos redondean el ciclo lunar en 29 dias. Eso sin duda les debe traer impresiciones.

De cualquier modo, lo uses o no, yo voy a hacer mi propio algoritmo de fases lunares lo mas preciso que me sea posible. Me parece un bonito ejercicio.

Ya te contaré.

A propósito, tengo muy buenos amigos Canarios por acá.

Un abrazo.

NOTA: Me sorprende que no te funcione lo que envié ¿que navegador usas?
  #13 (permalink)  
Antiguo 26/11/2002, 14:34
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Ya veo lo que pasa.

En el código que envié, por alguna razón el foro me reemplazó la palabra "javascript" por las palabras "java" y "script" por separado. Por favor modifica la línea donde se define el tag <input type="button">, en la línea 47 y ponlo como JavaScript para que te funcione.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 20:53.