Index
- Introduction
+ Using the Functions
+ User Guide
+ Function Reference
+ Constants
Contact Developer
Downloads
|
Designing Sundials with The Sun API
The Sun API's functions have been built to help design sundials. Here is
a worked example of just two types of sundials:
Latitude and Longitude are expressed in degrees. TimeZone (tz) is
specified in hours.
Horizontal Sundial
Horizontal sundials have a gnomon inclined at the latitude angle. The
origin of the hour lines is at the toe of the gnomon.
| Variant |
1 |
2 |
| Where does 12 O'Clock point? |
12 O'clock is pointing due North (Northern Hemisphere) or
South (Southern Hemisphere) |
12 O'clock position is adjusted for the difference in
longitude of the sundial from the standard longitude of the timezone. |
| What is shown on the dial face? |
Local True (Solar) Time. |
Time Zone True (Solar) Time |
| Angle of the Hour line on the face of the dial.
Hour is specified as h:m:s
0 <= h:m:s < 24 hours |
sdATan(sdSin(latitude)*
sdTan(sdxH(sdCTDx(h,m,s),0))) |
sdATan(sdSin(latitude)*
sdTan(sdxH(sdUTDx(h,m,s,tz),longitude))) |
| Example:
Latitude = 40
Longitude = 95
TimeZone = 6
h:m:s = 15:00:00 |
= sdATan(sdSin(40)* sdTan(sdxH(sdCTDx(15,0,0),0)))
= 32.7324 degrees
|
= sdATan(sdSin(40)* sdTan(sdxH(sdUTDx(15,0,0,6),95)))
= 28.3408 degrees |
| On a given date during the year, what factor, in minutes,
must be added to the time shown by the shadow on the sundial to get
Standard TimeZone Time? |
= sdD2Unit(
longitude
-sdUnit2D(tz,sdUnitHour)
-sdxEOT(sdSDYx(month,day,12,0,0,tz))
,sdUnitTMin) |
= sdD2Unit( -sdxEOT(sdSDYx(month,day,12,0,0,tz))
,sdUnitTMin) |
Analemmatic Sundial
An analemmatic sundial uses a movable vertical rod casting a shadow onto
horizontal hour markers (points). The hour markers lie along an ellipse
with semi-major axis running East-West with length A.
| Variant |
1 |
2 |
| Where does 12 O'Clock point? |
12 O'clock is pointing due North (Northern Hemisphere) or
South (Southern Hemisphere) |
12 O'clock position is adjusted for the difference in
longitude of the sundial from the standard longitude of the timezone. |
| What is shown on the dial face? |
Local True ( Solar) Time. |
Time Zone True (Solar) Time |
| X coordinate of the hour marker.
Hour is specified as h:m:s
0 <= h:m:s < 24 hours |
A* sdSin(sdxH(sdCTDx(h,m,s),0))) |
A * sdSin(sdxH(sdUTDx(h,m,s,tz),longitude))) |
| Y coordinate of the hour marker.
Hour is specified as h:m:s
0 <= h:m:s < 24 hours |
A * sdSin(latitude) * sdCos(sdxH(sdCTDx(h,m,s),0))) |
A * sdSin(latitude) * sdCos(sdxH(sdUTDx(h,m,s,tz),longitude))) |
| Y coordinate of the vertical shadow casting rod for a given
date. (X coordinate is always 0.) |
A *sdTan(sdxDecl(
sdSDYx(month,day,12,0,0,tz))) *sdCos(latitude) |
A *sdTan(sdxDecl(
sdSDYx(month,day,12,0,0,tz))) *sdCos(latitude) |
Example:
A = 1000mm
Latitude = 40
Longitude = 95
TimeZone = 6
h:m:s = 15:00:00 |
X = 1000* sdSin(sdxH(sdCTDx(15,0,0),0)))
= 707.1068mm
Y = 1000 * sdSin(40) * sdCos(sdxH(sdCTDx(15,0,0),0)))
= 454.5195mm
|
X = 1000 * sdSin(sdxH(sdUTDx(15,0,0,6),95)))
= 642.7876mm
Y = 1000 * sdSin(40) * sdCos(sdxH(sdUTDx(15,0,0,6),95)))
= 492.4039mm |
| On a given date during the year, what factor, in minutes,
must be added to the time shown by the shadow on the sundial to get
Standard TimeZone Time? |
= sdD2Unit(
longitude
-sdUnit2D(tz,sdUnitHour)
-sdxEOT(sdSDYx(month,day,12,0,0,tz))
,sdUnitTMin) |
= sdD2Unit( -sdxEOT(sdSDYx(month,day,12,0,0,tz))
,sdUnitTMin) |
|
|