hourAngle function
Approximate hour angle for rise/set.
Returns null if circumpolar or never rises.
Implementation
double? hourAngle(double lat, double h0, double dec) {
final cosH = (math.sin(h0) - math.sin(lat) * math.sin(dec)) /
(math.cos(lat) * math.cos(dec));
if (cosH < -1 || cosH > 1) return null;
return math.acos(cosH);
}