0.023 09-Mar-2009 T. R. Wyant General Test t/tle_exception.t is no longer a developer test, but it will be skipped unless the user has Time::y2038. Astro::Coord::ECI 0.023 Add method equatorial_unreduced(), for those who are only interested in range and velocity. Attempt to straighten out velocities when transforming among ECEF, ECI, and equatorial. No tests yet, though, so I have no idea if it is right. Note that as a consequence of this change it is possible to have an object without a velocity, since inertial objects no longer default to 0 velocity. Astro::Coord::ECI::TLE 0.017 Set Iridium 91 in service in canned status, reflecting updates by Rod Sladen and T. S. Kelso. This is the real reason for the release; otherwise I would have sat on it until I had velocity tests. 0.022 15-Feb-2009 T. R. Wyant General Make new test t/tle_exception.t a developer test until I can figure out why it only runs on my configuration. 0.021 13-Feb-2009 T. R. Wyant General Make Time::y2038 recommended rather than required, since ActivePerl has problems with that module. We use it if available, otherwise we fall back to the core modules (and Time::Local if needed). Add eg/closest and eg/positions, showing calculation of the closest approach to a given point, and standalone calculation of the positions of all bodies at a given time. Correct '## no critic' in various places. Astro::Coord::ECI 0.021 Trap any exceptions encountered when setting the time, set the time to undef (since otherwise we're left in an inconsistent state) and re-raise the exception. Astro::Coord::ECI::TLE 0.016 Add OID number to exceptions related to orbital elements. Correct error messages involving using a near-earth model on a deep-space satellite or vice versa. Document the units of the model results (km or km/sec). Update canned Iridium status for the loss of Iridium 33 in a collision with Cosmos 2251. Astro::Coord::ECI::TLE::Set 0.006 Tell carp not to report Astro::Coord::ECI (and friends) errors as originating in Astro::Coord::ECI::TLE::Set. bin/satpass 0.021 Add gmt parameter which, if true, causes time output to be GMT. Trap Astro::Coord::ECI::TLE modeling exceptions in the 'flare', 'pass', and 'position' commands, so that the whole command does not abort when this happens. SIGINT still aborts the whole command. Add -quiet option to supress error output. Mark geocode_ca as unsupported and probably not working, since they have started requiring registration for use of their free port. Build.PL Change check for Astro::SIMBAD::Query to Astro::SIMBAD::Client Makefile.PL Change check for Astro::SIMBAD::Query to Astro::SIMBAD::Client 0.020 09-Jan-2009 T. R. Wyant General Add Time::y2038 as prerequisite, and use in place of Time::Local and CORE gmtime and localtime functions. Add Params::Util 0.25 as prerequisite. Add Astro/Coord/ECI/Overview.pod to try to give a "big picture". Eliminate function calls to UNIVERSAL::can and UNIVERSAL::isa in favor of Params::Util::_INSTANCE(), ::_CLASSISA(), or Astro::Coord::ECI::Utils::embodies(). Update copyright date to 2009. Restructure Build.PL and Makefile.PL to better adapt to the installed version. Distribute t/critic.t, t/executable.t, t/iridium_status.t, t/manifest.t, and t/perlcriticrc but do not run them unless environment variable DEVELOPER_TEST is set. Bring code up to perlcritic --stern with exceptions contained in t/perlcriticrc. This was not done to bin/satpass, since I plan to retire it. Astro::Coord::ECI 0.020 Use represents() rather than isa() on the argument (if any) to the equatorial(), next_elevation(), and next_meridian() methods, to allow Astro::Coord::ECI::TLE::Set objects. Astro::Coord::ECI::Moon 0.006 Make case of 'Moon' in next_quarter() output consistent. Append 'Moon' to first and last quarter description. Add method next_quarter_hash(), which wraps next_quarter() and returns a hash similar to the one returned by the Astro::Coord::ECI::TLE->pass() method. Add method almanac_hash(), which wraps almanac() in a manner similar to next_quarter_hash(). Astro::Coord::ECI::Star 0.006 Add method almanac_hash(), which wraps almanac() and returns a hash similar to the one returned by the Astro::Coord::ECI::TLE->pass() method. Astro::Coord::ECI::Sun 0.008 Add method next_quarter_hash(), which wraps next_quarter() and returns a hash similar to the one returned by the Astro::Coord::ECI::TLE->pass() method. Add method almanac_hash(), which wraps almanac() in a manner similar to next_quarter_hash(). Astro::Coord::ECI::TLE::0.015 Add ability to manufacture the 'tle' attribute when the object was not generated by the parse() method. Supress object dump when environment variable DEVELOPER_TEST is set. Correct SYNOPSIS to include $tle->set(backdate=>0) with comments. Document models sgp4r and model4r under the 'model' attribute, and add them to the DESCRIPTION section of the POD. Astro::Coord::ECI::TLE::Iridium 0.007 Document attributes am, day, extinction, and pm. Astro::Coord::ECI::TLE::Set 0.005 Add explicit represent() method. Add optional options hash as first argument of aggregate(). The only option is {select => $time} which if true causes select($time) to be called on any Astro::Coord::ECI::TLE::Set objecgts created. Astro::Coord::ECI::TLE::Utils 0.010 Add subroutine embodies($obj, $class) as a safe way to call represents() without throwing an exception if $obj is not blessed. bin/satpass 0.020 Use Geo::WebService::Elevation::USGS for height(). Drop support for SIMBAD 3, since U. Strasbourg did a while back. Trap SOAP errors and correct result hash expansion in height(). Eliminate function calls to UNIVERSAL::can and UNIVERSAL::isa. Correct (reverse) documented meaning of flare() options -am, -day, and -pm. Document models sgp4r and model4r under the 'model' paramter. Revise 'NOTES' section to cover plans for App::Satpass2, and changes for this release. 0.019 Astro::Coord::ECI 0.019 Truncate SYNOPSIS code. Range-check angular position input, with warning if out of range: Latitude: - PI/2 <= latitude <= PI/2; Longitude: - 2*PI <= longitude < 2*PI (Jean Meeus' examples sometimes use examples outside the conventional range); Right ascension: 0 <= right ascension < 2*PI Astro::Coord::ECI::Moon 0.005 Clarify and expand SYNOPSIS code. Astro::Coord::ECI::Star 0.005 Correct and expand SYNOPSIS code. Normalize computed right ascension to range 0 to 2 PI. Astro::Coord::ECI::Sun 0.007 Clarify and expand SYNOPSIS code. Astro::Coord::ECI::TLE 0.014 Clarify and expand SYNOPSIS code. Astro::Coord::ECI::TLE::Iridium 0.006 Correct SYNOPSIS code. Document problems with magnitude estimate when the Sun is close to the horizon as seen from the satellite. Astro::Coord::ECI::TLE::Set 0.004 Clarify and complete SYNOPSIS code. 0.018 Astro::Coord::ECI 0.018 Update version number and copyright date. No other changes. Astro::Coord::ECI::TLE 0.013 Add semimajor(), to calculate and return the semimajor axis of the orbit. Update Iridium status: mark Iridium 28 (OID 24948) failed, and Iridium 95 (OID 27375) as in service (was spare). bin/satpass 0.018 Under Mac OS X, use Mac::Pasteboard for clipboard operations if available; supress pbcopy warning when run as cron job. Fix 'height' query to track changes in USGS' elevation web service. t/tle_sgp4r.t Correct the code that extracts the needed TLEs from the downloaded zip file. 0.017 Astro::Coord::ECI 0.017 Fall back to homegrown (and un-general, and insufficiently tested) code if Storable::dclone not available. Astro::Coord::ECI::TLE 0.012 Correct behavior when Scalar::Util::dualvar not present. Astro::Coord::ECI::TLE::Iridium 0.005 Use max() and min() from Astro::Coord::ECI::Utils. Astro::Coord::ECI::Utils 0.009 Added looks_like_number(), max(), min(), defaulting to the Scalar::Util or List::Util implementations if possible, but providing our own if not. Clarify load_module() documentation. bin/satpass 0.017 Use looks_like_number() and max() from Astro::Coord::ECI::Utils. Recode _load_module to use Astro::Coord::ECI::Utils::load_module. Fix clipboard code to fail gracefully if Scalar::Util::weaken is unavailable. t/{moon,sun}.t Skip singleton test if Scalar::Util::refaddr not available. t/pod_coverage.t Correct also_private setting to make it skip all-uppercase+numeric (blind fix since mine seems to skip constants anyway, which is what I'm really trying to do). t/tle.t Use max() from Astro::Coord::ECI::Utils. t/pod_spelling.t 0.010 Add stop words 'max' and 'min'. bin/satpass 0.017 Supress '"our" variable $clipboard_unavailable masks earlier declaration ...' under 5.10.0. 0.016 Astro::Coord::ECI 0.016 Increment version. No other changes. Astro::Coord::ECI::TLE 0.011 Use PI-related constants from Astro::Coord::ECI::Utils. pass() no longer throws 'end before beginning' error if caused by setting backdate false; instead returns empty list of passes. Astro::Coord::ECI::TLE::Iridium 0.004 flare() no longer throws 'end before beginning' error if caused by setting backdate false; instead returns empty list of passes. Add model 'sgp4r', based on 'Revisiting Spacetrack Report #3', and equivalent metamodel 'model4r.' Make metamodel 'model' execute sgp4r. Have 'period' take into account which model is being used. Build.PL Prompt for installation of 'satpass' script, defaulting to 'n'. Makefile.PL Fix license support check to work with developer versions of ExtUtils::MakeMaker. Prompt for installation of 'satpass' script, defaulting to 'n'. bin/satpass 0.016 Document major changes in classes. No other changes. eg/tle_period.t Pseudo-test to compare the various period calculations. eg/README Update to add eg/tle_period.t t/{eci,moon,star,sun}.t Remove dependency on Math::Trig. Prefer Astro::Coord::ECI::Utils over local definitions of constants. t/iridium.t Clarify (I hope!) how to run the Iridium tests. t/tle_sgp4r.t New test for model sgp4r. TLEs are not included in the kit, but are downloaded if needed. t/sgp4r.out Comparison data for tle_sgp4r.t. Renamed from tforver.out in the 'Revisiting Spacetrack Report #3' download. t/pod.t Remove unused variable t/pod_coverage.t Remove unused variable 0.015 Astro::Coord::ECI 0.015 Bump version number. No other changes. bin/satpass 0.015 Document pod coverage test change, intent to and plans for implementing "Revisiting Spacetrack Report #3". Bump version. t/pod_coverage.t Specify all-caps routines as private, since some testers are getting failures on 'use constant' declarations. I don't get these, so the change is kind of blind. 0.014 Astro::Coord::ECI 0.014 Add equinox_dynamical attribute; precess() now uses this as start point and leaves the time alone. It is also used when going from ECI to ECEF, and set to the current time when going from ECEF to ECI. Add global $EQUINOX_TOLERANCE to determine minimum precession when converting from ECI to ECEF. Add method equinox_dynamical for performance. Document dynamical and universal times. Add method precess_dynamical() to precess to the given dynamical time. The precess() method simply converts its argument to dynamical and delegates to this. Astro::Coord::ECI::Moon 0.004 Have model set equinox_dynamical attribute to modeled dynamical time. Astro::Coord::ECI::Star 0.004 Set equinox_dynamical attribute before precessing to current equinox. Precess coordinates at end of time_set(), not in middle. Astro::Coord::ECI::Sun 0.006 Have model set equinox_dynamical attribute to modeled dynamical time. Astro::Coord::ECI::TLE 0.10 Add backdate attribute (default: true) to control whether pass() uses elements before their epoch. Use the alias() mechanism for special-case settings of the illum attribute. Have models set equinox_dynamical to the dynamical epoch. Astro::Coord::ECI::TLE::Iridium 0.003 Have backdate attribute control whether flare() uses elements before their epoch. Astro::Coord::ECI::TLE::Set 0.003 Minor documentation tweaks and POD fixes. Astro::Coord::ECI::Utils 0.008 Add constant JD_OF_EPOCH, globals $DATEFORMAT and $JD_GREGORIAN, and subroutines date2jd, date2epoch, epoch2datetime, jd2date, jd2datetime. Add subroutine load_module and centralize all on-the-fly loading here, for support of .pmc modules. bin/satpass 0.014 Add 'echo' and 'times' commands. Add 'backdate' parameter, propagate to pass() and flare(). Add 'desired_equinox' parameter, use it when displaying inertial coordinates (only equatorial, at the moment). Allow pseudo-redirection of command output into a pipe. 0.013 Astro::Coord::ECI 0.013 No code changes, but updated version to be visible to CPAN 'r'. Astro::Coord::ECI::TLE 0.009 Updated canned Iridium status table for failure of Iridium 36 and its replacement by Iridium 97. Astro::Coord::ECI::TLE::Iridium 0.002 Fixed occasional borderline-case spurious flare prediction. bin/satpass 0.013 Added -version command option, to display preamble and exit. Wrap probe for clipboard helpers in eval{}. Among other things, this allows the script to run in taint mode. Add -choose option to list(). Allow extra arguments to status show, to do selective status display. t/moon.t Fixed cosmetic undefined value error when Scalar::Util does not implement refaddr(). t/sun.t Fixed cosmetic undefined value error when Scalar::Util does not implement refaddr(). 0.012 ECI.pm 0.012 Localized $Data::Dumper::Terse Fixed divide-by-zero in azel() when the points coincide. Convert angle() to use law of haversines rather than law of cosines, for better performance on small angles. ECI/Sun.pm 0.005 Add magnitude() method. ECI/TLE.pm 0.008 Add {body} and {station} to hash returned by pass(). Add support for reblessing to Astro::Coord::ECI::TLE::Iridium if appropriate. This includes rebless(), before_reblessing(), after_reblessing(), alias(), can_flare(), status(), and the {reblessable} attribute. ECI/TLE/Iridium.pm 0.001 Initial release. ECI/Utils.pm 0.007 Confess on invalid acos() argument. Add find_first_true() to support finding Iridium flares. bin/satpass 0.012 If a source file ends with a continued line, warn and abandon the line. Set the time on the appulsing body before obtaining its coordinates. Fix error in end time parser in position(). Throw error if doing 'sky lookup' on a body that is already in the sky. Have pass() round the displayed time for the appulsing body. Add flare() to calculate Iridium flares. Modify position() to report flare potential for Iridium satellites. Added -choose option to pass(), position(), tle(). Removed pass_old() and the timing parameter, strongly deprecated in version 0.011. Added {simbad_version} parameter to select SIMBAD software to use. eg/iridium 0.001 New example calculating Iridium flares. 0.011 ECI.pm 0.011 Add horizon attribute. ECI/TLE.pm Add pass() method and supporting attributes. bin/satpass Add check_version() Defer loading of optional modules to speed startup. Rewrite XML parsing to use either XML::Parser or XML::Parser::Lite, with XML::Parser being preferred. Fix fatal error when running off the end of the top-level command script. Support ~user in filenames. Convert pass() to use Astro::Coord::ECI::TLE->pass(). Old code remains as pass_old(), strongly deprecated. Use Time::HiRes for timing, if that is available. Document status of pass_old, 'timing' parameter (strongly deprecated) and the SIMBAD situation. eg/iss New example to demonstrate Astro::Coord::ECI::TLE->pass(). 0.010 ECI.pm 0.010 Check for null arguments on most calls, so we die now rather than later. Fix undefined value when calling set() with no arguments. ECI/Moon.pm 0.003 Make singleton object by default. ECI/Sun.pm 0.004 Make singleton object by default. bin/satpass 0.010 Add qualifiers -brief, -list, and -delete to macro command. Parameter explicit_macro_delete controls what the macro command does when given a name but no definition. Make -time work on macros and source commands. Add ability to abort macros and source scripts on error, controlled by parameter error_out. Build.PL Correct add_to_cleanup() call. Add omitted ECI/Sun.pm. Makefile.PL Add explicit PL_FILES => {}, to prevent old versions from trying to execute 'perl Build.PL Build'. 0.009 ECI.pm 0.009 Add represents() method. ECI/Sun.pm 0.003 Remove redundant definition of ASTRONOMICAL_UNIT; use AU from Astro::Coord::ECI::Utils ECI/TLE.pm 0.006 Add is_model_attribute(), is_valid_model(). ECI/TLE/Set.pm 0.002 Allow Astro::Coord::ECI::TLE::Set objects as arguments of add(). Take advantage of is_model_attribuite(), is_valid_model(). bin/satpass 0.009 Fix defaulting of second argument of quarters(). Allow macros to override core commands. Macros can no longer call themselves, and core commands can be accessed explicitly by the syntax core.command. Relative times for the second and subsequent arguments of a command are relative to previous time argument of the same command, whether absolute or relative. Build.PL 0.001 Initial version. 0.008 ECI.pm 0.008 Support the use of Astro::Coord::ECI::TLE::Set objects in the angle() method. Add method attribute(). ECI/TLE.pm 0.005 Add the null model. ECI/TLE/Set.pm 0.001 New container object. ECI/Utils.pm 0.006 Add dynamical_delta() method (was private method in ECI.pm). bin/satpass 0.008 Use Astro::Coord::ECI::TLE::Set objects to represent satellites when we have more than one set of orbital elements. Add help for Astro::Coord::ECI::TLE::Set. Add and document 'singleton' parameter. Use it in pass() and position(). Default end times relative to start times, rather than relative to the last explicit time. Fix interaction between clipboard functionality and test hook. Thanks to IMACAT for help diagnosing and verifying. Add acknowledgments. 0.007 ECI.pm Optimize, mostly by being smarter about when to clear cached coordinates. Correct spelling in POD. ECI/Moon.pm Change die to confess on programming error. Correct spelling in POD. ECI/Star.pm Correct spelling in POD. ECI/Sun.pm Correct spelling in POD. ECI/TLE.pm Modify internals for easier cache clearing. Better documentation of 'mean anomaly'. Correct spelling in POD. Trap invalid effective eccentricity in sgp4. The underlying cause of the problem is probably either an invalid TLE or using the TLE past its 'good until' date. ECI/Utils.pm Change die to confess on programming error. Correct spelling in POD. Makefile.PL Get rid of wrong-headed attempt to configure optional modules. bin/satpass Various documentation corrections. Correct spelling in POD. Add store() and retrieve() as interface to Storable. Centralize tilde expansion, and do it on cd(), load(), retrieve (), source(), store (). Preprocess -start and -end options of st(), to make dates consistent with the rest of satpass. Add -initialization_file command option. Add -optional option on source(). Add localize(), and macro/source call frames to support this. Add localize subcommand to st(). Make 'st show' a synonym for 'st get', and make 'st get' without arguments show all settings. Add test hooks, and a test to exercise the more arcane functions of the script. Add -source_layer and -retry_on_zero options to height_us(). Add a separate height_ca() method that makes use of the above options when delegating to height_us(), in response to anomalous responses to height queries. Fix problem displaying appulses in pass(). Make the position() display positions for a range of times. Add -realtime option to position() to display positions in near-real-time. Add drop(). Fix formatting of error messages from the local coordinate formatters. Have position() display epoch and illumination when displaying objects from the observing list. 0.006 ECI.pm Cache some calculations for re-use. ECI/Star.pm Tweak docs. ECI/Utils.pm Add intensity_to_magnitude(), atmospheric_extinction(). bin/satpass Correct check for whether location has been set. Old check did not recognize 0 latitude, longitude, or height. Special-case code to 'unset' tz when it is set to undef or ''. Make 'position' iterate over time, in real time with -realtime. Add -time global command option to time execution. Add 'country' parameter. Break out 'geocode' and 'height' to country-specific versions, and make the original command dispatch based on 'country' parameter or explicit argument. Allow formatting of local coordinates without range information. Round pass times to the nearest second (since strftime truncates). Add 'almanac' command options -horizon, -quarters, -transit, and -twilight to restrict the output. Make height_us() work with revised USGS SOAP calling sequence. 0.005 ECI.pm Add 'inertial' read-only attribute. Add equatorial coordinates relative to observer. Fix negative right ascension - should be mod 2 pi. Tweak docs, including fuller synopsis. bin/satpass Add local_coord parameter to determine local coordinate system (azel or equatorial). Modify pass and position output to use local_coord. TLE.pm Tweak synopsis, to show that setting time runs model. 0.004 bin/satpass - Rewrite command parsing so that we can retain quotes and be POSIXly correct in option processing for the system command. Give tle command a -verbose qualifier, to produce a formatted listing of the orbital parameters. Provide HTML =item targets consistent with links. ECI.pm Clean up docs. TLE.pm Clean up docs, wrap some really long lines. Replace _fmod2p with mod2pi from Utils module. 0.003 T. R. Wyant bin/satpass - Remove all uses of Clipboard, to try to get built under ActiveState's ActivePerl. Correct version number in Astro::SpaceTrack load. Accumulate Iridium operational statuses. Add status command to display satellite operational status. Astro::Coord::ECI Increment version, as a lazy way to increment the distribution version. Tweak documentation. Astro::Coord::ECI::Utils Make subclass of Exporter, since ActiveState's build seems to have a problem with 'use Exporter qw{import}' (except under darwin, strangely enough). Increment version. 0.002 T. R. Wyant bin/satpass - Behave better when no Clipboard module. Do not use Clipboard module under darwin. Require Astro::SpaceTrack 0.016 (if any). Default star distance now 10000 parsecs (was 1 parsec). Add 'sky lookup', using Astro::SIMBAD::Query. Modified 'sky' listing format to look like 'sky add' commands. Astro::Coord::ECI - Add NAD83 ellipsoid. Astro::Coord::ECI::Utils - Corrected documentation. 0.001 T. R. Wyant Initial release