Introducción
tl; dr
Salida continua de la distancia actual de la Tierra al Sol.
Simplificado, la órbita de la Tierra alrededor del Sol es una elipse. Entonces, la distancia real entre ambos está cambiando constantemente. Esta distancia se puede calcular para cualquier día usando esta fórmula :
La ecuación se puede dividir en las siguientes partes 2 :
1
representa 1 UA (unidad astronómica), igual149,597,870.691 km
0.01672
es la excentricidad orbital entre la Tierra y el Solcos
es, por supuesto, la función coseno, pero con argumentos en grados en lugar de radianes0.9856
es 360 ° / 365.256363 días , una rotación completa en un año, donde365.256363
es la duración de un año sideral, en días solares mediosday
es el dia del año[1-365]
4
representa el desplazamiento del perihelio , que es entre el 4 y el 6 de enero
La fórmula lleva todo un día, pero para este desafío, una salida continua, debe ser más preciso; o no pasará mucho hasta el día siguiente. Simplemente agregue el porcentaje del tiempo pasado al día actual, como 1 :
day + (h * 3600 + m * 60 + s) / 864 / 100
Algunos ejemplos:
- 1 de enero, 23:59:59
1.99998842592593
- 1 de enero, 18:00:00
1.75
- 1 de enero, 12:00:00
1.50
- 1 de enero, 06:00:00
1.25
Entrada
Este desafío no tiene aportes.
Si su idioma no puede obtener la hora actual, puede obtenerla como entrada para su programa. Las entradas válidas son marcas de tiempo o cadenas completas de fecha y hora que se adaptan mejor al idioma. No está permitido pasar el día actual solo (como el 5
5 de enero o 5.25
el mismo día a las 6 en punto).
Salida
Salida de la distancia actual de la Tierra al Sol:
- Salida del valor en
km
. - Actualice el valor al menos cada segundo .
Salida de ejemplo:
152098342
Si no aumenta su número de bytes, también puede imprimir bastante el resultado:
152,098,342
152,098,342 km
Requisitos
- Puedes escribir un programa o una función. Si es una función anónima, incluya un ejemplo de cómo invocarla.
- Este es el código de golf, por lo que la respuesta más corta en bytes gana.
- Las lagunas estándar no están permitidas.
Implementación de ejemplo
He preparado un ejemplo de implementación en JavaScript. No es competitivo ni golfista.
// dayOfYear from http://stackoverflow.com/a/8620357/1456376
Date.prototype.dayOfYear = function() {
var j1= new Date(this);
j1.setMonth(0, 0);
return Math.round((this-j1)/8.64e7);
}
// vars
var e = document.getElementById('view'),
au = 149597870.691,
deg2rad = Math.PI/180,
date = now = value = null;
// actual logic
function calculate() {
date = new Date();
now = date.dayOfYear() + (date.getHours() * 3600 + date.getMinutes() * 60 + date.getSeconds()) / 864 / 100;
value = 1 - 0.01672 * Math.cos(deg2rad * 0.9856 * (now - 4));
// supported in Firefox and Chrome, unfortunately not in Safari
e.innerHTML = Math.round(value * au).toLocaleString('en-US') + ' km';
setTimeout(calculate, 1000);
}
// let's do this
calculate();
<div id="view"></div>
1 Para no aumentar injustificadamente la complejidad, no tiene que convertir su hora local a UTC. Si usa UTC, agregue una nota a su respuesta.
2 Para más detalles, consulte " Distancia entre la Tierra y el Sol en un día determinado del año " en Física
Math.cos
usa radianes. Y dado que esta fórmula parece muy aproximada, tendrá que tener claro cómo deben verificarse las respuestas.