Aller au contenu

Message HrzProtocol.SolarDate

Defined in hrz/protocol/scene/view_settings.proto.

Mean solar date and time, within an idealised year.

Fields

solar_time: float

Mean solar time, hours, [0, 24). This is clock time rather than sundial time: the Sun crosses the meridian at 12:00, give or take the equation of time (-14 to +16 minutes over the year). Where this time applies depends on at_prime_meridian.

at_prime_meridian: bool

When false, solar_time is the local mean solar time at the camera. The Sun does not move as the camera travels along a parallel.

When true, solar_time is the mean solar time at the prime meridian. The Sun is fixed relative to the Earth; moving the camera changes where it appears in the sky.

Union time_of_year

Where the Earth stands on its orbit, expressed either way. When neither is set, the Sun is placed as if solar_longitude was 0.

solar_longitude: float

λ, the true ecliptic longitude of the Sun, degrees, [0, 360), 0 = March equinox. Beware that it does not advance uniformly over the year, since the Earth moves faster around its perihelion. Use day_of_year to let the engine take care of this.

day_of_year: float

Days elapsed since the 1st of January at midnight, so 0 is the 1st of January. Fractional values are valid, and values outside of [0, 365.2422) wrap around.

solar_time is taken into account on top of this, so that the Sun keeps moving along its orbit while the time of day is animated.

The year is idealised: it lasts exactly one mean tropical year (365.2422 days) and the March equinox always falls on day 78.5, the 20th of March at midday. There are no leap years, and precession is ignored, as everywhere else in the Sun computations. Equinoxes and solstices therefore land within an hour of their average date over a leap cycle, and within a few hours of their date in any given year.