Horizontal sundial calculations: Difference between revisions
Content added Content deleted
No edit summary |
m (→{{header|Sidef}}: updated code) |
||
Line 2,226: | Line 2,226: | ||
=={{header|Sidef}}== |
=={{header|Sidef}}== |
||
{{trans|Perl 6}} |
{{trans|Perl 6}} |
||
<lang ruby>var latitude = read('Enter latitude => ', Number) |
<lang ruby>var latitude = read('Enter latitude => ', Number) |
||
var longitude = read('Enter longitude => ', Number) |
var longitude = read('Enter longitude => ', Number) |
||
var meridian = read('Enter legal meridian => ', Number) |
var meridian = read('Enter legal meridian => ', Number) |
||
var lat_sin = |
var lat_sin = latitude.deg2rad.sin |
||
var offset = (meridian - longitude) |
var offset = (meridian - longitude) |
||
say('Sine of latitude: ', "%.4f" % lat_sin) |
say('Sine of latitude: ', "%.4f" % lat_sin) |
||
say('Longitude offset: ', offset) |
say('Longitude offset: ', offset) |
||
say('=' * 48) |
say('=' * 48) |
||
say(' Hour |
say(' Hour : Sun hour angle° : Dial hour line angle°') |
||
for hour in range(-6, 6) { |
for hour in range(-6, 6) { |
||
var sun_deg = (15*hour + offset) |
var sun_deg = (15*hour + offset) |
||
var line_deg = |
var line_deg = rad2deg( |
||
atan2( |
|||
sin(deg2rad(sun_deg)) * lat_sin, |
|||
cos(deg2rad(sun_deg)) |
|||
) |
) |
||
) |
) |
||
printf("%2d |
printf("%2d %s %7.3f %7.3f\n", |
||
(hour + 12) % 12 || 12, (hour < 0 |
(hour + 12) % 12 || 12, (hour < 0 ? 'AM' : 'PM'), sun_deg, line_deg) |
||
}</lang> |
}</lang> |
||
{{out}} |
{{out}} |