Horizontal sundial calculations: Difference between revisions

Content deleted Content added
Trizen (talk | contribs)
m →‎{{header|Sidef}}: updated code
PureFox (talk | contribs)
Added Kotlin
Line 1,158: Line 1,158:
HR= 5; HRA= 75.500; HLA= -18.451
HR= 5; HRA= 75.500; HLA= -18.451
HR= 6; HRA= 90.500; HLA= -95.775</pre>
HR= 6; HRA= 90.500; HLA= -95.775</pre>

=={{header|Kotlin}}==
<lang scala>// version 1.1.2

fun main(args: Array<String>) {
println("Please enter the following in degrees:")
print(" Latitude : ")
val lat = readLine()!!.toDouble()
print(" Longitude : ")
val lng = readLine()!!.toDouble()
print(" Legal Meridian : ")
val mer = readLine()!!.toDouble()

val slat = sin(toRadians(lat))
val diff = lng - mer
println("\nSine of latitude = ${"%.6f".format(slat)}")
println("Longitude - Meridian = ${"%.3f".format(diff)}\n")
println("Hour Sun Hour Angle Dial Hour Line Angle")
println("----- -------------- --------------------")
println(" ° °")
for (h in -6..6) {
var hr = h + 12
val am = if (hr < 12) "AM" else "PM"
if (hr > 12) hr -= 12
val sha = 15.0 * h - diff
val dhla = toDegrees(atan2(slat * sin(toRadians(sha)), cos(toRadians(sha))))
println("%2d %s %+7.3f %+7.3f".format(hr, am, sha, dhla))
}
}</lang>
Sample input/output:
{{out}}
<pre>
Please enter the following in degrees:
Latitude : -4.95
Longitude : -150.5
Legal Meridian : -150

Sine of latitude = -0.086286
Longitude - Meridian = -0.500

Hour Sun Hour Angle Dial Hour Line Angle
----- -------------- --------------------
° °
6 AM -89.500 +84.225
7 AM -74.500 +17.283
8 AM -59.500 +8.334
9 AM -44.500 +4.847
10 AM -29.500 +2.795
11 AM -14.500 +1.278
12 PM +0.500 -0.043
1 PM +15.500 -1.371
2 PM +30.500 -2.910
3 PM +45.500 -5.018
4 PM +60.500 -8.671
5 PM +75.500 -18.451
6 PM +90.500 -95.775
</pre>


=={{header|Liberty BASIC}}==
=={{header|Liberty BASIC}}==