onekiloparsec / SwiftAA

The most comprehensive collection of accurate astronomical algorithms in (C++, Objective-C and) Swift.
http://www.onekiloparsec.dev/
MIT License
171 stars 31 forks source link

No access to ApparentGeocentricLongitude for Pluto since 2.4.0 #115

Closed tobiasleissner closed 1 year ago

tobiasleissner commented 1 year ago

See #86 Until 2.2.0 it was possible to get ApparentGeocentricLongitude for Pluto.

Since 2.4.0 this was removed as DwarfPlanet uses strictPlanet (which invalidates Pluto as a planet and therefore doesn't give access to ApparentGeocentricLongitude anymore).

Please fix, or provide another way to access the ApparentGeocentricLongitude for Pluto.

tobiasleissner commented 1 year ago

Additional data:

The planetStrict routes the calculation to "undefined" planet, as stated in your comment 4 years ago. https://github.com/onekiloparsec/SwiftAA/issues/86#issuecomment-568272806

Planets.swift, line 71 PlanetaryBase, line 56 KPCAAPlanetStrict, line 242 (ScientificConstants, line 242)

Even then, I can only get the ObjectDetails and not the PlanetDetails: Planets.swift, line 71 KPCAAEllipticalObjectDetails, line 137 KPCAAElliptical, line 81

tobiasleissner commented 1 year ago

This was changed on Jul 24, 2022

https://github.com/onekiloparsec/SwiftAA/commit/cda3662b4fe392e8658ba2f8b29a5f79ac5b3b02

tobiasleissner commented 1 year ago

Even worse, I cannot access "allObjectDetails" because of PlanetaryBase.swift, line 56

allObjectDetails tries to process the calculation for Pluto, but it doesn't work because it tries to get the right "planet" for "Pluto" from "planetStrict" (where "Pluto" is missing).

onekiloparsec commented 1 year ago

Hello Tobias. I've looked at your question, but I don't know how to resolve it.

For instance, look at the AAElliptical.cpp file. Pluto is not present in the switch.

What you ask for requires (at first sight) to bend the AA+ APIs in some way to re-introduce Pluto in the switch.

tobiasleissner commented 1 year ago

What you ask for requires (at first sight) to bend the AA+ APIs in some way to re-introduce Pluto in the switch.

You may be right. Currently I'm using the previous version of SwiftAA, as this is the only way to access this data. However, I will never be able to update to a later version then, as this data is not accessible anymore (although calculation would still be possible).

I don't know why AA+ removed these properties from Pluto. Pluto had a longitude before, as a DwarfPlanet, and still has it, but it simply cannot be calculated anymore. Very strange.

Thanks for taking a look at it anyways. Please close this issue as "cannot be resolved" then.

onekiloparsec commented 1 year ago

I have mixed feelings too. Of course, Pluto follows different rules compared to other regular planets, yet, the longitude you mention can be calculated. Somehow, it is "lost" in the APIs design.

Maybe would be worth to ask P.J. Naughter about it, and then we'll mirror this in SwiftAA?

tobiasleissner commented 1 year ago

Meanwhile I wrote my own Swift class to calculate the geocentric ecliptic position of Pluto using KPCAAPluto_* functions of ObjCAA, just by converting the position of KPCAAPluto to rectangular, making the data geocentric, and finally converting the position back to ecliptic.

You could "forward" the data of KPCAAPluto_* methods to the Pluto class in Swift, which would make it possible to access the heliocentric ecliptic position. Any additional calculations are up to the developers.