2010-04-09 27 views
5

Actualmente estoy usando this code para calcular las horas de amanecer/anochecer. (Para ser más precisos, estoy buscando el crepúsculo civil/el atardecer civil que se define como el tiempo cuando el sol está entre 0 ° y -6 ° de altitud). Como siguiente paso, me gustaría calcular los tiempos de finalización del amanecer y el atardecer. Creo que los cálculos deben ser muy similares.Cómo calcular los tiempos de amanecer/anochecer

Mi idea es que si quiero calcular la hora de inicio del amanecer (final del crepúsculo) para un lugar, solo calculo las horas del amanecer (atardecer) para un lugar 6 ° más al este (oeste).

¿Alguien puede confirmar esta suposición o estoy equivocado?

¡Gracias por responder!

- Ry

EDIT: pensó un poco más y llegó a la conclusión de que mi suposición es incorrecta. Moverse 6 ° Este es incorrecto, mover 6 ° ortogonal al borde claro/sombreado sería lo correcto. (Se vuelve obvio si imaginas que el eje de la Tierra no está inclinado 23.xx ° sino 90 ° - moverse hacia el este no cambiaría nada).

+0

aquí va la solución http://stackoverflow.com/questions/7064531/ sunrise-sunset-times-in-c/9425781 # 9425781 – Geetha

Respuesta

2

El código que enlaza usa una constante (90.833) en los métodos calcHourAngle*. Si mira these definitions de la salida/puesta del sol, notará esa misma constante 90.833 bajo Definiciones técnicas y Detalles computacionales. Un poco más abajo, bajo el crepúsculo civil, se usa la constante similar de 96. ¿Tal vez cambiar esa constante obtendría lo que está buscando?

+0

Gracias! ¡Eso es justo lo que estaba buscando! – ryyst

0

Esto funciona, pero solo si está bien suponer que la elevación es insignificante. Dependiendo de la precisión que necesites, alguien en la cima de una montaña experimentará el amanecer (o la puesta del sol) un poco antes (o después) de alguien al nivel del mar. Por ejemplo, si estás parado en el Monte Everest, el amanecer y el atardecer se desplazan unos 16 minutos, en relación con el nivel del mar (fuente: parte posterior de la envolvente matemática).

Tenga en cuenta que cuanto más extrema es su latitud, más rígidos son los contrastes entre días de verano más largos y noches de invierno más largas. Algunos lugares de la Tierra reciben luz solar las 24 horas del día durante el verano y están envueltos en la oscuridad las 24 horas de la noche. Estos lugares no tienen un "amanecer" o "anochecer" todos los días, aunque puedes elegir los tiempos a mitad de camino cuando el sol está más bajo y más alto en el cielo.

+0

Bueno, los algoritmos utilizados para calcular la posición del sol son muy inexactos en lugares sobre el círculo polar ártico, de todos modos, excluyo todos esos lugares en mi programa. La elevación tampoco es compatible a partir de ahora. ¿Pero crees que el algoritmo funciona para lugares como Nueva York (es decir, no lugares extremos)? – ryyst

+0

Si estás de acuerdo con eso, entonces sí, debería funcionar. –

+0

Re: Nueva York, probablemente depende de en qué piso estés; ;-) –

0

Esto no funciona. Una manera fácil de demostrar esto es que en los polos, la elevación del sol no cambia a medida que gira su cuerpo, por lo que ir al este o al oeste por 6 grados no afectará sus tiempos.

Si está más cerca del ecuador, este cálculo probablemente será más preciso, pero no creo que sea perfecto.

+0

@clahey: Creo que tu afirmación está desactivada. En los polos, hay una singularidad.No puedes mover N grados "este" desde el Polo Norte, porque no hay otro lugar adonde ir. Tampoco estamos hablando de girar en el lugar, estamos hablando de mover una distancia angular a través de un paralelo, que es una traducción diferente. –

+0

De acuerdo, camine 10 pasos desde el polo norte. 6 grados al este de usted es un paso hacia la izquierda. Notarás que la hora de la puesta del sol ha cambiado en una cantidad minúscula. Sin embargo, el comienzo y el final del anochecer civil todavía son días (¿semanas, meses?) Separados el uno del otro. – clahey

Cuestiones relacionadas