This is a simple, free bifilar sundial calculator which uses SVG to produce an interactive image. A bifilar uses two "threads" to cast shadows, as opposed to the more commonly use "polar" gnomon style (i.e. a slanted rod aligned with the Earth's rotation axis).
The output of the calculator is valid for any combination of latitude and longitude. The dial plane can be oriented in any direction. Dials can be horizontal, vertical or any angle in between. In addition, it may be oriented to face any arbitrary cardinal direction (e.g. east, west, southwest, northeast, etc.).
It will generate output that can be used to print an exact scale printout using Inkscape, a free utility that can be installed on virtually any computer, no matter what the operating system. (NOTE: Before constructing any dial be sure to double-check the scale of any printout. Variation between devices and over time might(?) result in the current approach to scaling incorrect.). This eliminates the tedium of having to plot points or lines by hand and significantly aids construction.
Stay away from INTERNET EXPLORER or the new EDGE browser on Windows 10. They will "hang" when attempting to generate the SVG export file.
An article discussing the theory behind the algorithms used as the basis for this utility is also available. (PDF)
Latitude: | |
Longitude: | |
Inclination: | |
Declination: | |
X-Axis Offset: | |
Y-Axis Offset: | |
Meridian | |
Calculate Dial |
Custom Declination
Change Plot Limits
- Click & Drag to move the dial around.
- Zoom using the mousewheel.
-
If no mousewheel, zoom in with Alt+Click or Alt+Shift+Click.
Zoom out with Cntl+Click (or in combo with Shift).
Reset the entire screen by Alt+Cntl+Click. - To examine an element on the dial graphic, simply "mouse over it". Most of the elements have an associated "tool tip" which gives some information about what is being displayed.
• Latitudes north of the equator are positive. South are negative.
• Longitudes west of the Greenwich meridian are positive (i.e. the Americas). East of Greenwich are negative (i.e. Europe, Asia). I know this is backwards :\ When I originally wrote the code, I was blissfully ignorant of convention, and simple coded for my location to be positive. My apologies in advance for anyone who finds this irritating.
• X & Y Axis Offsets represent the height of each "thread" above the dial plane. NOTE that if the x-axis height is set equal to the y-axis offset multiplied by the sine of the dial latitude one will obtain a dial for which all the hour lines are separated by exactly 15° (nice).
• Inclination represents an angle of rotation in a vertical plane. It is measured downward from the vertical. A horizontal dial has an inclination of 0°. A vertical dial has an inclination of 90°.
• Declination represents an angle of rotation in a horizontal plane. It is measured from due south. A dial plane facing east has a declination of positive 90°. A dial plane facing west has a declination of negative 90°.
• The meridian is simply the longitude of the time zone in which the dial will be located. Missouri, USA is six times zones west of Greenwich, so 6×15°/zone is 90°.
This function allows one to observe the effect of altering a single dial setting (e.g. wall declination, latitude, length of gnomon, etc) without having to open up the setup dialog. The user can quickly increment or decrement the chosen setting by the amount specified and observe the effect on the dial display.
If you open the setup dialog in conjunction with this operation, you can keep track of the current input settings, which are automatically updated.
The variables do NOT have preset ranges. The code will attempt to produce a dial no matter what you input. There isn't a lot of error checking. If the page stops working and you think the inputs are reasonable, trying reloading the page (you'll have to re-enter the inputs). If that doesn't work, post a comment and I will see if there is a bug somewhere.
Hour Lines
In the past, some civilizations and cultures considered the start of the day, and hence the first
hour of the day, to coincide with sunrise (Babylonians), while others (the Romans, or Italians) ended
the day at sunset, which also meant that for counting purposes, the first hour of the new day
began at sunset.
Babylonian hour lines indicate the number of hours the sun has been above the horizon, or the number of hours that have elapsed since sunrise.
Italian hour lines indicate the number of hours of sunlight left in the day, or the number of hours until sunset.
Show Noon Line
This option will display a line which represents the shadow location when the sun
transits the meridian, or is directly due south (or north). This is sometimes
called apparent solar noon The sun, as seen by the observer, is half way between sunrise and sunset.
Equation of Time
• For background on the equation of time, refer to http://chiggerjunction.blogspot.com/p/sundial-corrections.html
(there are also a LOT of references worth reading on the internets [sic]).
• The algorithm used to calculate the EoT displayed in this utility is not rigorous. For
purposes of dial construction, the accuracy should be fine. For individuals interested in seeing the difference between
this simple algorithm and a more rigorous calculation, a graphical comparison is available at
http://chiggerjunction.blogspot.com/p/analemma-and-equation-of-time.html?simpleEOT.
Add Custom Declination
This option allows the user to include solar declinations which may happen to occur
on dates of special significance.
Change Plot Limits
This option is basically to make any exported SVG file easier to work with in Inkscape.
- You can use this SVG file, in conjunction with Inkscape, to print an image of the sundial exactly to scale. This eliminates the tedium of having to hand-plot individual points. If you are unfamiliar with Inkscape, try this short tutorial to see how its done.
-
Saving the File to Disk
Because this application runs inside a browser, it is somewhat limited in terms of its ability to perform routine file operations on a user's computer.
Select all the text displayed in the export text window and paste it into an ASCII text editor (e.g. "Notepad"), then save it on your computer giving it whatever name you choose, with a file extension of SVG (NOTE: make sure there are no blank lines at the beginning of the file).
-
Adjustments for Paper Size & Units
This SVG document has been formatted for use with Inkscape for the purpose of printing an image of the sundial to scale. It assumes you will be printing on 8½ × 11" paper (i.e. standard "letter" paper size) and that the units used for the dial are inches (i.e. the numerical value for the length of the gnomon represents inches).
• To change these default settings, you can either edit the text yourself using the following instructions, or select the appropriate radio button to the right.• If you use the radio buttons, first export the SVG, then select the preferred paper and units.- PAPER
- UNITS
- If you are using legal-size paper, change the height and viewbox parameters to read: height='1260' and viewbox='0 0 765 1260'.
- If you are using A4 paper size, change the width, height and viewbox parameters to read: width='744', height='1052' and viewbox='0 0 744 1052'.
- If you are using units of centimeters instead of inches, you will need to edit the parameter transform='matrix(96,0,0,-96,0,0)' to read: transform='matrix(37.795,0,0,-37.795,0,0)'.
In time I intend to handle the conversion to other paper sizes and units programmatically, but right now I'm in a hurry and am concentrating on just getting the routine in place and a series of instructions written for how to use it in conjunction with Inkscape .... March 2011, BH.