10.122 2021-11-10 T. R. Wyant 2 Add CONTRIBUTING file 3 4 Document demise of Willmann-Bell and the transfer of their assets to 5 Sky and Telescope. 6 70.121 2021-08-08 T. R. Wyant 8 Fix implementation of Borkowski's algorithm for converting 9 geocentric to geodetic coordinates. An edge case in my 10 implementation resulted in a divide-by-zero error at geocentric 11 latitude 90 degrees. Thanks to Jason Venner for reporting this 12 issue. 13 14 Address divide-by-zero in azel() velocity calculation when range is 15 0. Because some effort has been made to provide a position result 16 in this case (rather than an error), I decided that since the 17 velocity is undefined in this case I would just not return it. 18 Thanks to Jason Venner for reporting this issue. 19 20 Correct generation of 'provides' metadata. Thanks to Favio Poletti 21 for blogging 22 https://github.polettix.it/ETOOBUSY/2021/06/15/the-real-pause-workaround/, 23 and ultimately to Joel Berger for the pointer to 24 https://metacpan.org/pod/CPAN::Meta::Spec#no_index 25 260.120 2021-05-20 T. R. Wyant 27 Use Heavens-Above intrinsic magnitude for Tianhe and the ISS. 28 29 Tweak Math Doctors acknowledgement for haversine article recovery. 30 310.119 2021-04-16 T. R. Wyant 32 Update haversine link to point to "The Math Doctors" web site 33 34 Fix clone(), and test to ensure it stays fixed. 35 360.118 2021-04-01 T. R. Wyant 37 Add rt.cpan.org back to bug reporting methods. Long live RT! 38 39 Refactor authortest into three, to eliminate the need for stub files 40 to test without optional modules. 41 42 Remove references to the NASA Human Space Flight web site, since it 43 has been taken down. 44 45 Fix broken POD links. Most were in script/satpass, but the "Ask Dr. 46 Math" link on haversines is also gone, because the teachers' 47 association that took it over from Drexel has decided that their 48 function is to restrict knowledge, not disiseminate it. 49 50 Get prerequisites up to snuff, and add xt/author/prereq.t to ensure 51 they stay that way. 52 530.117 2021-01-01 T. R. Wyant 54 Fix bug in Astro::Coord::ECI::Sun next_quarter(). This bug was 55 introduced in version 0.089 (released 2018-02-02) when I replaced an 56 iterative calculation with Meeus' closed-form algorithm. The bug was 57 in my interface to Meeus' algorithm, and manifested only between the 58 last quarter and the end of the year. It did not manifest if you set 59 Sun attribute 'iterate_for_quarters', which caused the old algorithm 60 to be used. 61 62 Use GitHub as bug tracker. R.I.P. rt.cpan.org. 63 64 Add Travis CI testing. 65 66 Remove Tiangong 2 from canned magnitude table 67 680.116 2020-09-10 T. R. Wyant 69 Remove all mention of subs nutation_*, obliquity, and friends, which 70 were defined in Astro::Coord::ECI::Utils. These were replaced by 71 methods. 72 730.115 2020-08-19 T. R. Wyant 74 Remove prototypes from testing subroutines defined in t/*.t and 75 inc/My/Module/Test/*.pm 76 77 Update canned satellite magnitude table. 78 790.114 2020-06-25 T. R. Wyant 80 Document undef as argument to equation_of_time() 81 82 Update canned magnitude table per Kelso. 83 84 Correct heliocentric_ecliptic*(), I hope. I don't have worked 85 examples, but at least the current computation is sane in that the 86 heliocentric coordinates of the Earth are the complement of the 87 geocentric coordinates of the Sun. 88 890.113 2020-03-07 T. R. Wyant 90 Subroutines equation_of_time(), nutation_in_longitude(), 91 nutation_in_obliquity(), and obliquity() are now fatal. They were 92 deprecated in favor of Astro::Coord::ECI methods equation_of_time(), 93 nutation(), and obliquity(). The reason for the change was to allow 94 classes access to higher-precision versions of these calculations if 95 desired (e.g. the Astro::Coord::ECI::VSOP87D::* classes). 96 970.112 2020-01-26 T. R. Wyant 98 Add Astro::Coord::ECI::Utils subroutines greg_time_gm() and 99 greg_time_local(), which convert date and time into epoch time. 100 Unlike time_gm() and time_local() (which interpret the year however 101 Time::Local timegm() and timelocal() do), the new routines always 102 interpret the year as Gregorian. The older routines are now 103 discouraged, and have been eliminated in this package's code. 104 1050.111 2020-01-11 T. R. Wyant 106 Fix Y2020 bug. 107 108 The problem here was Time::Local's weird handling of years less 100, 109 which is inconsistent with the gmtime() and localtime() built-ins, to 110 wit: years less than 100 are considered to be within 50 years of the 111 current year. As of January 1 2020, 70 became no longer 1970 (the usual 112 epoch year) but 2070. 113 114 As far as I can determine the only impact was in a test that contained 115 an adjustment for systems that might have a non-Unix epoch. 116 117 The solution was to specify a four-digit year in the test, and to use 118 Time::Local's timegm_modern() and timelocal_modern() where available. 119 120 Thanks to Chris Williams (BINGOS), who uncovered this in one of his CPAN 121 tester systems. 122 123 CPAN TESTERS ROCK! 124 125 Suppress 'Ambiguous use of -PIOVER2' under 5.10.1. Thanks to Chris 126 Williams (BINGOS) for finding this. 127 128 Eliminate redirections in POD URL links 129 1300.110 2019-10-04 T. R. Wyant 131 Validate horizon and almanac_horizon. This is pretty much the same 132 situation as twilight -- they were completely unvalidated, but are 133 now restricted to the range - PI/2 to PI/2 radians, inclusive. 134 1350.109 2019-09-08 T. R. Wyant 136 Further deprecate nutation and obliquity subroutines in favor of the 137 same-named methods. Subroutine calls now always result in a warning. 138 In six months they will be fatal. 139 1400.108 2019-08-29 T. R. Wyant 141 Validate 'twilight' attribute. It must be between -PI/2 and PI/2 142 inclusive. Thanks to Kay Kilpatrick for bringing this to my 143 attention. 144 145 Correct eval() check in load_module(). 146 1470.107 2019-08-03 T. R. Wyant 148 Fix broken POD links and add a test to ensure they stay fixed. 149 150 Add low-level subroutine position_angle() to 151 Astro::Coord::ECI::Utils. 152 153 Allow station argument to equatorial_apparent() method. 154 1550.106 2019-05-13 T. R. Wyant 156 Added some canned satellite magnitudes, mostly in the range of 4.5 157 to 5 or so. 158 1590.105 2019-03-19 T. R. Wyant 160 Require at least Scalar::Util 1.22. With profound thanks to Nigel 161 Horne for testing on versions of Perl old enough to expose the need 162 for this. 163 1640.104 2019-03-09 T. R. Wyant 165 Correct error message definition in sgp4r(). 166 167 Have the null model return its invocant. 168 169 Nutation and obquity subroutines now warn on first use. These (and 170 equation_of_time(), which uses them) are deprecated in favor of the 171 relevant methods. The motivation was to allow higher-accuracy 172 implementations where appropriate (e.g. 173 Astro::Coord::ECI::VSOP87D::*). 174 175 Try to kill undef errs in 'brightest' calc. 176 177 Correct version in Southern-hemisphere and ::Utils deprecation 178 notices. 179 180 Add eg/maidenhead 181 182 Make ::TLE::Iridium optional in script/satpass 183 1840.103 2018-11-03 T. R. Wyant 185 RT 127488: Load default Sun class before use 186 187 This actually manifested in RT 127463 against SVG-Calendar. The smallest 188 self-contained piece of code to tickle this is 189 use Astro::Coord::ECI; 190 Astro::Coord::ECI->new()->get( 'sun' ); 191 192 The bug was introduced (or maybe just exacerbated) in version 0.100_01, 193 which was where I added support for alternate Sun classes. In the course 194 of this, 'use Astro::Coord::ECI::Sun' was dropped from 195 Astro::Coord::ECI::Moon and Astro::Coord::ECI::Star. The former is 196 involved in the SVG-Calendar problem. 197 198 Thanks to Slaven Rezic for spotting this in his smoker, submitting the 199 original RT ticket, and adding me to it with the note that it seemed 200 only to be a problem with recent versions of Astro-satpass. 201 2020.102 2018-09-24 T. R. Wyant 203 Almanac descriptions are now sensitive to object name. That is to 204 say, if for some reason you designate a different name for the Sun, 205 almanac descriptions will reflect that. 206 207 The mutator for the 'sun' attribute now requires the new value to be 208 a member of $self->SUN_CLASS(), rather than SUN_CLASS. This way a 209 subclass can place more stringent restrictions on it. 210 211 Also it turns out that the 'sun' attribute was never documented. So it 212 is now. 213 2140.101 2018-09-07 T. R. Wyant 215 Move nutation, obliquity, equation_of_time to Astro::Coord::ECI. 216 They become methods rather than subroutines so that they can be 217 overridden when higher accuracy is needed. 218 219 Install @CARP_NOT in all modules. 220 221 Have Moon and Star use correct Sun object for phase, aberration 222 223 Have the Sun's 'sun' attribute be itself. Access to it returns the 224 invocant, and mutations are ignored. 225 226 Add Utils functions rad2dms() and rad2hms() 227 228 In the script/satpass script, update all contained objects when the 229 'illum' or 'sun' settings are changed. 230 2310.100 2018-07-22 T. R. Wyant 232 Add non-TLE attributes as optional hash reference to parse(). 233 Actually, this already worked for traditional TLEs, it just needed 234 to be documented. But it needed to be added to the JSON code. 235 236 Fix $eci->set( sun => ... ). The mutator was not in fact setting the 237 new value of the attribute. Included in this is support for changing 238 the static (i.e. default) value of the attribute. 239 240 Make singleton Sun & Moon per-class. This is so that you always get 241 back the same class you requested if there is more than one class 242 that can represent each body (say, at different accuracies). 243 244 Pull out Astro::Coord::ECI::TLE::Iridium as separate distribution. 245 The canned statuses went with it. 246 2470.099 2018-06-29 T. R. Wyant 248 Canned status update: 249 250 - Iridium 41 failed 251 - Iridium 65 spare 252 - Iridium 67 failed 253 - Iridium 75 failed 254 - Iridium 81 failed 255 256 Move iridium status setup to Astro::Coord::ECI::TLE::Iridium. This 257 is in preparation for spinning off that module into its own package. 258 2590.098 2018-06-16 T. R. Wyant 260 Canned status update: 261 262 - Iridium 18 failed 263 - Iridium 67 spare 264 - Iridium 68 decayed 265 - Iridium 75 spare 266 2670.097 2018-06-04 T. R. Wyant 268 Large canned status update: 269 270 - Iridium 7 failed 271 - Iridium 11 spare 272 - Iridium 15 spare 273 - Iridium 18 spare 274 - Iridium 21 decayed 275 - Iridium 31 spare 276 - Iridium 37 decayed 277 - Iridium 39 failed 278 - Iridium 46 failed 279 - Iridium 47 spare 280 - Iridium 55 spare 281 - Iridium 58 spare 282 - Iridium 61 spare 283 - Iridium 62 spare 284 - Iridium 68 failed 285 - Iridium 81 spare 286 - Iridium 90 failed 287 - Iridium 96 failed 288 - Iridium 97 spare 289 290Decays are from Space Track. Other status changes are from Dr. T. S. 291Kelso's Celestrak web site. "Spare" conflates several Celestrak 292statuses; the above spares are typically "[B]" (backup) or "[P]" (partly 293operational). 294 2950.096 2018-05-23 T. R. Wyant 296 Link to metacpan.org rather than search.cpan.org. 297 298 Canned status updates: 299 - Decay of Iridium 25 300 - Decay of Iridium 72 301 - Iridium 64 now spare per Kelso 302 - Iridium 66 now spare per Kelso 303 - Iridium 68 now spare per Kelso 304 - Iridium 71 now spare per Kelso 305 3060.095 2018-05-08 T. R. Wyant 307 Iridium 13 decayed. Canned status update. 308 3090.094 2018-04-27 T. R. Wyant 310 Kelso drops Tiangong 1 from visual.txt. This results in a change to 311 the canned magnitude table. 312 313 Update canned Iridium status table for: 314 - Decay of Iridium 19 and 94; 315 - Mark Iridiums 29, 33, and 72 spare per Kelso. 316 317 Prefer /[0-9]/ to /\d/ for matching digits. The latter matches 318 non-ASCII digits as well as ASCII ones, but the former is what I 319 want, because usually once there is a match numeric conversion 320 happens. 321 3220.093 2018-04-05 T. R. Wyant 323 Iridium 23 decayed March 28 2018. This necessitates updating all the 324 canned Iridium status tables. 325 326 Kelso marks Iridiums 12, 13 & 76 partly operational. This translates 327 to "SPARE" in the Iridium status table. 328 3290.091 2018-03-10 T. R. Wyant 330 Kelso marks Iridium 94 as partly operational. Updated canned status 331 to call it spare. 332 333 Use manifest constants for reference types. That is, instead of 334 'ARRAY', use ARRAY_REF, defined using 'use constant', and so on. 335 3360.090 2018-02-22 T. R. Wyant 337 Update canned Iridium status table for decay of Iridiums 3, 43 and 338 49, and making 3, 23, and 46 spare per Kelso. 339 3400.089 2018-02-02 T. R. Wyant 341 Kelso marks Iridiums 3, 37, 49 as "P" ("partly operational"). This 342 is "spare" in my classification. Sladen calls 3 failed, but I'm 343 using the Kelso data in the canned status table in 344 Astro::Coord::ECI::TLE. 345 346 Fix problem with Astro::Coord::ECI::Sun when Time::y2038 used. 347 348 New algorithm for equinoxes and solstices. The new algorithm is from 349 Jean Meeus' "Astronomical Algorithms." 2nd edition, chapter 27 350 ("Equinoxes and Solstices"), and should be more accurate, at least 351 for reasonably current times. 352 353 If you want the old iterative algorithm back, you can set new 354 attribute 'iterate_for_quarters' to a true value. 355 356 Correct typo in calculation of Sun's postion. The correction 357 produced no change in the equinoxes and solstices calculated by 358 iteration. 359 360 Add eg/usno-seasons. This displays equinoxes and solstices for a 361 given year, both as computed by Astro::Coord::ECI::Sun and as 362 downloaded from the United States Naval Observatory. 363 3640.088 2018-01-16 T. R. Wyant 365 Iridium 34 decayed January 8 2017. So marked in canned status. 366 3670.087 2017-12-30 T. R. Wyant 368 Iridium 6 decayed December 23 2017. Update canned status for this. 369 370 Kelso marks Iridium 34 tumbling, 96 partial December 22 2017. Update 371 canned status for this. 372 373 Kelso marks Iridiums 6, 19 & 22 as tumbling. Canned status table 374 updated to reflect this. 375 3760.086 2017-12-06 T. R. Wyant 377 Mark Iridium 8 as decayed in canned status table. 378 3790.085 2017-11-24 T. R. Wyant 380 Kelso says Iridiums 5, 8, and 51 are tumbling. Canned status updated 381 to reflect this. 382 3830.084 2017-10-12 T. R. Wyant 384 385 Add support for decayed Iridium satellites: 386 387 * Carry them in canned status table 388 389 * Have can_flare( 'all' ) return true regardless of satellite 390 status. 391 392 All this was triggered by Kelso's recognition that Iridium 77 had 393 decayed. 394 3950.083 2017-09-13 T. R. Wyant 396 397 Add -decayed to eg/visual. 398 399 This eliminates decayed bodies. I decided not to remove these from 400 the magnitude table because of historical interest. 401 402 Kelso removes 38253 from visual.txt. Decayed 2017-08-18. 403 404 Kelso marks 25471 Iridium 77 failed 405 406 Kelso marks 24949 Iridium 30 failed 407 408 Kelso adds 33411 to visual.txt. 409 410 Kelso adds 11251 METEOR 1-29 to visual.txt 411 412 Use qsmag instead of mcnames to suppliment magnitudes in the canned 413 magnitude table. As of July 24 2017 mcnames appeared to be 414 double-compressed and corrupt besides. Both are maintained by Mike 415 McCants, but the former is input to his QuickSat program and so 416 likely to be less fragile. I hope. The mcnames file was eventually 417 corrected, but I am sticking with qsmag for now. 418 419 Kelso reports decay of Iridium 74. 420 4210.082 2017-06-14 T. R. Wyant 422 Kelso reports Iridium 79 out of service. 423 4240.081 2017-05-26 T. R. Wyant 425 Update canned magnitude table. 426 427 Deprecate McCants' status. His web page notes itself as no longer 428 maintained. 429 430 Document impending changes in Iridium support. 431 432 Kelso reports Iridiums 43 & 82 tumbling. Canned status changed in 433 Astro::Coord::ECI::TLE to reflect this. 434 4350.079 2017-04-26 T. R. Wyant 436 Move satpass script from bin/ to script/ 437 438 Mark OID 25041 (Iridium 40) tumbling, and 25042 (Iridium 41) spare 439 per Kelso. The latter appears to have actually been declared spare 440 in July 2016, but somehow I missed updating the canned status table. 441 442 Kelso added OID 16719 (COSMOS 1743) to magnitudes 443 4440.078 2017-02-10 T. R. Wyant 445 Fix L<> links, and things that should have been L<> but were not. 446 Thanks to Ben Bullock for the pull request. 447 448 Add 'provides' data to ExtUtils::MakeMaker output 449 450 Add 'base' to dependencies. 451 4520.077 2016-12-03 T. R. Wyant 453 Remove leading 0 from Space Track 3le names 454 455 Handle year incompatibility between Time::Local and Time::y2038 456 This is the same problem as RT #118861 on Astro-App-Satpass2, and I 457 applied the same solution. As a result of this, 458 Astro::App::Satpass2::Utils now exports time_gm() and time_local(). 459 4600.076 2016-11-06 T. R. Wyant 461 Clean up Changes file. Version 0.075 had raw Git log for changes. 462 Oops. 463 4640.075 2016-11-06 T. R. Wyant 465 Add estimated magnitude for Tiangong 2. 466 Since I believe (per Wikipedia) that it is the same size as Tiangong 1, 467 I am estimating the same absolute magnitude (4.0). 468 4690.074 2016-09-04 T. R. Wyant 470 471 Add HISTORICAL CALCULATIONS section to OVERVIEW. 472 473 Correct almanac_hash() methods when station is defaulted to the body's 474 station attribute rather than explicitly passed. 475 476 Add eg/solstice 477 4780.073 2016-08-07 T. R. Wyant 479 Update Celestrak visual.txt date. No data change. 480 481 Update canned Iridium statuses and magnitudes in 482 Astro::Coord::ECI::TLE. 483 484 Tweak satpass script geocoding heuristics. 485 486 Tweak eg/visual for Perl 5.6.2. 487 4880.072 2016-07-02 T. R. Wyant 489 Set canned status for Iridium 57 (OID 25273) failed per Kelso. 490 4910.071 2016-01-06 T. R. Wyant 492 Add GitHub repository to metadata. 493 494 Change satpass script to geocode using OSM. 495 Also fix apparent bit rot in show command. 496 497 Correct Astro::Coord::ECI->next_elevation(). Elevation was being 498 calculated inconsistently, resulting in incorrect rise/set and 499 begin/end twilight results inside the Arctic and Antarctic Circles 500 on days when the Sun did not rise or set. This error may have been 501 introduced in March 2012 with version 0.049_01, though it may go 502 back to the original release. Thanks to Adam Osuchowski for finding 503 this. 504 5050.070 2015-06-25 T. R. Wyant 506 The Astro::Coord::ECI::Sun almanac() method now returns the correct 507 quarter descriptions (equinox, solstice) when the 'station' 508 attribute is set to a location south of the Equator. The event 509 detail (which is encoded as a number) does not change, but is now 510 documented to refer to 'March equinox', and so on. 511 512 Add -date option to eg/almanac 513 5140.069 2015-06-07 T. R. Wyant 515 Update canned status of Iridium 63 (OID 25286) 516 5170.068 2015-03-26 T. R. Wyant 518 Make the satpass script time zone functionality work with Date::Manip 519 versions 6.49 and greater. 520 521 Track changes in Mike McCants' magnitude data. 522 5230.067 2014-11-10 T. R. Wyant 524 Fix failure in t/tle_support.t. I hope. 525 526 Add OID 15494 to canned magnitude table. 527 5280.066 2014-10-16 T. R. Wyant 529 Update Iridium 42 (OID 25077) to failed, per Kelso. 530 531 Regenerate canned magnitude table. 532 533 Croak on encountering JSON key SATNAME. This was replaced by 534 OBJECT_NAME during the REST interface's beta. 535 536 Remove installer question about installing satpass, per documented 537 deprecation schedule. 538 5390.065 2014-07-27 T. R. Wyant 540 Prevent TLE manufacture for oddball objects. 541 542 Add TLE pass variant PASS_VARIANT_TRUNCATE, which truncates passes to 543 the beginning and end times given to pass(), rather then computing 544 complete passes (and therefore requiring the satellite to rise and 545 set). 546 547 Expose Space Track time formatting and decoding routines for possible 548 use by subclasses. The key routines __to_json() and __from_json() 549 are still undocumented and considered highly experimental, though. 550 Sorry. 551 552 Add OID 00694 to Astro::Coord::ECI::TLE canned magnitudes. 553 5540.064 2014-05-29 T. R. Wyant 555 Add Astro::Coord::ECI::TLE method illuminated() 556 5570.063 2014-05-02 T. R. Wyant 558 Allow PASS_VARIANT_BRIGHTEST event even if the 'visible' attribute is 559 false. 560 561 Document magnitude functionality in satpass script. 562 563 Add pass variant PASS_VARIANT_BRIGHTEST. If this is set, an event 564 representing the time the satellite is brightest will be added to 565 the pass. This is ignored if the calculation can not be made (e.g. 566 if 'visible' is false, or 'intrinsic_magnitude' is undefined). 567 568 Clarify Astro::Coord::ECI::Moon phase() docs. 569 570 Eliminate uses of each() built-in. 571 572 Add magnitude functionality to satpass script. 573 5740.062 2014-04-01 T. R. Wyant 575 Update canned status for Iridium 29 (24944). Kelso says it's tumbling. 576 577 t/tle_json.t now only dumps versions on an error. 578 579 Require correct Perl version in t/tle_mag.t 580 581 In t/tle_json.t, work around problem that occurs when JSON::XS encodes 582 a number in a locale that uses a comma as the decimal point, such as 583 'de_DE.UTF-8'. Make a note of this in Astro::Coord::ECI::TLE, since 584 there is nothing I can do in my code to actually fix the problem. 585 586 The 'unpack' built-in does not default to $_ as the buffer to unpack 587 under Perls before 5.10. 588 589 Have Astro::Coord::ECI::TLE magnitude() method set the station's time. 590 591 Correct logic for building the fold_case() utliity subroutine under 592 Perls before 5.16. 593 594 Computation of (perhaps very) approximate magnitudes for satellites is 595 now supported. Changes to support this include: 596 597 - A magnitude() method on all classes that represent satellites; 598 599 - An intrinsic_magnitude attribute (defaulting to undef) on 600 Astro::Coord::ECI::TLE objects; 601 602 - Default intrinsic_magnitude to 7 on 603 Astro::Coord::ECI::TLE::Iridium objects; 604 605 - A canned table of intrinsic magnitudes in Astro::Coord::ECI::TLE 606 which includes most of the objects in the Celestrak visual list, 607 with magnitudes from Mike McCants' mcnames.zip and vsnames.zip 608 files; 609 610 - Support in the Astro::Coord::ECI::TLE parse() method to set the 611 magnitude of satellites that are in the table; 612 613 - Static method magnitude_table() on Astro::Coord::ECI::TLE to 614 maintain the canned magnitude table; 615 616 - Modify the Astro::Coord::ECI::Sun magnitude() method to take an 617 observing station argument (which is ignored) to be consistent 618 with the same-named Astro::Coord::ECI::TLE method. 619 620 The precess() and precess_dynamical() methods now do nothing to 621 objects set to Earth-fixed coordinates. Previously they were 622 converted to Ecliptic (and therefore inertial) coordinates, which 623 manifested as a bug when the observing station was an attribute of a 624 star. 625 626 Support new (to us) Space Track JSON keys FILE, OBJECT_TYPE, ORDINAL 627 and ORIGINATOR with same-named (except for being lower case) 628 attributes. 629 630 Method body_type() now returns the 'object_type' attribute if that is 631 defined. If not it computes its return from the object name, like it 632 always has. 633 6340.061 2014-01-13 T. R. Wyant 635 On install, warn that I intend to remove the 'install satpass' 636 question asked by Build.PL and Makefile.PL. The only way to install 637 the satpass script will be to run Build.PL or Makefile.PL with the 638 '-y' option. Also warn of eventual package name change, from 639 'Astro-satpass' to 'Astro-Coord-ECI'. 640 641 Warn every time Astro::Coord::ECI::TLE->parse() encounters JSON key 642 SATNAME. This was removed while Space Track's REST interface is 643 still in beta. 644 645 Computation of a Doppler shift based on the station's 'frequency' 646 attribute is now fatal. The body's 'frequency' attribute should be 647 set instead. 648 649 Remove all references to the satpass 'lit' setting and the 650 corresponding Astro::Coord::ECI 'limb' attribute, which were 651 deprecated out long since. 652 653 Remove all mention of the 'upper' argument to the Astro::Coord::ECI 654 azel() method. It's still an exception to pass a second argument, 655 though. 656 657 Remove all references to SOAP::Lite in the satpass code, except for 658 POD saying it was gone. 659 660 Various changes to Astro::Coord::ECI::TLE to try to support 661 prospective classes representing non-orbiting objects. These are 662 experimental, and may change or be retracted with little or no 663 notice. The hope is a class that can represent the objects in one of 664 NASA's .kmz files that are published for certain launches. These 665 include: 666 667 * Refactoring illumination and periodic position calculations in the 668 pass() method; 669 670 * Add public method intrinsic_events(), which returns events 671 intrinsic to the body, rather than observational ones like rise 672 and set, and call it in the pass() method; 673 674 * Add protected (and therefore doubly experimental) method 675 __pass_backup_earliest() to limit how hard the pass() method tries 676 to find a rise time when the pass starts with the body above the 677 horizon. 678 679 I have no idea whether the class this is in support of will ever see 680 the light of day. 681 682 Improve Astro::Coord::ECI::Utils::find_first_true() documentation. 683 6840.060 2013-12-18 T. R. Wyant 685 In eg/almanac, correct the handling of -sun and -moon when exactly one 686 is specified. The erroneous processing forced both to be asserted 687 in all circumstances. Thanks to Mike Donn for reporting the 688 problem. and pointing out the solution. 689 6900.059 2013-12-03 T. R. Wyant 691 Make the zero-argument form of the maidenhead() method conform to the 692 docs. 693 6940.058 2013-11-25 T. R. Wyant 695 Handle undef period in pass(). At the moment it's handled by fudging in 696 90 minutes, which is bogus, but lets me experiment objects whose 697 motion is defined by a list of positions. 698 699 Add a paragraph on how passes are detected to the 700 Astro::Coord::ECI::TLE pass() documentation. 701 702 In the satpass script, implement 'sky lookup' in terms of 703 Astro::SIMBAD::Client script() rather than query(), so that we do not 704 need SOAP::Lite. 705 7060.057 2013-07-08 T. R. Wyant 707 Deprecate the satpass script. 708 709 Modify the appulse algorithm when the appulsing body is a satellite, 710 since the original algorithm did not necessarily converge to the 711 correct time for satellites in similar orbits. Thanks to Vidar 712 Tyldum for bringing this to my attention, and working with me on it. 713 714 Go back to simply allowing invalid international launch designators. 715 They started getting rejected about release 0.051_01 (2012-08-18). 716 Thanks to Vidar Tyldum for bringing this to my attention, and 717 working with me on it. 718 719 Take spaces as equivalent to zeroes in numeric fields (which I believe 720 is the old FORTRAN behavior), and in the numeric portions of the 721 international launch designator. 722 723 As a consequence of the above, the 'international' attribute will be 724 zero-filled on retrieval. 725 726 Update docs. Replace 'location' by 'station' where that is what is 727 meant. Add a (very brief) explanation of times to the overview. Also 728 add information on the Space Track REST interface to the overview. 729 730 Deprecations: 731 732 * The two-argument form of azel() is now fatal. 733 734 * The satpass script fails if you try to geocode without 735 Geo::Coder::Geocoder::US. 736 737 * Use of the satpass script 'lit' setting is now fatal; instead use 738 'edge_of_earths_shadow'. 739 740 * Use of the Astro::Coord::ECI::TLE 'limb' attribute is now fatal; 741 instead use 'edge_of_earths_shadow'. 742 743 * Feeding a JSON file to Astro::Coord::ECI::TLE->parse() which uses 744 the SATNAME key is deprecated, and produces a warning. This warning 745 will become fatal in the future. Instead use OBJECT_NAME. 746 747 * Warn every time a Doppler shift is computed using the station's 748 frequency. This will become fatal in the future. The frequency 749 should be set on the orbiting object. 750 7510.056 2012-12-08 T. R. Wyant 752 Deprecation warnings: 753 754 * The Doppler calculation warns the first time the frequency comes 755 from the station rather than the satellite. 756 757 * The satpass script warns every time geocoding is done if 758 Geo::Coder::Geocoder::US is not installed. 759 7600.055 2012-10-27 T. R. Wyant 761 Workaround for problem with Date::Manip clobbering $ENV{PATH} when it 762 is loaded. 763 764 T. S. Kelso recorded Iridium 4 (OID 24796) as being out of service 765 about midnight 20-Oct-2012 GMT. I have updated the canned status, 766 since I know he calls Iridium LLC to get the status. 767 768 Have the Astro::Coord::ECI::TLE status() method take optional OID 769 arguments for the 'show' subcommand. 770 7710.054 2012-10-09 T. R. Wyant 772 Correct field TLE_LINE0 in the JSON TLE generated by 773 Astro::Coord::ECI::TLE to include the leading '0 '. 774 775 INCOMPATIBLE CHANGE: In the JSON representaion of a TLE, the common 776 name of the body is now OBJECT_NAME, not SATNAME. This was done to 777 track the usage of Space Track, which did not previously have the 778 common name in its TLE data. The SATNAME field will still be used if 779 it appears in input, but is being put through a deprecation cycle. 780 7810.053 2012-09-10 T. R. Wyant 782 Suppress the 'OK' after an st( set => ...) in the satpass script. 783 784 Address satpass script Term::ReadLine load failures under the test 785 harness by doing the load in an eval, and falling back to the 786 non-ReadLine case. 787 788 Update the canned status table in Astro::Coord::ECI for the fact that 789 both Sladen and McCants call Iridium 51 (OID 25262) in service. 790 7910.052 2012-09-05 T. R. Wyant 792 Per schedule, the following deprecated items will produce a warning on 793 each use: 794 795 * The 'upper' argument of the Astro::Coord::ECI azel() method; 796 797 * The Astro::Coord::ECI::TLE 'limb' attribute; 798 799 * The satpass 'lit' setting. 800 801 All these warnings will become fatal in the first release on or after 802 March 1 2013. 803 804 Remove support for the 'horizon' setting of the Astro::Coord::ECI 805 'almanac_horizon' attribute. This was introdiced in 0.051_01, but on 806 second thought I decided the 'horizon' logic was ill-conceived. 807 808 Change the JSON representation of the International Launch Designator 809 to track Space Track change by Space Track to REST predicate 810 INTLDES. 811 812 Further corrections to t/tle_json.t for OS-dependant failures. 813 814 Enhance Astro::Coord::ECI::TLE->parse() to parse Iridium status off 815 the name if it is present. 816 817 Fudge the JSON in t/tle_json.t for system-to-system differences in 818 floating point representations (2-digit vs 3-digit exponent). 819 820 Remove the -json output formatting option from the satpass tle() 821 command. Instead, provide eg/convert_tle. 822 823 Add attribute almanac_horizon to Astro::Coord::ECI. This sets the 824 horizon for almanac calculations. The default is 0 (radians), but 825 other values are possible, as well as 'horizon' (meaning, use the 826 value of the 'horizon' attribute) and 'height' (meaning, depress the 827 horizon for the height of the observer above sea level). The satpass 828 script allows access to this. 829 830 Add JSON support for Astro::Coord::ECI::TLE and 831 Astro::Coord::ECI::TLE::Iridium. This includes the ability of 832 Astro::Coord::ECI::TLE->parse() to handle JSON orbital elements from 833 the Space Track REST interface (provided the optional JSON module 834 can be loaded), and hooks in both classes for them to serialize 835 themselves into Space-Track-like JSON. 836 837 Add -json option to the satpass script's tle() command, to get 838 canonical JSON output. 839 840 Make use of DateTime (if available) to interpret a non-numeric 841 Astro::Coord::ECI::TLE::Iridium zone attribute. If DateTime is not 842 available, fall back to the old implementation of setting $ENV{TZ} 843 and hoping localtime() responds to this. 844 845 Correct the documentation of the Astro::Coord::ECI 'twilight' 846 attribute, which really can not be set to 'civil', etc. 847 8480.051 2012-06-08 T. R. Wyant 849 Use YAML instead of YAML::Any, since they are both in the same distro, 850 and YAML does not suffer from deprecation warnings. 851 852 Add pass variant PASS_VARIANT_NO_ILLUMINATION. If attribute 'visible' 853 is false, this causes no illumination calculations at all to be 854 done. This seems to save 20% in calculation time, but your mileage 855 may vary, especially inside the Arctic or Antarctic Circles. 856 857 Have bin/satpass warn the first time it geocodes if geocoding is done 858 directly using SOAP::Lite. 859 860 Make the Astro::Coord::ECI azel_offset() Doppler calculation 861 contingent on the availability of a radial velocity value. 862 863 Reinstate the Doppler calculation in Astro::Coord::ECI's 864 azel_offset(). Thanks to Vidar Tyldum for finding this omission. 865 While in the Doppler code, made the satellite the primary source of 866 the frequency. Getting the frequency from the observer object is 867 being put through a deprecation cycle, and will eventually result in 868 an error. 869 8700.050 2012-05-04 T. R. Wyant 871 The 'status iridium' command in the 'satpass' script is now fatal; 872 it has been deprecated in favor of 'status show' for some time, 873 issued a warning on every use since version 0.044. 874 875 Have Astro::Coord::ECI method heliocentric_ecliptic_cartesian() set 876 the object's {inertial} to true. 877 878 Add module Astro::Coord::ECI::Mixin to provide common-logic methods 879 which do not seem to fit the object hierarchy. 880 881 Promote method ecliptic_longitude() from Astro::Coord::ECI::Sun to 882 Astro::Coord::ECI. 883 884 In Astro::Coord::ECI: 885 886 * Add attribute 'sun', to hold the object used to convert to and 887 from Heliocentric coordinates. 888 889 * Add methods ecliptic_cartesian(), heliocentric_ecliptic(), and 890 heliocentric_ecliptic_cartesian(). 891 892 * Consolidate code for conversion between Cartesian and spherical 893 coordinates. 894 895 In Astro::Coord::ECI::Set: 896 897 * Have the aggregate() method _not_ aggregate TLEs that have a blank 898 ID and model 'null'. This piece of ad-hocery was necessary to 899 prevent aggregation of "fake" TLEs representing different fixed 900 points in space (e.g. as created by the satpass or satpass2 901 'geodetic' command). 902 9030.049 2012-03-12 T. R. Wyant 904 In the Astro::Coord::ECI precess_dynamical() method, set the time of 905 the station attribute (if any) before precessing it. 906 907 In Astro::Coord::ECI::TLE, throw an exception if the Sun never rises. 908 This should not happen, but was encountered while sorting out the 909 precess_dynamical() bug. 910 911 Independently test appulses of all relevant classes, since this is how 912 the precess_dynamical() bug manifested. 913 914 In Astro::Coord::ECI::TLE::Set, override the get() method, and have 915 get( 'tle' ) return the concatenated TLEs of all members. 916 917 In Astro::Coord::ECI::TLE::Iridium reflection() method, fix 918 two-argument azel() call. 919 9200.048 2012-03-08 T. R. Wyant 921 Add keplers_equation() to Astro::Coord::ECI::Utils. 922 923 In the 'satpass' script's pass() subroutine, set the 'station' 924 attribute of all bodies in the @sky array before passing them to the 925 Astro::Coord::ECI::TLE pass() method. 926 927 In the Astro::Coord::ECI::TLE::Iridium flare() method, set the 928 'station' attribute of the object that represents the center of the 929 flare. 930 931 Have the first use of the Astro::Coord::ECI::TLE 'limb' attribute, the 932 satpass script 'lit' setting, and the Astro::Coord::ECI azel() 933 method with an 'upper' argument display a warning. These were 934 deprecated in September 2011. 935 936 In Astro::Coord::ECI: 937 938 * Have next_azimuth(), next_elevation(), and next_meridian() make use 939 of the 'station' attribute if the invocant is the only 940 Astro::Coord::ECI argument. 941 942 Have Astro::Coord::ECI::TLE->parse() take, as an optional first 943 argument, a reference to a hash that is used to initialize 944 attributes not initialized by parsing the TLE data. 945 946 Convert all eg/ scripts to use the 'station' attribute where possible, 947 and the optional Astro::Coord::ECI::TLE->parse() hash argument where 948 practical. 949 950 In Astro::Coord::ECI: 951 952 * Add 'station' attribute, as origin of observer-centered coordinate 953 systems. If azel() is called with the invocant as the only 954 Astro::Coord::ECI argument, it returns the coordinates of the 955 invocant relative to the 'station' attribute. 956 957 * Factor out the Cartesian portion of the azel() method, and add 958 methods neu() and enu(), to provide local Cartesian coordinates 959 relative to the 'station' attribute. 960 961 * Add method equatorial_apparent(), to calculate apparent equatorial 962 coordinates as seen from the location in the 'station' attribute. 963 964 * Work on velocity transformations from eci() to ecef(), neu(), enu(), 965 azel(), and equatorial(). All these seem sane to me, though I still 966 have no worked examples to test against. 967 968 I intend the use of the 'station' attribute to be the preferred way to 969 get observer-relative coordinates. I would like to eventually 970 deprecate $station->azel( $body ) and friends, as well as the practice 971 of passing an explicit station to the pass() and flare() methods, but 972 whether this actually happens is another question. 973 9740.047 2012-01-20 T. R. Wyant 975 Have the functionality related to the Astro::Coord::ECI::TLE 976 'pass_threshold' attribute (introduced in 0.046) take visibility 977 into account if the 'visible' attribute is true. 978 9790.046 2012-01-18 T. R. Wyant 980 Add Astro::Coord::ECI::TLE attribute 'pass_threshold'. If set to 981 something (in radians) other than undef, the sattelite's highest 982 point during a pass must be at least this high for the pass to be 983 reported. 984 985 Support the 'pass_threshold' setting in the satpass script. 986 987 Optional code that used to feel around for a YAML implementation now 988 just uses YAML::Any. 989 990 The utility subroutines deg2rad() and rad2deg() now support an 991 argument of undef which, unsurprisingly, returns undef. 992 993 The Changes file now conforms to Test::CPAN::Changes, and the author 994 test xt/author/changes.t has been added to keep it so. 995 9960.045 2011-12-05 T. R. Wyant 997 Have the satpass script's geocode command favor 998 Geo::Coder::Geocoder::US. Deprecate the use of SOAP::Lite. 999 1000 Have the satpass script set the height to 0 if the position was set by 1001 the geocode command, but height() failed. 1002 1003 Update the copy of the GNU GPL in LICENSES/Copying to have the current 1004 FSF address. 1005 1006 Document the release of Astro-App-Satpass2, and the eventual 1007 deprecation of the satpass script. 1008 1009 Try to clarify how the atmospheric refraction calculation works. 1010 10110.044 2011-10-19 T. R. Wyant 1012 Require Test::More 0.88 for testing. The requirement was actually 1013 introduced in version 0.042. Thanks to Christopher Kybe for 1014 picking up this discrepancy. 1015 1016 The satpass script's 'status iridium' command now generates a 1017 deprecation notice every time it is issued. 1018 10190.043 2011-08-29 T. R. Wyant 1020 The earthquake (Mineral Virginia USA) fire (Great Dismal Swamp) and 1021 flood (hurricane Irene) edition. 1022 1023 Updated the canned Iridium status in Astro::Coord::ECI::TLE for 1024 McCants' and Sladen's reporting of Iridium 26 (OID 24903) as out of 1025 service. They also updated Iridium 23 (OID 24906) to show it in 1026 service rather than failed, but I have continued to follow Kelso in 1027 calling it a spare. 1028 1029 Other than this, only documentation changes, mostly relating to the 1030 deprecation of the 'limb' attribute and its relation to the new 1031 'edge_of_earths_shadow' attribute. 1032 1033 In the satpass script, use the new 'edge_of_earths_shadow' setting in 1034 the 'flare' and 'position' commands, though the flare calculation 1035 does not actually make use of it. 1036 1037 Replace the Astro::Coord::ECI::TLE 'limb' attribute and the satpass 1038 'lit' setting with the 'edge_of_earth_shadow' attribute and setting. 1039 The new attribute and setting are numeric, and specify an increase 1040 in elevation (or decrease if negative) in units of the apparent 1041 radius of the body. The replaced attribute and setting still exist, 1042 but are deprecated, and will begin warning in the first release 1043 after March 1 2012. This setting/attribute is used by the pass 1044 calculation. 1045 1046 Provide an Astro::Coord::ECI azel_offset() method, which takes, as its 1047 optional second argument, an offset applied to the elevation, in 1048 terms of the apparent radius of the body whose position is being 1049 calculated. The two-argument version of the azel() method is now 1050 deprecated, and will begin warning in the first release after March 1051 1 2012. 1052 1053 Override the Astro::Coord::ECI correct_for_refraction() method in 1054 Astro::Coord::ECI::TLE, Astro::Coord::ECI::Moon, and 1055 Astro::Coord::ECI::Sun. The override simply returns the input 1056 elevation unmodified. 1057 10580.042 2011-08-07 T. R. Wyant 1059 In the Astro::Coord::ECI maidenhead() method: 1060 1061 * Document the fact that, when used as a mutator, it sets the position 1062 of the center of the square; 1063 1064 * Modify the accessor to try to minimize truncation error. 1065 1066 Added t/eci_maidenhead.t. 1067 10680.041 2011-07-25 T. R. Wyant 1069 Re-fix longitude out-of-range warning in Astro::Coord::ECI::Moon. 1070 1071 Fix problem with time specification in eg/sh_script when Date::Manip 1072 is not installed. 1073 1074 Add attribute 'pass_variant' to Astro::Coord::ECI::TLE. This tweaks 1075 the output of the pass() method, and can be set to the bitwise 'or' 1076 (a.k.a. '|') of the following exported values: 1077 1078 * PASS_VARIANT_NONE - No tweaks. 1079 1080 * PASS_VARIANT_VISIBLE_EVENTS - Remove from the output all pass 1081 events which were not visible. Ignored if the 'visible' attribute 1082 is false. 1083 1084 * PASS_VARIANT_FAKE_MAX - Create a 'max' event representing the 1085 largest visible elevation if the absolute max was filtered out by 1086 PASS_VARIANT_VISIBLE_EVENTS. 1087 1088 * PASS_VARIANT_START_END - Report the first and last pass events as 1089 PASS_EVENT_START and PASS_EVENT_END. These are the same as 1090 PASS_EVENT_RISE and PASS_EVENT_SET unless the 'visible' attribute 1091 is true and PASS_VARIANT_VISIBLE_EVENTS is asserted. 1092 1093 Minor optimization to the pass() method: the changes of 0.039_01 1094 through 0.039_05 left the appulse calculation before the point at 1095 which provisional passes were accepted or rejected. This has been 1096 moved below that point. 1097 1098 New example script, eg/xml that makes use of the 'pass_variant' 1099 attribute, and generates XML from pass data using XML::Writer. 1100 11010.040 2011-07-06 T. R. Wyant 1102 Tried to make the documentation of the Astro::Coord::ECI::TLE 1103 lazy_pass_position clearer. 1104 1105 Unconditionally set lazy_pass_position in the satpass script, since it 1106 recomputes position anyway. 1107 1108 Added a few words to the OVERVIEW about how to get results more like 1109 those of the Heavens Above web site. 1110 1111 Fix yet more problems in Astro::Coord::ECI::TLE->pass(): 1112 1113 * Do not report passes which ended before the prediction interval 1114 started. 1115 1116 * Rework the implementation of the 'interval' attribute to be 1117 (hopefully!) more efficient, and to fix incorrectly-reported 1118 illuminations. 1119 1120 * Fix incorrect rise (and sometimes max) times when the pass is in 1121 progress when the prediction interval starts and the 'visible' 1122 attribute is false. The previous fix only worked if the 'visible' 1123 attribute was true. 1124 1125 Add Astro::Coord::ECI::TLE attribute 'lazy_pass_position', to give the 1126 pass() method permission not to calculate and report event position 1127 if the event's time can be calculated without calculating position. 1128 1129 The satpass script's 'verbose' setting now works as advertised. 1130 1131 Re-fix the time-zone-dependant test failures in t/tle_flare.t. 1132 1133 Fix more problems in Astro::Coord::ECI::TLE->pass(): 1134 1135 * Fix detection and calculation of events of visible passes which 1136 begin during the day, or any pass in progress at the beginning of 1137 the computation interval. 1138 1139 Have Astro::Coord::ECI::TLE->parse() throw a warning if it can not 1140 understand the --effective date, and record the effective date as 1141 undef. Also allow --effective dates without a fractional part of the 1142 second. 1143 1144 Add more tests to try to capture all these changes. 1145 1146 Fix various problems in Astro::Coord::ECI::TLE->pass(), also brought 1147 to my attention by Jaap Meijers: 1148 1149 * Incorrect time of maximum elevation when only one of the original 1150 one-minute samples is above the horizon. 1151 1152 * Sporadic detection of passes which spend less than a minute above 1153 the horizon. 1154 1155 * Potentially, sporadic detection of passes which spend less than a 1156 minute illuminated before daylight occurs. I have no examples of 1157 this, though. 1158 1159 Add tests for Astro::Coord::ECI::TLE->pass(). More are needed. 1160 1161 Make the Astro::Coord::ECI::TLE pass() method more lenient when 1162 screening for passes in which the satellite is illuminated. Thanks 1163 to Jaap Meijers for bringing this to my attention. 1164 11650.039 2011-04-29 T. R. Wyant 1166 Silence warnings about out-of-range longitude which are sometimes 1167 generated when computing the position of the Moon. 1168 1169 Added -dump-headers command line option to eg/passes. 1170 11710.038 2011-04-14 T. R. Wyant 1172 Updated code that uses the optional Astro::SpaceTrack module to 1173 require version 0.052 wherever the Space Track web site is (or may 1174 be) accessed. 1175 1176 Removed calls to _INSTANCE in little-used code in bin/satpass. It must 1177 be little-used, since it hasn't been imported from Params::Util 1178 since version 0.033 dated 17-Sep-2010. 1179 1180 Fix to zone attribute code in bin/satpass, so that it can be cleared 1181 once set. 1182 11830.037 2011-04-04 T. R. Wyant 1184 Added a zone attribute to Astro::Coord::ECI::TLE::Iridium, so that it 1185 could properly distinguish between -am and -pm flares somewhere 1186 other than in the local zone. Thanks to CPAN Testers for finding 1187 this consequence of publishing a t/iridium.t that everyone can run. 1188 11890.036 2011-04-02 T. R. Wyant 1190 t/iridium.t no longer requires any extra data for its execution. 1191 1192 The satpass 'status iridium' command, which has been deprecated for 1193 quite a while, now issues a warning the first time it is issued. See 1194 the satpass documentation for the the schedule for its removal. 1195 1196 Document Astro::Coord::ECI::TLE::Iridium max_mirror_angle attribute. 1197 1198 Correct export tag documentation in Astro::Coord::ECI::TLE (from 1199 ':constant' to ':constants'). 1200 1201 Correct the attribute() method on Astro::Coord::ECI, 1202 Astro::Coord::ECI::TLE, and Astro::Coord::ECI::TLE::Iridium. 1203 Formerly it was returning false for some extant attributes. 1204 12050.035 2011-03-03 T. R. Wyant 1206 Removed the rightascension attribute in favor of the ascendingnode 1207 attribute. This is the last step in its deprecation. 1208 1209 Update the canned Iridium statuses in Astro::Coord::ECI::TLE for the 1210 taking-out-of-service of Iridium 23. Following Kelso, I have marked 1211 it spare, rather than failed. 1212 12130.034 2010-12-06 T. R. Wyant 1214 Make code for Astro::Coord::ECI zero-argument ecliptic() less cute 1215 also, to try to forestall problems. 1216 1217 Update canned Iridium statuses in Astro::Coord::ECI::TLE, to cover the 1218 replacement of Iridium 23 (24906) with Iridium 11 (25578) about 1219 November 3 2010. 1220 1221 Update and re-enable xt/author/iridium_status.t. 1222 1223 Try to avoid panic in Astro::Coord::ECI zero-argument geocentric() 1224 under at least one version by using less-cute code to compute the 1225 value. The problem could be reproduced using OID 25591 epoch 1226 30-Nov-2009 05:49:13 (which was over a year old at the time of 1227 testing). 1228 1229 This release has known failures in xt/author/iridium_status.t. 1230 12310.033 2010-09-17 T. R. Wyant 1232 Fix glitch in Astro::Coord::ECI::TLE::Iridium flare() where the 1233 maximum magnitude logic was being called when a flare was not 1234 possible. 1235 1236 Add t/sgp4-ver.tle to the distribution, instead of asking people to 1237 download it. Thanks to Dr. T. S. Kelso. 1238 1239 Add attribute rcs (radar cross-section) to Astro::Coord::ECI::TLE. 1240 That class' parse() method will populate the rcs attribute if it 1241 finds --rcs number on the name line of a NASA-format TLE. 1242 1243 Require version 5.64 of Exporter, so I don't have to juggle export 1244 tags for the benefit of early Perls. 1245 1246 Drop dependency on Params::Util. 1247 1248 Move author tests from xt/ to xt/author/. 1249 1250 Make sure POD links specify text. 1251 1252 Make minimum Perl version 5.6.2, since that is the lowest version I 1253 have a prayer of supporting. 1254 12550.032 2010-07-03 T. R. Wyant 1256 Have Astro::Coord::ECI::TLE complain every time the rightascension 1257 attribute is accessed. This is being deprecated in favor of the 1258 ascendingnode attribute. Elimination is scheduled for the first 1259 release in 2011. 1260 1261 Consolidate prerequisites into inc/Astro/Coord/ECI/Meta.pm. 1262 1263 Don't require Module::Build for configuration when building a 1264 distribution. This is controlled by environment variable 1265 MAKING_MODULE_DISTRIBUTION. 1266 1267 Document that Astro::Coord::ECI::TLE::Iridium will probably not work 1268 for Iridium Next satellites, to be launched starting about 2015. 1269 1270 Move acknowledgment of Goran Gasparovic from bin/satpass to 1271 lib/Astro/Coord/ECI.pm, since that's where the code is and where the 1272 acknowledgment should have been all along, and so it does not get 1273 lost when bin/satpass is superseded by App::Satpass2. 1274 1275 Fix fatal error in satpass when tilde-expanding a non-existent user 1276 name. It's still an error, just not fatal. 1277 1278 Tweak the documentation of Astro::Coord::ECI::TLE->is_valid_model(), 1279 to make it clearer why it was provided, and make it obvious that it 1280 can be called as a static method. 1281 1282 Fix bug in precession of equatorial coordinates, which would cause an 1283 error if no observing station was passed to the subroutine. 1284 1285 Add Astro::Coord::ECI::TLE method body_type(), which computes the type 1286 of the body from the common name using an algorithm similar to the 1287 one documented on Space Track's Satellite Box Score page. 1288 1289 Weaken recommendation of Time::y2038 when run under Perl 5.12 and 1290 above, since I really don't think it's needed. 1291 12920.031 2010-05-06 T. R. Wyant 1293 Add the maidenhead() method to Astro::Coord::ECI, to get or set 1294 geodetic position in the Maidenhead Locator System. 1295 1296 Update install instructions in README to include cpan, cpanp, or ppi 1297 as appropriate. 1298 1299 Add example script eg/passes to download TLEs and predict passes in 1300 one fell swoop. 1301 1302 Change the output in the Astro::Coord::ECI::Sun example to UT, and add 1303 a note why. Thanks to Richard Hardwick for raising this issue. 1304 13050.030 2010-02-26 T. R. Wyant 1306 Update copyright in README to 2010. 1307 1308 Consolidate all optional module logic, to eliminate duplicate code 1309 between Makefile.PL and Build.PL, and so the messages all have the 1310 same 'look and feel.' Dropped XML::Parser from the list, since it 1311 is no longer used directly by any supported code. 1312 1313 Add the Heavens Above web site to Astro::Coord::ECI's 'SEE ALSO'. 1314 1315 Have the satpass script look in $ENV{USERPROFILE} for the 1316 initialization file, in addition to all the other possibilities. 1317 1318 Use explicit tolerances for fractional results in the Julian date 1319 conversion tests in t/basic.t. This is for Strawberry Perl under 1320 ReactOS 0.3.11, which seems to have a case of the .999999s. 1321 1322 Trap possible exception from gmtime when generating the sgp4r 1323 'mean eccentricity < 0 or >= 1' error in Astro::Coord::ECI::TLE. 1324 13250.029 2010-02-04 T. R. Wyant 1326 Date::Manip and Time::y2038 are no longer 'recommended' but 'optional'. 1327 This means not telling the tool chain about them, but doing custom 1328 checks, and custom, gentler messages about why you might (or might 1329 not!) want these modules. 1330 1331 Centralize the decision about what time routines to use in 1332 Astro::Coord::ECI::Utils, and have it export to the other modules, 1333 the tests, the 'satpass' script, and the example scripts. 1334 1335 Rewrite t/parse_date.t so that it no longer needs Time::y2038. 1336 Instead, it uses precomputed times, which it offsets for the target 1337 system's epoch when it runs. 1338 1339 The above was done in an attempt to clarify the role of the optional 1340 modules, and cases where they might not be desirable. Thanks to 1341 Christopher Sylvain for identifying the problems and working with me 1342 on their solution. 1343 1344 Rewrite the time portions Astro::Coord::ECI::OVERVIEW to better 1345 reflect the current state of the time handling. Plus, retitle it so 1346 that hopefully it will actually appear in the distribution. 1347 13480.028 2010-01-11 T. R. Wyant 1349 Fix bug introduced in 0.027, in which the Astro::Coord::ECI::TLE 1350 pass() method failed to include the {appulse} data when an appulse 1351 was found. 1352 13530.027 2010-01-08 T. R. Wyant 1354 Correct (I hope!) the computation of illumination changes in the 1355 Astro::Coord::ECI::TLE pass() method. The original could miss them 1356 in the first or last minute of the pass. 1357 1358 Add exportable constants SPEED_OF_LIGHT (in kilometers per second) and 1359 SECS_PER_SIDERIAL_DAY to Astro::Coord::ECI::Utils. 1360 1361 Add attribute frequency (in Hertz) to Astro::Coord::ECI. 1362 1363 Have the Astro::Coord::ECI->azel() method return Doppler shift as the 1364 seventh element of the returned array if velocities are available 1365 AND the frequency attribute is set. 1366 1367 Attempt to correct the transverse velocities calculated by 1368 Astro::Coord::ECI->azel() for the rotation of the coordinate system. 1369 I am not convinced the corrections (or indeed the transverse 1370 velocities themselves) are correct. 1371 1372 The first time the Astro::Coord::ECI::TLE rightascension attribute is 1373 used in a given script, issue a warning that it is deprecated. 1374 1375 Update copyrights to 2010. 1376 1377 The Astro::Coord::ECI azel() method now returns velocities if 1378 these are available. The transverse velocities (azimuthal and 1379 elevational) are NOT corrected for the Coriolis effect. 1380 1381 Added Astro::Nova to the Astro::Coord::ECI 'SEE ALSO' section. 1382 1383 Date::Manip is no longer required. If it is not available, the 1384 'satpass' script will use a home-grown pseudo-ISO-8601 parser 1385 instead. The t/parse_time.t test was added to make sure this works 1386 as advertized. 1387 1388 Have 'authortest' run the normal tests without any of the optional 1389 modules. This requires either Test::Without::Module or Devel::Hide. 1390 If neither is available, 'authortest' will not attempt these tests. 1391 1392 Remove the last vestiges of the $ENV{DEVELOPER_TEST} machinery. 1393 1394 Rewrote xt/manifest.t to use Test::More. 1395 1396 All modules' versions set to 0.026_01. In the future all modules in 1397 a given release will have the same version number. 1398 1399 Convert all modules to the CPAN-recommended license. 1400 1401 Author tests no longer rely on environment variable DEVELOPER_TEST. 1402 Instead, they are executed by ./Build authortest. This means author 1403 tests are no longer available via the ExtUtils::MakeMaker build. 1404 1405 Astro::Coord::ECI: 1406 1407 * Modify correct_for_refraction() to work down to (and a bit below) 1408 the horizon setting if that is negative. Thanks to Vidar Tyldum 1409 Hansen of Kongsberg Satellite Services AS for identifying the 1410 need for this, and working with me on it. 1411 1412 satpass: 1413 1414 * Add the 'refraction' parameter, to allow the user to turn off 1415 atmospheric refraction (it is on by default). 1416 14170.026 2009-10-02 T. R. Wyant 1418 Astro::Coord::ECI 0.026: 1419 1420 * Default the {inertial} attribute appropriately. 1421 1422 * Add the next_azimuth() method to compute when a body passes the 1423 given azimuth. Thanks to Lixus Zoran for suggesting this on the 1424 geo-perl mailing list. 1425 1426 Astro::Coord::ECI::Moon 0.007: 1427 1428 * Default the {inertial} attribute appropriately. 1429 1430 Astro::Coord::ECI::Sun 0.010: 1431 1432 * Default the {inertial} attribute appropriately. 1433 1434 Astro::Coord::ECI::TLE 0.020: 1435 1436 * Default the {inertial} attribute appropriately. 1437 1438 * Deprecate the {rightascension} attribute in favor of the 1439 {ascendingnode} attribute. See the POD for the 1440 deprecation plan. 1441 14420.025 2009-09-07 T. R. Wyant 1443 Astro::Coord::ECI 0.035: 1444 1445 * Correct documentation of matrix math in azel() method. 1446 1447 Astro::Coord::ECI::TLE 0.019: 1448 1449 * Add and document validate() method. 1450 1451 * Make max_effective_date() ignore undef arguments. 1452 1453 * More verbose message for bad eccentricity in sgp4r. 1454 1455 * Correct description of synopsis to match what it actually does. 1456 1457 Astro::Coord::ECI::TLE::Set 0.008: 1458 1459 * Add and document validate() method. 1460 1461 bin/satpass 0.024: 1462 1463 * Add validate command. 1464 1465 Build.PL: 1466 1467 * Remove need for Module::Build for configuration, since I also 1468 supply Makefile.PL. 1469 14700.024 2009-08-18 T. R. Wyant 1471 General: 1472 1473 * Require Test::More 0.40 for testing. 1474 1475 Astro::Coord::ECI 0.024: 1476 1477 * Increment version. No other changes. 1478 1479 Astro::Coord::ECI::TLE 0.018: 1480 1481 * Add methods semiminor(), apoapsis(), apogee(), periapsis(), and 1482 perigee. 1483 1484 * Add 'effective' attribute, with logic in the parse() method to 1485 parse Astro::SpaceTrack --effective date out of line 0 of the 1486 TLE. Thanks to Thomas Wehr for reporting the problem this 1487 addresses, and T. S. Kelso for explaining what was needed to 1488 fix it. 1489 1490 * Add method max_effective_date() to figure out what date to use, 1491 since things are becoming rather complicated. 1492 * Add method tle_verbose() to centralize the verbose output of TLE. 1493 1494 Astro::Coord::ECI::TLE::Set 0.007: 1495 1496 * Add method max_effective_date() to do the right thing when there 1497 is more than one TLE to consider. 1498 14990.023 2009-03-09 T. R. Wyant 1500 General: 1501 1502 * Test t/tle_exception.t is no longer a developer test, but it will be 1503 skipped unless the user has Time::y2038. 1504 1505 Astro::Coord::ECI 0.023: 1506 1507 * Add method equatorial_unreduced(), for those who are only interested 1508 in range and velocity. 1509 1510 * Attempt to straighten out velocities when transforming among ECEF, 1511 ECI, and equatorial. No tests yet, though, so I have no idea if 1512 it is right. Note that as a consequence of this change it is 1513 possible to have an object without a velocity, since inertial 1514 objects no longer default to 0 velocity. 1515 1516 Astro::Coord::ECI::TLE 0.017: 1517 1518 * Set Iridium 91 in service in canned status, reflecting updates by 1519 Rod Sladen and T. S. Kelso. This is the real reason for the 1520 release; otherwise I would have sat on it until I had velocity 1521 tests. 1522 15230.022 2009-02-15 T. R. Wyant 1524 General: 1525 1526 * Make new test t/tle_exception.t a developer test until I can figure 1527 out why it only runs on my configuration. 1528 15290.021 2009-02-13 T. R. Wyant 1530 General: 1531 1532 * Make Time::y2038 recommended rather than required, since 1533 ActivePerl has problems with that module. We use it if 1534 available, otherwise we fall back to the core modules 1535 (and Time::Local if needed). 1536 1537 * Add eg/closest and eg/positions, showing calculation of the 1538 closest approach to a given point, and standalone calculation 1539 of the positions of all bodies at a given time. 1540 1541 * Correct '## no critic' in various places. 1542 1543 Astro::Coord::ECI 0.021: 1544 1545 * Trap any exceptions encountered when setting the time, set the time 1546 to undef (since otherwise we're left in an inconsistent state) 1547 and re-raise the exception. 1548 1549 Astro::Coord::ECI::TLE 0.016: 1550 1551 * Add OID number to exceptions related to orbital elements. 1552 1553 * Correct error messages involving using a near-earth model on a 1554 deep-space satellite or vice versa. 1555 1556 * Document the units of the model results (km or km/sec). 1557 1558 * Update canned Iridium status for the loss of Iridium 33 in a 1559 collision with Cosmos 2251. 1560 1561 Astro::Coord::ECI::TLE::Set 0.006: 1562 1563 * Tell carp not to report Astro::Coord::ECI (and friends) errors 1564 as originating in Astro::Coord::ECI::TLE::Set. 1565 1566 bin/satpass 0.021: 1567 1568 * Add gmt parameter which, if true, causes time output to be GMT. 1569 1570 * Trap Astro::Coord::ECI::TLE modeling exceptions in the 'flare', 1571 'pass', and 'position' commands, so that the whole command does 1572 not abort when this happens. SIGINT still aborts the whole 1573 command. Add -quiet option to supress error output. 1574 1575 * Mark geocode_ca as unsupported and probably not working, since 1576 they have started requiring registration for use of their 1577 free port. 1578 1579 Build.PL: 1580 1581 * Change check for Astro::SIMBAD::Query to Astro::SIMBAD::Client 1582 1583 Makefile.PL: 1584 1585 * Change check for Astro::SIMBAD::Query to Astro::SIMBAD::Client 1586 15870.020 2009-01-09 T. R. Wyant 1588 General: 1589 1590 * Add Time::y2038 as prerequisite, and use in place of Time::Local and 1591 CORE gmtime and localtime functions. 1592 1593 * Add Params::Util 0.25 as prerequisite. 1594 1595 * Add Astro/Coord/ECI/Overview.pod to try to give a "big picture". 1596 1597 * Eliminate function calls to UNIVERSAL::can and UNIVERSAL::isa in 1598 favor of Params::Util::_INSTANCE(), ::_CLASSISA(), or 1599 Astro::Coord::ECI::Utils::embodies(). 1600 1601 * Update copyright date to 2009. 1602 1603 * Restructure Build.PL and Makefile.PL to better adapt to the 1604 installed version. 1605 1606 * Distribute t/critic.t, t/executable.t, t/iridium_status.t, 1607 t/manifest.t, and t/perlcriticrc but do not run them unless 1608 environment variable DEVELOPER_TEST is set. 1609 1610 * Bring code up to perlcritic --stern with exceptions contained in 1611 t/perlcriticrc. This was not done to bin/satpass, since I plan to 1612 retire it. 1613 1614 Astro::Coord::ECI 0.020: 1615 1616 * Use represents() rather than isa() on the argument (if any) to the 1617 equatorial(), next_elevation(), and next_meridian() methods, to 1618 allow Astro::Coord::ECI::TLE::Set objects. 1619 1620 Astro::Coord::ECI::Moon 0.006: 1621 1622 * Make case of 'Moon' in next_quarter() output consistent. 1623 1624 * Append 'Moon' to first and last quarter description. 1625 1626 * Add method next_quarter_hash(), which wraps next_quarter() and 1627 returns a hash similar to the one returned by the 1628 Astro::Coord::ECI::TLE->pass() method. 1629 1630 * Add method almanac_hash(), which wraps almanac() in a manner similar 1631 to next_quarter_hash(). 1632 1633 Astro::Coord::ECI::Star 0.006: 1634 1635 * Add method almanac_hash(), which wraps almanac() and returns a hash 1636 similar to the one returned by the Astro::Coord::ECI::TLE->pass() 1637 method. 1638 1639 Astro::Coord::ECI::Sun 0.008: 1640 1641 * Add method next_quarter_hash(), which wraps next_quarter() and 1642 returns a hash similar to the one returned by the 1643 Astro::Coord::ECI::TLE->pass() method. 1644 1645 * Add method almanac_hash(), which wraps almanac() in a manner similar 1646 to next_quarter_hash(). 1647 1648 Astro::Coord::ECI::TLE::0.015: 1649 1650 * Add ability to manufacture the 'tle' attribute when the object was 1651 not generated by the parse() method. 1652 1653 * Supress object dump when environment variable DEVELOPER_TEST is set. 1654 1655 * Correct SYNOPSIS to include $tle->set(backdate=>0) with comments. 1656 1657 * Document models sgp4r and model4r under the 'model' attribute, and 1658 add them to the DESCRIPTION section of the POD. 1659 1660 Astro::Coord::ECI::TLE::Iridium 0.007: 1661 1662 * Document attributes am, day, extinction, and pm. 1663 1664 Astro::Coord::ECI::TLE::Set 0.005: 1665 1666 * Add explicit represent() method. 1667 1668 * Add optional options hash as first argument of aggregate(). The only 1669 option is {select => $time} which if true causes select($time) to 1670 be called on any Astro::Coord::ECI::TLE::Set objecgts created. 1671 1672 Astro::Coord::ECI::TLE::Utils 0.010: 1673 1674 * Add subroutine embodies($obj, $class) as a safe way to call 1675 represents() without throwing an exception if $obj is not blessed. 1676 1677 bin/satpass 0.020: 1678 1679 * Use Geo::WebService::Elevation::USGS for height(). 1680 1681 * Drop support for SIMBAD 3, since U. Strasbourg did a while back. 1682 1683 * Trap SOAP errors and correct result hash expansion in height(). 1684 1685 * Eliminate function calls to UNIVERSAL::can and UNIVERSAL::isa. 1686 1687 * Correct (reverse) documented meaning of flare() options -am, -day, 1688 and -pm. 1689 1690 * Document models sgp4r and model4r under the 'model' paramter. 1691 1692 * Revise 'NOTES' section to cover plans for App::Satpass2, and changes 1693 for this release. 1694 16950.019 2008-10-27 T. R. Wyant 1696 Astro::Coord::ECI 0.019: 1697 1698 * Truncate SYNOPSIS code. 1699 1700 * Range-check angular position input, with warning if out of range: 1701 1702 - Latitude: - PI/2 <= latitude <= PI/2; 1703 1704 - Longitude: - 2*PI <= longitude < 2*PI (Jean Meeus' examples 1705 sometimes use examples outside the conventional range); 1706 - Right ascension: 0 <= right ascension < 2*PI 1707 1708 Astro::Coord::ECI::Moon 0.005: 1709 1710 * Clarify and expand SYNOPSIS code. 1711 1712 Astro::Coord::ECI::Star 0.005: 1713 1714 * Correct and expand SYNOPSIS code. 1715 1716 * Normalize computed right ascension to range 0 to 2 PI. 1717 1718 Astro::Coord::ECI::Sun 0.007: 1719 1720 * Clarify and expand SYNOPSIS code. 1721 1722 Astro::Coord::ECI::TLE 0.014: 1723 1724 * Clarify and expand SYNOPSIS code. 1725 1726 Astro::Coord::ECI::TLE::Iridium 0.006: 1727 1728 * Correct SYNOPSIS code. 1729 1730 * Document problems with magnitude estimate when the Sun is close 1731 to the horizon as seen from the satellite. 1732 1733 Astro::Coord::ECI::TLE::Set 0.004: 1734 1735 * Clarify and complete SYNOPSIS code. 1736 17370.018 2008-10-03 T. R. Wyant 1738 Astro::Coord::ECI 0.018: 1739 1740 * Update version number and copyright date. No other changes. 1741 1742 Astro::Coord::ECI::TLE 0.013: 1743 1744 * Add semimajor(), to calculate and return the semimajor axis of the 1745 orbit. 1746 1747 * Update Iridium status: mark Iridium 28 (OID 24948) failed, and 1748 Iridium 95 (OID 27375) as in service (was spare). 1749 1750 bin/satpass 0.018: 1751 1752 * Under Mac OS X, use Mac::Pasteboard for clipboard operations if 1753 available; supress pbcopy warning when run as cron job. 1754 1755 * Fix 'height' query to track changes in USGS' elevation web service. 1756 1757 t/tle_sgp4r.t: 1758 1759 * Correct the code that extracts the needed TLEs from the downloaded 1760 zip file. 1761 17620.017 2007-12-30 T. R. Wyant 1763 Astro::Coord::ECI 0.017: 1764 1765 * Fall back to homegrown (and un-general, and insufficiently tested) 1766 code if Storable::dclone not available. 1767 1768 Astro::Coord::ECI::TLE 0.012: 1769 1770 * Correct behavior when Scalar::Util::dualvar not present. 1771 1772 Astro::Coord::ECI::TLE::Iridium 0.005: 1773 1774 * Use max() and min() from Astro::Coord::ECI::Utils. 1775 1776 Astro::Coord::ECI::Utils 0.009: 1777 1778 * Added looks_like_number(), max(), min(), defaulting to the 1779 Scalar::Util or List::Util implementations if possible, but 1780 providing our own if not. 1781 1782 * Clarify load_module() documentation. 1783 1784 bin/satpass 0.017: 1785 1786 * Use looks_like_number() and max() from Astro::Coord::ECI::Utils. 1787 1788 * Recode _load_module to use Astro::Coord::ECI::Utils::load_module. 1789 1790 * Fix clipboard code to fail gracefully if Scalar::Util::weaken 1791 is unavailable. 1792 1793 t/{moon,sun}.t: 1794 1795 * Skip singleton test if Scalar::Util::refaddr not available. 1796 1797 t/pod_coverage.t: 1798 1799 * Correct also_private setting to make it skip all-uppercase+numeric 1800 (blind fix since mine seems to skip constants anyway, which is 1801 what I'm really trying to do). 1802 1803 t/tle.t: 1804 1805 * Use max() from Astro::Coord::ECI::Utils. 1806 1807 t/pod_spelling.t 0.010: 1808 1809 * Add stop words 'max' and 'min'. 1810 1811 bin/satpass 0.017: 1812 1813 * Supress '"our" variable $clipboard_unavailable masks earlier 1814 declaration ...' under 5.10.0. 1815 18160.016 2007-12-28 T. R. Wyant 1817 Astro::Coord::ECI 0.016: 1818 1819 * Increment version. No other changes. 1820 1821 Astro::Coord::ECI::TLE 0.011: 1822 1823 * Use PI-related constants from Astro::Coord::ECI::Utils. 1824 1825 * pass() no longer throws 'end before beginning' error if caused 1826 by setting backdate false; instead returns empty list of 1827 passes. 1828 1829 Astro::Coord::ECI::TLE::Iridium 0.004: 1830 1831 * flare() no longer throws 'end before beginning' error if caused 1832 by setting backdate false; instead returns empty list of 1833 passes. 1834 1835 * Add model 'sgp4r', based on 'Revisiting Spacetrack Report #3', 1836 and equivalent metamodel 'model4r.' 1837 1838 * Make metamodel 'model' execute sgp4r. 1839 1840 * Have 'period' take into account which model is being used. 1841 1842 Build.PL: 1843 1844 * Prompt for installation of 'satpass' script, defaulting to 'n'. 1845 1846 Makefile.PL: 1847 1848 * Fix license support check to work with developer versions of 1849 ExtUtils::MakeMaker. 1850 1851 * Prompt for installation of 'satpass' script, defaulting to 'n'. 1852 1853 bin/satpass 0.016: 1854 1855 * Document major changes in classes. No other changes. 1856 1857 eg/tle_period.t: 1858 1859 * Pseudo-test to compare the various period calculations. 1860 1861 eg/README: 1862 1863 * Update to add eg/tle_period.t 1864 1865 t/{eci,moon,star,sun}.t: 1866 1867 * Remove dependency on Math::Trig. 1868 1869 * Prefer Astro::Coord::ECI::Utils over local definitions of 1870 constants. 1871 1872 t/iridium.t: 1873 1874 * Clarify (I hope!) how to run the Iridium tests. 1875 1876 t/tle_sgp4r.t: 1877 1878 * New test for model sgp4r. TLEs are not included in the kit, 1879 but are downloaded if needed. 1880 1881 t/sgp4r.out: 1882 1883 * Comparison data for tle_sgp4r.t. Renamed from tforver.out in 1884 the 'Revisiting Spacetrack Report #3' download. 1885 1886 t/pod.t: 1887 1888 * Remove unused variable 1889 1890 t/pod_coverage.t: 1891 1892 * Remove unused variable 1893 18940.015 2007-11-15 T. R. Wyant 1895 Astro::Coord::ECI 0.015: 1896 1897 * Bump version number. No other changes. 1898 1899 bin/satpass 0.015: 1900 1901 * Document pod coverage test change, intent to and plans for 1902 implementing "Revisiting Spacetrack Report #3". 1903 1904 * Bump version. 1905 1906 t/pod_coverage.t: 1907 1908 * Specify all-caps routines as private, since some testers are 1909 getting failures on 'use constant' declarations. I don't get 1910 these, so the change is kind of blind. 1911 19120.014 2007-11-13 1913 Astro::Coord::ECI 0.014: 1914 1915 * Add equinox_dynamical attribute; precess() now uses this as start 1916 point and leaves the time alone. It is also used when going from 1917 ECI to ECEF, and set to the current time when going from ECEF to 1918 ECI. 1919 1920 * Add global $EQUINOX_TOLERANCE to determine minimum precession when 1921 converting from ECI to ECEF. 1922 1923 * Add method equinox_dynamical for performance. 1924 1925 * Document dynamical and universal times. 1926 1927 * Add method precess_dynamical() to precess to the given dynamical 1928 time. The precess() method simply converts its argument to 1929 dynamical and delegates to this. 1930 1931 Astro::Coord::ECI::Moon 0.004: 1932 1933 * Have model set equinox_dynamical attribute to modeled dynamical 1934 time. 1935 1936 Astro::Coord::ECI::Star 0.004: 1937 1938 * Set equinox_dynamical attribute before precessing to current 1939 equinox. 1940 1941 * Precess coordinates at end of time_set(), not in middle. 1942 1943 Astro::Coord::ECI::Sun 0.006: 1944 1945 * Have model set equinox_dynamical attribute to modeled dynamical 1946 time. 1947 1948 Astro::Coord::ECI::TLE 0.010: 1949 1950 * Add backdate attribute (default: true) to control whether pass() 1951 uses elements before their epoch. 1952 1953 * Use the alias() mechanism for special-case settings of the 1954 illum attribute. 1955 1956 * Have models set equinox_dynamical to the dynamical epoch. 1957 1958 Astro::Coord::ECI::TLE::Iridium 0.003: 1959 1960 * Have backdate attribute control whether flare() uses elements 1961 before their epoch. 1962 1963 Astro::Coord::ECI::TLE::Set 0.003: 1964 1965 * Minor documentation tweaks and POD fixes. 1966 1967 Astro::Coord::ECI::Utils 0.008: 1968 1969 * Add constant JD_OF_EPOCH, globals $DATEFORMAT and $JD_GREGORIAN, 1970 and subroutines date2jd, date2epoch, epoch2datetime, jd2date, 1971 jd2datetime. 1972 1973 * Add subroutine load_module and centralize all on-the-fly loading 1974 here, for support of .pmc modules. 1975 1976 bin/satpass 0.014: 1977 1978 * Add 'echo' and 'times' commands. 1979 1980 * Add 'backdate' parameter, propagate to pass() and flare(). 1981 1982 * Add 'desired_equinox' parameter, use it when displaying inertial 1983 coordinates (only equatorial, at the moment). 1984 1985 * Allow pseudo-redirection of command output into a pipe. 1986 19870.013 2007-03-02 T. R. Wyant 1988 Astro::Coord::ECI 0.013: 1989 1990 * No code changes, but updated version to be visible to CPAN 'r'. 1991 1992 Astro::Coord::ECI::TLE 0.009: 1993 1994 * Updated canned Iridium status table for failure of Iridium 36 and 1995 its replacement by Iridium 97. 1996 1997 Astro::Coord::ECI::TLE::Iridium 0.002: 1998 1999 * Fixed occasional borderline-case spurious flare prediction. 2000 2001 bin/satpass 0.013: 2002 2003 * Added -version command option, to display preamble and exit. 2004 2005 * Wrap probe for clipboard helpers in eval{}. Among other things, this 2006 allows the script to run in taint mode. 2007 2008 * Add -choose option to list(). 2009 2010 * Allow extra arguments to status show, to do selective status display. 2011 2012 t/moon.t: 2013 2014 * Fixed cosmetic undefined value error when Scalar::Util does not 2015 implement refaddr(). 2016 2017 t/sun.t: 2018 2019 * Fixed cosmetic undefined value error when Scalar::Util does not 2020 implement refaddr(). 2021 20220.012 2007-01-09 T. R. Wyant 2023 ECI.pm 0.012: 2024 2025 * Localized $Data::Dumper::Terse 2026 2027 * Fixed divide-by-zero in azel() when the points coincide. 2028 2029 * Convert angle() to use law of haversines rather than law of cosines, 2030 for better performance on small angles. 2031 2032 ECI/Sun.pm 0.005: 2033 2034 * Add magnitude() method. 2035 2036 ECI/TLE.pm 0.008: 2037 2038 * Add {body} and {station} to hash returned by pass(). 2039 2040 * Add support for reblessing to Astro::Coord::ECI::TLE::Iridium if 2041 appropriate. This includes rebless(), before_reblessing(), 2042 after_reblessing(), alias(), can_flare(), status(), and the {reblessable} 2043 attribute. 2044 2045 ECI/TLE/Iridium.pm 0.001: 2046 2047 * Initial release. 2048 2049 ECI/Utils.pm 0.007: 2050 2051 * Confess on invalid acos() argument. 2052 2053 * Add find_first_true() to support finding Iridium flares. 2054 2055 bin/satpass 0.012: 2056 2057 * If a source file ends with a continued line, warn and abandon the 2058 line. 2059 2060 * Set the time on the appulsing body before obtaining its coordinates. 2061 2062 * Fix error in end time parser in position(). 2063 2064 * Throw error if doing 'sky lookup' on a body that is already in the 2065 sky. 2066 2067 * Have pass() round the displayed time for the appulsing body. 2068 2069 * Add flare() to calculate Iridium flares. 2070 2071 * Modify position() to report flare potential for Iridium satellites. 2072 2073 * Added -choose option to pass(), position(), tle(). 2074 2075 * Removed pass_old() and the timing parameter, strongly deprecated in 2076 version 0.011. 2077 2078 * Added {simbad_version} parameter to select SIMBAD software to use. 2079 2080 eg/iridium 0.001: 2081 2082 * New example calculating Iridium flares. 2083 20840.011 2006-10-26 T. R. Wyant 2085 ECI.pm 0.011: 2086 2087 * Add horizon attribute. 2088 2089 ECI/TLE.pm: 2090 2091 * Add pass() method and supporting attributes. 2092 2093 bin/satpass: 2094 2095 * Add check_version() 2096 2097 * Defer loading of optional modules to speed startup. 2098 2099 * Rewrite XML parsing to use either XML::Parser or XML::Parser::Lite, 2100 with XML::Parser being preferred. 2101 2102 * Fix fatal error when running off the end of the top-level command 2103 script. 2104 2105 * Support ~user in filenames. 2106 2107 * Convert pass() to use Astro::Coord::ECI::TLE->pass(). Old code 2108 remains as pass_old(), strongly deprecated. 2109 2110 * Use Time::HiRes for timing, if that is available. 2111 2112 * Document status of pass_old, 'timing' parameter (strongly 2113 deprecated) and the SIMBAD situation. 2114 2115 eg/iss: 2116 2117 * New example to demonstrate Astro::Coord::ECI::TLE->pass(). 2118 21190.010 2006-09-23 T. R. Wyant 2120 ECI.pm 0.010: 2121 2122 * Check for null arguments on most calls, so we die now rather 2123 than later. 2124 * Fix undefined value when calling set() with no arguments. 2125 2126 ECI/Moon.pm 0.003: 2127 2128 * Make singleton object by default. 2129 2130 ECI/Sun.pm 0.004: 2131 2132 * Make singleton object by default. 2133 2134 bin/satpass 0.010: 2135 2136 * Add qualifiers -brief, -list, and -delete to macro command. 2137 Parameter explicit_macro_delete controls what the macro 2138 command does when given a name but no definition. 2139 2140 * Make -time work on macros and source commands. 2141 2142 * Add ability to abort macros and source scripts on error, 2143 controlled by parameter error_out. 2144 2145 Build.PL: 2146 2147 * Correct add_to_cleanup() call. 2148 2149 * Add omitted ECI/Sun.pm. 2150 2151 Makefile.PL: 2152 2153 * Add explicit PL_FILES => {}, to prevent old versions from 2154 trying to execute 'perl Build.PL Build'. 2155 21560.009 2006-07-23 T. R. Wyant 2157 ECI.pm 0.009: 2158 2159 * Add represents() method. 2160 2161 ECI/Sun.pm 0.003: 2162 2163 * Remove redundant definition of ASTRONOMICAL_UNIT; use AU from 2164 Astro::Coord::ECI::Utils 2165 2166 ECI/TLE.pm 0.006: 2167 2168 * Add is_model_attribute(), is_valid_model(). 2169 2170 ECI/TLE/Set.pm 0.002: 2171 2172 * Allow Astro::Coord::ECI::TLE::Set objects as arguments of add(). 2173 2174 * Take advantage of is_model_attribuite(), is_valid_model(). 2175 2176 bin/satpass 0.009: 2177 2178 * Fix defaulting of second argument of quarters(). 2179 2180 * Allow macros to override core commands. Macros can no longer 2181 call themselves, and core commands can be accessed explicitly 2182 by the syntax core.command. 2183 2184 * Relative times for the second and subsequent arguments of a 2185 command are relative to previous time argument of the same 2186 command, whether absolute or relative. 2187 2188 Build.PL 0.001: 2189 2190 * Initial version. 2191 21920.008 2006-07-14 T. R. Wyant 2193 ECI.pm 0.008: 2194 2195 * Support the use of Astro::Coord::ECI::TLE::Set objects in the 2196 angle() method. 2197 2198 * Add method attribute(). 2199 2200 ECI/TLE.pm 0.005: 2201 2202 * Add the null model. 2203 2204 ECI/TLE/Set.pm 0.001 - New container object. 2205 2206 ECI/Utils.pm 0.006: 2207 2208 * Add dynamical_delta() method (was private method in ECI.pm). 2209 2210 bin/satpass 0.008: 2211 2212 * Use Astro::Coord::ECI::TLE::Set objects to represent satellites 2213 when we have more than one set of orbital elements. 2214 2215 * Add help for Astro::Coord::ECI::TLE::Set. 2216 2217 * Add and document 'singleton' parameter. Use it in pass() and 2218 position(). 2219 2220 * Default end times relative to start times, rather than relative 2221 to the last explicit time. 2222 2223 * Fix interaction between clipboard functionality and test hook. 2224 Thanks to IMACAT for help diagnosing and verifying. 2225 2226 * Add acknowledgments. 2227 22280.007 2006-07-06 T. R. Wyant 2229 ECI.pm: 2230 2231 * Optimize, mostly by being smarter about when to clear cached 2232 coordinates. 2233 2234 * Correct spelling in POD. 2235 2236 ECI/Moon.pm: 2237 2238 * Change die to confess on programming error. 2239 2240 * Correct spelling in POD. 2241 2242 ECI/Star.pm: 2243 2244 * Correct spelling in POD. 2245 2246 ECI/Sun.pm: 2247 2248 * Correct spelling in POD. 2249 2250 ECI/TLE.pm: 2251 2252 * Modify internals for easier cache clearing. 2253 2254 * Better documentation of 'mean anomaly'. 2255 2256 * Correct spelling in POD. 2257 2258 * Trap invalid effective eccentricity in sgp4. The underlying cause 2259 of the problem is probably either an invalid TLE or using the TLE 2260 past its 'good until' date. 2261 2262 ECI/Utils.pm: 2263 2264 * Change die to confess on programming error. 2265 2266 * Correct spelling in POD. 2267 2268 Makefile.PL: 2269 2270 * Get rid of wrong-headed attempt to configure optional modules. 2271 2272 bin/satpass: 2273 2274 * Various documentation corrections. 2275 2276 * Correct spelling in POD. 2277 2278 * Add store() and retrieve() as interface to Storable. 2279 2280 * Centralize tilde expansion, and do it on cd(), load(), retrieve (), 2281 source(), store (). 2282 2283 * Preprocess -start and -end options of st(), to make dates 2284 consistent with the rest of satpass. 2285 2286 * Add -initialization_file command option. 2287 2288 * Add -optional option on source(). 2289 2290 * Add localize(), and macro/source call frames to support this. 2291 2292 * Add localize subcommand to st(). 2293 2294 * Make 'st show' a synonym for 'st get', and make 'st get' without 2295 arguments show all settings. 2296 2297 * Add test hooks, and a test to exercise the more arcane functions 2298 of the script. 2299 2300 * Add -source_layer and -retry_on_zero options to height_us(). 2301 2302 * Add a separate height_ca() method that makes use of the above 2303 options when delegating to height_us(), in response to anomalous 2304 responses to height queries. 2305 2306 * Fix problem displaying appulses in pass(). 2307 2308 * Make the position() display positions for a range of times. Add 2309 -realtime option to position() to display positions in 2310 near-real-time. 2311 2312 * Add drop(). 2313 2314 * Fix formatting of error messages from the local coordinate 2315 formatters. 2316 2317 * Have position() display epoch and illumination when displaying 2318 objects from the observing list. 2319 23200.006 2006-06-07 T. R. Wyant 2321 ECI.pm: 2322 2323 * Cache some calculations for re-use. 2324 2325 ECI/Star.pm: 2326 2327 * Tweak docs. 2328 2329 ECI/Utils.pm: 2330 2331 * Add intensity_to_magnitude(), atmospheric_extinction(). 2332 2333 bin/satpass: 2334 2335 * Correct check for whether location has been set. Old check 2336 did not recognize 0 latitude, longitude, or height. 2337 2338 * Special-case code to 'unset' tz when it is set to undef or ''. 2339 2340 * Make 'position' iterate over time, in real time with -realtime. 2341 2342 * Add -time global command option to time execution. 2343 2344 * Add 'country' parameter. Break out 'geocode' and 'height' to 2345 country-specific versions, and make the original command 2346 dispatch based on 'country' parameter or explicit argument. 2347 2348 * Allow formatting of local coordinates without range information. 2349 2350 * Round pass times to the nearest second (since strftime truncates). 2351 2352 * Add 'almanac' command options -horizon, -quarters, -transit, and 2353 -twilight to restrict the output. 2354 2355 * Make height_us() work with revised USGS SOAP calling sequence. 2356 23570.005 2006-04-21 T. R. Wyant 2358 ECI.pm: 2359 2360 * Add 'inertial' read-only attribute. 2361 2362 * Add equatorial coordinates relative to observer. 2363 2364 * Fix negative right ascension - should be mod 2 pi. 2365 2366 * Tweak docs, including fuller synopsis. 2367 2368 bin/satpass: 2369 2370 * Add local_coord parameter to determine local coordinate system 2371 (azel or equatorial). 2372 2373 * Modify pass and position output to use local_coord. 2374 2375 TLE.pm: 2376 2377 * Tweak synopsis, to show that setting time runs model. 2378 23790.004 2006-03-14 T. R. Wyant 2380 bin/satpass: 2381 2382 * Rewrite command parsing so that we can retain quotes and 2383 be POSIXly correct in option processing for the system 2384 command. 2385 2386 * Give tle command a -verbose qualifier, to produce a formatted 2387 listing of the orbital parameters. 2388 2389 * Provide HTML =item targets consistent with links. 2390 2391 ECI.pm: 2392 2393 * Clean up docs. 2394 2395 TLE.pm: 2396 2397 * Clean up docs, wrap some really long lines. 2398 2399 * Replace _fmod2p with mod2pi from Utils module. 2400 24010.003 2006-03-10 T. R. Wyant 2402 bin/satpass: 2403 2404 * Remove all uses of Clipboard, to try to get built under 2405 ActiveState's ActivePerl. 2406 2407 * Correct version number in Astro::SpaceTrack load. 2408 2409 * Accumulate Iridium operational statuses. 2410 2411 * Add status command to display satellite operational status. 2412 2413 Astro::Coord::ECI: 2414 2415 * Increment version, as a lazy way to increment the distribution 2416 version. 2417 2418 * Tweak documentation. 2419 2420 Astro::Coord::ECI::Utils: 2421 2422 * Make subclass of Exporter, since ActiveState's build 2423 seems to have a problem with 'use Exporter qw{import}' 2424 (except under darwin, strangely enough). 2425 2426 * Increment version. 2427 24280.002 2006-03-02 T. R. Wyant 2429 bin/satpass: 2430 * Behave better when no Clipboard module. 2431 2432 * Do not use Clipboard module under darwin. 2433 2434 * Require Astro::SpaceTrack 0.016 (if any). 2435 2436 * Default star distance now 10000 parsecs (was 1 parsec). 2437 2438 * Add 'sky lookup', using Astro::SIMBAD::Query. 2439 2440 * Modified 'sky' listing format to look like 'sky add' commands. 2441 2442 Astro::Coord::ECI: 2443 2444 * Add NAD83 ellipsoid. 2445 2446 Astro::Coord::ECI::Utils: 2447 2448 * Corrected documentation. 2449 24500.001 2006-02-17 T. R. Wyant 2451 Initial release 2452