26 lines
1 KiB
Text
26 lines
1 KiB
Text
include "ConsoleWindow"
|
|
|
|
local fn rad2deg( theta as double ) as double
|
|
end fn = theta * 180 / pi
|
|
|
|
local fn deg2rad( theta as double ) as double
|
|
end fn = theta * pi / 180
|
|
|
|
local fn SolarHourAngle( latitude as double, longitude as double, meridian as double )
|
|
dim as long hour
|
|
dim as double hra, hla, time
|
|
dim as Str15 ap
|
|
|
|
print "Latitude = "; latitude; chr$(13); "Longitude = "; longitude; chr$(13); "Meridian = "; meridian
|
|
print : print "sine of latitude: "; sin(latitude * pi / 180 ); chr$(13); " diff longitude: "; longitude - meridian
|
|
print : print "Time", "Sun hour angle", "Dial hour line angle"
|
|
for hour = 6 to 18
|
|
hra = ( 15 * hour ) - longitude + meridian - 180
|
|
hla = fn rad2deg( atn( sin( fn deg2rad( latitude ) ) * tan( fn deg2rad( hra ) )))
|
|
if abs( hra ) > 90 then hla = hla + 180 * sgn( hra * latitude )
|
|
if hour > 12 then time = hour - 12 : ap = " a.m." else time = hour : ap = " p.m."
|
|
print using "##"; time; ap, using "####.##"; hra, using "####.###"; hla
|
|
next hour
|
|
end fn
|
|
|
|
fn SolarHourAngle( -4.95, -150.5, -150.0 )
|