¡Enhorabuena!
Usted es el visitante número 4800 de FocoSolar,
así que le dejaremos ver TOTALMENTE GRATIS la página.
(precio habitual 9'99€ los 10:01 minutos)
(12 si eres sevillano)


    

Map position being updated

Longitude

Latitude
Hora local:          00:00:00

Tiempo de ejecucion: 00:00:00

Bienvenido al FocoSolar

Utilizando GoogleMaps, FocoSolar permite conocer dónde estaría el sol tomando como punto de partida el Meridiano Greenwich a las 12 (GMT) y siguiendo a la velocidad real con que el sol "se desplaza" alrededor de la tierra.

¿O eras de los que pensaban que el sol estaba fijo y la tierra rotaba?
Pues debes saber que la tierra es plana, mira cualquier mapa para comprobarlo.

A continuación unas pequeñas instrucciones, pero vaya, que jugando un poco lo sacas fácil.


Instrucciones

Nada más cargar, el mapa se centra sobre la longitud en la que se encuentra el sol (según mi algoritmo regulero) y en la latitud de la mejor ciudad del mundo: Málaga, España.

Podrás detener o reiniciar el movimiento del mapa simplemente pulsando Start/Stop. Debes saber que cuando paras y vuelves a arrancar, el mapa sigue por donde estaba... es decir, que habrá perdido el punto "auténtico" donde se encuentra el sol.

Para obtener la longitud actual del sol (me refiero a la coordenada de longitud, no a lo largo que es) pulsa sobre el botón Solar Focus.

Resumiendo, puedes parar en cualquier momento y volver a arrancar también. Pero si quieres irte a la posición del sol, arranca el movimiento y pulsa Solar Focus.

Puedes controlar el mapa arrastrando con el ratón y cambiar el zoom y todas esas cosas típicas.
Ah, siento haber puesto los botones en inglés, pero no hay ganas de ponerse a traducir el programita.


Acerca del creador

De dios no, del programador quiero decir..

Fernando Bravo Biehler es un tipo que se aburría una tarde de verano y, como no tenía suficientes cosas que hacer, pues se puso a perder el tiempo (vale, no mucho) con esto.
Su hija de 10 meses le echa de menos, pero no se lo puede decir todavía.

Ahora fuera de coña, espero que os guste. Mirad el código fuente, no tiene nada interesante.
Lo he hecho porque nunca había tocado JavaScript y porque me flipan los mapas de Google.


El algoritmo regulero

El algoritmo utilizado para conocer la posición del sol es extremadamente complejo. Sólo una portentosa mente como la mia podría haberlo ideado y ejecutado.

Para darle un toque de seriedad (ya sabéis, todo lo extranjero parece más molón) lo he llamado el algoritmo de Perry/Manson aunque los amigos lo llamamos el algoritmo regulero.

El modo de calcular la posición está basado en infinidad de parametros, como son la masa del sol y la tierra, la distancia entre ambas, la velocidad de rotación terrestre y la interacción gravitatoria de todo el sistema con su entorno y la famosa materia oscura (con la desconocida, no).

Despues de generar cienes y cienes de ecuaciones, se procede a despejarlas y reducirlas y, tras redondear la constante de Plank a 1, obtenemos la sorpendentemente simple ecuación final:

             longitud = 180 - 360 * hora / 24

Esta ecuación tiene tres características, su imprecisión, simplicidad e inutilidad... ¡así que es perfecta para mí!. Os la explico...

La longitud en los mapas de google de puede medir en grados que varían desde 180 (180º al este, por el pacífico o ahí) hasta los -180 (180º al oeste, por el pacífico o ahí... ¿me repito o qué?).

La longitud según el algoritmo regulero o de Perry/Manson establece que, a las 12 GMT, el sol está sobre el meridiano de Greenwich, que se encuentra en la longitud 0º. A partir de ahí el resto es fácil de comprender, si el sol tarda 24 horas en dar la vuelta y a las 24 está en medio... nos sale... ¡La ecuación de la recta!.

Yo creo que esto se merece un Príncipe de Asturias mínimo, ¿no?



Código fuente del programilla *

Ante todo, que quede claro que absolutamente NUNCA había visto ni tocado nada de JavaScript. Tampoco tenía ni idea de Html, así que supongo hay un montón de gilipolleces en el código.

¡Supongo que lo de antes era un disclaimer! (disclaimer = "¡ey, a mi no me mires!")


var map;
var updatePosition = true;
var offset = 0;
function load()
{
   if (GBrowserIsCompatible()) 
   {
      map = new GMap2(document.getElementById("map"));
      map.setCenter(new GLatLng(36.717748, -4.42005), 6, G_SATELLITE_MAP);
      map.addControl(new GLargeMapControl());
      map.addControl(new GMapTypeControl());

      window.setTimeout("onTimer()", 3000);
   }
}

function onTimer()
{
    if (updatePosition == true)
    {
        moveMap();
    } 

    refreshTextBoxes(); 
    window.setTimeout(onTimer, 100);
}

function refreshTextBoxes()

    var center = map.getCenter(); 

    document.getElementById("longitudeTextBox").value = center.lng().toFixed(5); 
    document.getElementById("latitudeTextBox").value = center.lat().toFixed(5);
}

function moveMap()

    var center;
    var hour; 
    var date; 
    var lng; 

    date = new Date(); 
    hour = date.getUTCHours() + 
        date.getUTCMinutes() / 60.0 + 
        date.getUTCSeconds() / 3600.0 + 
        date.getUTCMilliseconds() / 3600000.0; 

    lng = 180.0 - 360.0 * hour / 24.0 + offset; 

    center = map.getCenter(); 

    map.panTo(new GLatLng(center.lat(), lng));
}

function onStartStopButtonClicked()

    updatePosition = !updatePosition; 
    if (updatePosition) 
    { 
        var currentLng, expectedLng; 
        var hour; 
        var date; 

        date = new Date(); 
        hour = date.getUTCHours() + 
            date.getUTCMinutes() / 60.0 + 
            date.getUTCSeconds() / 3600.0 + 
            date.getUTCMilliseconds() / 3600000.0; 

        expectedLng = 180.0 - 360.0 * hour / 24.0; 
        currentLng = map.getCenter().lng(); 

        offset = currentLng - expectedLng; 
    } 

    document.getElementById("updatingCheckBox").checked = updatePosition;
}

function onGoToSolarFocus()

    offset = 0; 
    map.setZoom(6); 
    moveMap();
}

function onUpdatingCheckBoxClicked()

    onStartStopButtonClicked();
}

* El código fuente auténtico puede ser ligeramente distinto, mira el HTM mejor...