Below is a rewritten version of my old Moon Calendar program. The previous version, more than eight years old, has been broken by the most recent release of Java from Sun Microsystems, hence the rewrite.
This version is being released for β-testing; I'm not making any guarantees that it will work at all, and changes are to be expected.
Please fiddle with the program, and note any problems; them to me as you find them.
Instructions on what the various controls do is found below. For testing purposes, it would be best if you didn't read them before trying to figure out what the various controls do on your own.
Instructions
Ultimately, written instructions should be unnecessary; it ought to be intuitively obvious how to use the software.
Yeah.
Until then:
New - The Settings... dialog now allows you to save your settings; the next time you visit, any settings you saved will be restored. The dialog now has Cancel, Apply and Save buttons on the bottom. Cancel will cancel any changes made to the dialog that haven't been applied or saved; Apply will apply any changes made to the displayed calendar, without saving them; Save will apply any changes and save them for use the next time you visit.
The printer dialog is hideous. It comes standard with Java, and will hopefully improve in the future.
The "Settings..." button will bring up a separate window containing various controls, discussed below. Note that on some platforms and browsers, this window will sometimes be hidden by the main browser window. If you click the "Settings..." button and nothing happens, try looking behind the browser window.
The month, year and era (AD or BC) can be changed by clicking on the appropriate field, or portion of it, and selecting a new value.
Hovering your cursor over any day of the month will pop up a ToolTip box displaying specific information about the moon on that day.
At any time, the displayed month can be changed back to the present month by clicking the Reset to Current Date button.
The Position Angle is the angle which a line drawn between the cusps of the terminator makes with true north; it is NOT the angle made with the zenith, which is called the Zenith Angle, and which is dependent on both location and local time. The Position Angle can be turned on or off; if off, the line between the cusps of the terminator is always drawn straight up and down.
Distance Scaling scales the drawings of the moon depending on the moon's distance at the moment the phases are calculated; the default of 1 alters the size based on actual distance, while greater values raise the scaling to the second, third or fourth power, respectively. Turning this control Off makes all drawings the same size.
Most people in the northern hemisphere see the moon toward the south, and therefore orient it with north up. In the southern hemisphere, south is up, and the appearance of the moon is "flipped" with respect to it's northern hemisphere appearance. The Orientation setting lets you control which view is used.
The Phase Times setting selects whether the phases should be calculated at the current instant of Local Time, at Local Midnight, or at UTC Midnight. UTC corresponds to Greenwich time, and is commonly used in astronomical references.
Note that the canonical phases (Full, New, First and Last Quarter) are calculated and shown at the precise instant the particular phase occurs. This may make the preceding and subsequent phases look slightly off, depending on the time at which the true phase occurs.
The Language that some items are displayed in may be selected. This only affects the month, era, weekdays and similar fields in the ToolTip displays. Basically, I get these for free; internationalizing the entire application would require actual work.
Note that not all languages are available on all systems. The ones shown all display properly (I guess - who knows what they really say?) on my Linux system; under Windows, the Asian and Arabic fonts are not recognized - they default to displaying in English. This probably varies from system to system; explicitly downloading Asian fonts onto my Windows box made no difference.
The First Day of Week may be set to whatever day is selected; in Europe, calendars are commonly printed using Monday as the first day of the week instead of Sunday, and as long as I was coding that I figured I might as well generalize it.
Clicking on the days - they're buttons - doesn't do anything but make them go in and out. Someday, clicking on them will do something really cool. But not today.
If you don't have the required version of the Java plugin installed, various things will happen. Under Windows and Internet Explorer, the browser will thoughtfully ask if you want it installed, and will do so automatically if you answer in the affirmative. On other systems, I have no idea what will happen; in theory, you will be directed to a download page, but I haven't run into this situation yet. Again, is requested on what you encounter here.
References
Here are some of the books I used for the astronomical calculations performed by the applet:
Here are some of the programming references:
And here are a couple of good, waterproof binoculars for observing:
And for anyone designing web pages, user interfaces, or any other kind of visual display, or for those just looking for an enjoyable read, you can't go wrong with these: