error in calculating the parallactic angle of the moon bright limb in MoonPosition.swift
Opened this issue · 0 comments
There is an error in calculating the parallactic angle of the moon bright limb in MoonPosition.swift
In MoonPosition.swift line 88 the closing bracket for the atan2() function comes too early:
88 let pa = atan2(sin(h), tan(phi) * cos(mc.getTheta())) - sin(mc.getTheta()) * cos(h)
The atan2() closing bracket should come after the final cos(h), instead it comes after cos(mc.getTheta()))<== this bracket closes atan2()
This formula (based on formula 14.1 of "Astronomical Algorithms" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998) is correct in the original Javascript by mourner (who confusingly has abbreviated the atan2() function to "atan"):
https://github.com/mourner/suncalc/blob/master/suncalc.js
215 pa = atan(sin(H), tan(phi) * cos(c.dec) - sin(c.dec) * cos(H));
and in the Java translation by shred:
https://github.com/shred/commons-suncalc/blob/master/src/main/java/org/shredzone/commons/suncalc/MoonPosition.java
90 double pa = atan2(sin(h), tan(phi) * cos(mc.getTheta()) - sin(mc.getTheta()) * cos(h));
The pa calculation is omitted in the Swift translation by shanus on which many other Swift versions are based
https://github.com/shanus/suncalc-swift/blob/master/suncalc/suncalc.swift