Frink Server Pages Highlighter - moon.fsp
[Try moon.fsp]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<HTML LANG="en">
<HEAD>
<TITLE>Moon Locator</TITLE>
<META HTTP-EQUIV="Default-Style" CONTENT="Spaceship">
<LINK REL="StyleSheet" HREF="/frinkdocs/spaceship.css"
TYPE="text/css" TITLE="Spaceship">
<LINK REL="Alternate StyleSheet" HREF="/frinkdocs/apeairy.css"
TYPE="text/css" TITLE="APE Airy">
<LINK REL="Alternate StyleSheet" HREF="/frinkdocs/style.css" TYPE="text/css"
TITLE="APE Classic">
<LINK REL="Alternate StyleSheet" HREF="/frinkdocs/style2.css" TYPE="text/css"
TITLE="Compact">
<LINK REL="icon" HREF="/images/futureboyicon.png" TYPE="image/png">
</HEAD>
<BODY <%= (! "$latitude") ? "onLoad=\"requestLoc();\"" : "" %>
<H1>Moon Locator</H1>
<%
use ../
sun.frink
use ../
HTMLUtils.frink
North = +1
South = -1
West = +1
East = -1
if (! "
$latitude")
{
println["""
<SCRIPT type="text/javascript">
function requestLoc()
{
navigator.geolocation.getCurrentPosition(populateLoc, errorLoc, {maximumAge:600000});
}
function populateLoc(position)
{
latField = document.getElementById("latitude");
latField.value = Math.abs(position.coords.latitude);
longField = document.getElementById("long");
longField.value = Math.abs(position.coords.longitude);
latHemiField = document.getElementById("latHemi");
if (position.coords.latitude < 0) // South?
latHemiField.selectedIndex = 1;
else
latHemiField.selectedIndex = 0;
longHemiField = document.getElementById("longHemi");
if (position.coords.longitude < 0) // West?
longHemiField.selectedIndex = 0;
else
longHemiField.selectedIndex = 1;
form1 = document.getElementById("form1");
form1.submit();
}
function errorLoc(error)
{
//alert(error);
}
</SCRIPT>
"""]
}
latitude = "
$latitude" ? latitude : "39.58560"
long = "
$long" ? long : "104.89598"
latHemi = "
$latHemi" ? latHemi : "North"
longHemi = "
$longHemi" ? longHemi : "West"
longHemis = ["West", "East"]
latHemis = ["North", "South"]
%>
<FORM ACTION="moon.fsp" METHOD="POST" ID="form1" NAME="form1">
<TABLE>
<TR>
<TD>Latitude:
<TD><INPUT TYPE="text" NAME="latitude" ID="latitude" VALUE="$latitude">
<TD>degrees
<TD>
<SELECT NAME="latHemi" ID="latHemi">
<% makeSelect[latHemis, latHemi] %>
</SELECT>
<TR>
<TD>Longitude:
<TD><INPUT TYPE="text" NAME="long" ID="long" VALUE="$long">
<TD>degrees
<TD>
<SELECT NAME="longHemi" ID="longHemi">
<% makeSelect[longHemis, longHemi] %>
</SELECT>
</TABLE>
<INPUT TYPE="SUBMIT">
</FORM>
<%
t = "$date" ? parseDate[date] : now[]
latNum = eval["$latitude * $latHemi"] degree
longNum = eval["$long * $longHemi"] degree
[azimuth, altitude] = refractedMoonAzimuthAltitude[t, latNum, longNum]
phaseAngle = moonPhaseAngle[t]
illum = moonIlluminatedFraction[t]
[az1, alt1] = refractedMoonAzimuthAltitude[t+5 s, latNum, longNum]
illum1 = moonIlluminatedFraction[t + 5 s]
inc = 5 s
distance = moonDistance[t]
distance1 = moonDistance[t+inc]
velocity = (distance1-distance) / inc
direction = velocity > 0 mph ? "receding" : "approaching"
velocity = abs[velocity]
limb = moonPositionAngleRelativeToZenith[t, latNum, longNum] mod circle
clockwiseLimb = 360 degrees - limb
moonset = moonset[t, latNum, longNum]
moonrise = moonrise[t, latNum, longNum]
%>
<P>
From latitude <%= (abs[latNum] -> "degrees") + " " + latitudeName[latNum] %>,
longitude <%= (abs[longNum] -> "degrees") + " " + longitudeName[longNum] %>:
<P>
The moon is located <%= format[altitude, degree, 4] %>
degrees above the horizon (<%= alt1 > altitude ? "rising" : "setting" %>).
<BR>
True compass bearing:
<%= format[(azimuth + 180 degrees) mod circle, degree,4 ] %> degrees.
</P>
<P>
Illuminated fraction:
<%= format[illum, percent, 2 ] %>%
(<%= illum1 > illum ? "waxing" : "waning" %>).</P>
<P>
Angle of center of moon's bright limb: <BR><%= format[clockwiseLimb, "degrees", 1] %> clockwise (<%= format[limb, "degrees", 1] %> counterclockwise) from zenith.
</P>
<%
format = ### yyyy-MM-dd HH:mm:ss ###
println["<IMG SRC=\"drawmoon.fsp?date=" + URLEncode[t->[format,"UTC"]] + "&lat=" + (latNum -> degrees) + "&long=" + (longNum->degrees) +"\" WIDTH=100 HEIGHT=100>"]
%>
<P>
Distance: <%= format[distance, "miles", 2] %>, <%= direction %> at <%= format[velocity, "mph", 3] %>.
</P>
<TABLE BORDER=0>
<%
if moonrise < moonset
{
println["<TR><TD>" + (moonrise < t ? "Previous" : "Next") + " moonrise:<TD>$moonrise"]
println["<TR><TD>" + (moonset < t ? "Previous" : "Next") + " moonset:<TD>$moonset"]
if (moonset < t)
{
nextMoonrise = moonrise[t+12 hours, latNum, longNum]
println["<TR><TD>" + (nextMoonrise < t ? "Previous" : "Next") + " moonrise:<TD>$nextMoonrise"]
}
} else
{
println["<TR><TD>" + (moonset < t ? "Previous" : "Next") + " moonset:<TD>$moonset"]
println["<TR><TD>" + (moonrise < t ? "Previous" : "Next") + " moonrise:<TD>$moonrise"]
if (moonrise < t)
{
nextMoonset = moonset[t+12 hours, latNum, longNum]
println["<TR><TD>" + (nextMoonset < t ? "Previous" : "Next") + " moonset:<TD>$nextMoonset"]
}
}
%>
</TABLE>
<P>
Time: <%= t %> </P>
<HR>
<P>
View source of <A HREF="/fsp/highlight.fsp?fileName=moon.fsp">This FSP
page</A> or the <A HREF="/fsp/highlight.fsp?fileName=drawmoon.fsp">page that draws the moon</A> or the <A HREF="/fsp/colorize.fsp?fileName=sun.frink">astronomical library</A> used by this code.
</P>
<P>
<I><A HREF="mailto:eliasen@mindspring.com">Alan Eliasen</A></I> was born
<%= round[now[] - #1969-08-19 04:54 PM Mountain#, minute] -> ["days", "hours", "minutes"] %> ago.
</P>
<P>
Powered by <A HREF="/frinkdocs/">Frink</A> and <A HREF="/frinkdocs/fspdocs.html">Frink Server Pages</A>.
</P>
</BODY>
</HTML>
[Try moon.fsp]
Alan Eliasen was born
14705 days, 3 hours, 4 minutes ago.
Back to Frink Server Pages
documentation.