The Astro-satpass distribution contains classes to compute satellite position and visibility. If you are using it, please read on. If you think I should continue to deliver change notifications via this blog, please let me know, otherwise I will stop doing so, and merely give notice via electronic mail.
On June 11 2011 I wrote about the changes to the Astro::Coord::ECI::TLE
pass() method which were in release 0.039_04. The blog entry detailed those changes and expressed the intent to make another release in about two weeks.
A respondent questioned the performance of the
pass() method when the
interval attribute was positive. This attribute causes the
pass() method to return periodic positions during the pass, as well as the significant events of the pass. Investigation revealed a serious inefficiency in this functionality, and turned up some more “edge case” pass prediction problems.
Because of the further changes to the
pass() method, I have made another development release: 0.039_05. I intend to allow another two weeks for evaluation and feedback before making either another development release (if further issues turn up) or a production release (if not).
The specific problems fixed in this release are:
Versions 0.039_03 and 0.039_04 occasionally reported passes which ended shortly before the prediction interval started.
Versions 0.039_03 and 0.039_04 sometimes calculated the wrong max time. Again.
Passes in progress when the prediction interval started were still sometimes being missed if the
visibleattribute was false.
The calculation of positions periodically during the pass (controlled by the
intervalattribute) was anywhere from slightly slower to horribly slower than it needed to be. Also, the illumination reported for these positions was sometimes wrong. The re-implementation reports positions starting from the rise of the satellite. The original implementation reported positions starting from the start of the prediction interval, Since this was undocumented I feel justified in changing it, but since this is a development release I also feel justified in changing it back (which I think I can do without re-incurring the performance penalty) if someone is relying on the old functionality.
Added new attribute
lazy_pass_position, which gives the
pass()method permission to not calculate and report the position of the event. Currently, this only affects the periodic positions calculated in response to setting the
passcommand in the
satpassscript did not display periodic positions even when the
verbosesetting was true.
The validation was again partially automated, so all I really know is how the code performs versus 0.039. Please let me know if you have any problems or concerns. I can be reached by electronic mail at wyant at cpan dot org.
Thank you for your time and attention,