por Fernando Bravo Biehler
|
Longitude Latitude |
Hora local: 00:00:00
Tiempo de ejecucion: 00:00:00 |
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.
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.
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 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?
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...