The position of the Sun in the sky varies continually during the day and also changes seasonally throughout the year. Sun position is also very location-dependant, so it is critical that you know the latitude and longitude of your development site before you begin any calculations.
Annual sun path.
Hourly sun path.
Despite our fundamental knowledge of solar position (experiencing it every day), calculating it at any specific date and time is not a trivial exercise. The off-axis rotation of the Earth and its elliptical orbit around the Sun add significant complexity to the equations required. For more information on this, see the Seasonal Variation topic.
Whilst an accurate manual calculation method is provided on this site, it is often much simpler and far quicker to read Sun positions directly from a table or a sun-path diagram. Such tables and diagrams are readily available for a range of locations.
For those interested, you can download the SolarTool from this site and use it to generate both accurate sun positions and sun-path diagrams. In addition, you can use the on-line Solar Position Calculator to obtain the position at a specific time to as 1/2 hourly values throughout the day.
Solar Azimuth and Altitude
The position of the sun is generally given as an azimuth and altitude angle:
- Azimuth represents the horizontal angle of the sun relative to true north. This angle is always positive in a clockwise direction from north when viewed from above, and is usually given in the range –180° < azi < 180°.
- Altitude represents the vertical angle the sun makes with the horizontal ground plane. It is given as an angle in the range 0° < alt < 90°.
Local and Solar Time
In most locations, there will normally be a difference between solar and local time. Solar time is determined by the position of the Sun. At noon it is directly overhead, with sunrise and sunset occurring at symmetrical times either side of noon. Local (or clock) time is determined by the local time zone and is taken at a reference longitude. For example, the local time zone for Perth is taken at a longitude of 120° (in the middle of Western Australia). The longitude of Perth, however, is 116°.
For each degree of difference in longitude between the actual and reference, there is a 4 minute time difference. Thus, to convert solar time to local time, use the following formula:
The reference longitude (Longituderef) refers to the longitude at which the time-zone is calculated. If thisw is not known, you can easily work it out from the time zone hourly offset. This is given as the decimal hour of the time zone offset multiplied by 15 degrees (TZ * 15). Thus, a time zone of +9.5 hours would have a reference longitude of 142.5deg (9.5 * 15). Similarly, -5.0 hours would be 76deg.
Positional Characteristics
The most important characteristic of solar position is its seasonal variation. During summer in the southern hemisphere, the Sun rises slightly south of east and sets slightly south of west. In the northern hemisphere it rises slightly north of east and sets slightly north of west. In winter it rises slightly north of east and sets slightly north of west (again, opposite in the northern hemisphere).
In both hemispheres the Sun rises earlier and sets later in summer than in winter. The degree of this effect is greater the closer the site is to either pole.
Sun-Path Selector
The following stereographic sun-path diagram clearly illustrates this pattern. For details on how to read these diagrams, see the sun-path diagram topic. Use the selector below the diagram to look at the characteristic patterns at a range of different latitudes. Notice the significant angular spread of the sun-path at higher latitudes.
Important Dates
The aim of good shading design is to utilise the cyclical movement of the Sun through the sky to best advantage - usually for complete exclusion in summer and maximum exposure in winter. Given this cyclical nature, there are four important dates to remember when considering solar position:
| NAME | Sth.Hem. | Nth.Hem. | DESCRIPTION |
|---|---|---|---|
| Summer Solstice | 22 Dec. | 22 Jun. | Sun at its highest noon altitude |
| Autumn Equinox | 21 Mar. | 21 Sep. | Sun rises due east, sets due west |
| Winter Solstice | 21 Jun. | 21 Dec. | Sun at its lowest noon altitude |
| Spring Equinox | 21 Sep. | 21 Mar. | Sun rises due east, sets due west |
The altitude of the noon sun at the equinox is determined by the latitude of the site. At noon on the solstices, the altitude of the Sun is given as:
Where the vertical lines around the |latitude| denote its absolute value (ie: non-negative).
As a result, it is possible to represent the seasonal noon maximum and minimum altitudes as a function solely of site latitude. This is illustrated in Figure 6 below as a dynamic Flash animation. If you drag the slider on the left side up and down, the horizontal line represents the site latitude relative to the overlayed map of the world. The angular difference between the two solstices and the equinox always remains the same - only the overall rotational angle changes.
It seems you are missing out on our interactive content. Please visit macromedia.com and update your browser with the latest flash plugin... or if you think your version of Flash should be okay, then click here to bypass this Flash detection.
Useful References
- Other Solar Position Calculators
- http://www.cs.ucla.edu/~simonw/sunpos/
http://susdesign.com/sunangle/
- Solar Radiation Data Manual for Buildings
- http://rredc.nrel.gov/solar/pubs/bluebook/bluebook_index.html
- NASA Information on Sundials
- http://liftoff.msfc.nasa.gov/academy/earth/sundial/sundial.html

html character problem?
great site for understanding Sun position and more. my only comment is that the "degree" characters often look funny in my browser (firefox). instead of 23.45 degrees or 180 degrees, i see some characters following the numbers that look like Swedish :-)
Swedish degree symbol
It's probably because the text was copied from a source with a different encoding system. For instance, it could have been written on a word processor in Unicode and the browser is displaying it as ASCII. ♥