/** * @covers Marando\Meeus\Nutation\Nutation::trueObliquity * @see p.148, ex. 22.a */ public function testTrueObliquity() { $ε = Nutation::trueObliquity(AstroDate::parse('1987-Apr-10')); $this->assertEquals(23, $ε->d, 'd'); $this->assertEquals(26, $ε->m, 'm'); $this->assertEquals(36.85, $ε->s, 's', 0.01); }
/** * @covers Marando\AstroCoord\Equat::toHoriz */ public function testToHoriz() { $epoch = AstroDate::parse('2015-Nov-08 23:20:34.000')->toEpoch(); $ra = Angle::deg(180.58211)->toTime(); $dec = Angle::deg(1.00232); $astr = new Equat(Frame::ICRF(), $epoch, $ra, $dec, Distance::m(0)); $astr->topo = Geo::deg(27.9494, -82.4569); $horiz = $astr->toHoriz(); $prec = Angle::arcsec(9)->deg; $this->assertEquals(-37.8887, $horiz->alt->deg, 'alt', $prec); $this->assertEquals(295.834, $horiz->az->deg, 'az', $prec); }
/** * @covers Marando\AstroDate\AstroDate::toMJD */ public function testToMJD() { $dates = [['2000-Jan-01 00:00:00', 2451544.5 - 2400000.5], ['2100-Oct-12 18:20:04', 2488354.263935 - 2400000.5], ['2089-Nov-08 21:14:18', 2484364.3849301 - 2400000.5]]; foreach ($dates as $d) { $fromMJD = AstroDate::mjd($d[1]); $toMJD = AstroDate::parse($d[0]); $this->assertEquals($fromMJD->toMJD(), $toMJD->toMJD(), "to MJD {$d['0']}", 0.0001); } }
public function test() { return; $frame = Frame::ICRF(); $epoch = Epoch::J(2000); echo $epoch->toDate()->toTDB(); echo "\n"; echo "\n"; exit; $ra = \Marando\Units\Time::hms(11, 16, 46.6); $dec = \Marando\Units\Angle::dms(5, 45, 32.5); $dist = Distance::au(5.8); echo "\n" . ($eq = new Equat($frame, $epoch, $ra, $dec, $dist)); echo "\n" . ($eq = (new Equat($frame, $epoch, $ra, $dec, $dist))->apparent()); echo "\n"; return; $frame = Frame::ICRF(); $epoch = AstroDate::jd(2457335.472615741)->toEpoch(); $ra = \Marando\Units\Time::hms(11, 16, 46.6); $dec = \Marando\Units\Angle::dms(5, 45, 32.5); $dist = Distance::au(5.8); echo "\n" . ($eq = new Equat($frame, $epoch, $ra, $dec, $dist)); echo "\n" . ($eq = (new Equat($frame, $epoch, $ra, $dec, $dist))->apparent()); $eq = new Equat($frame, $epoch, $ra, $dec, $dist); $eq->topo = Geo::deg(27, -82); echo "\n" . $eq->toHoriz(); echo "\n" . $eq->apparent(); echo "\n" . ($h = $eq->toHoriz()); echo "\n" . $h->az->deg . "\t" . $h->alt->deg; echo "\n" . $eq->apparent(\Marando\Units\Pressure::mbar(100), \Marando\Units\Temperature::F(90), 0.85); echo "\n" . $eq->toHoriz(); return; $ra = \Marando\Units\Time::hours(14.424354); $dec = \Marando\Units\Angle::deg(33.54366); $dist = Distance::au(1.5); $geo = Geo::deg(27, -82); $e = new Equat(Frame::ICRF(), Epoch::jd(2455586), $ra, $dec, $dist); $e->topo = $geo; echo "\n\n" . $e; echo "\n" . $e->apparent(); $e = new Equat(Frame::ICRF(), Epoch::jd(2455586), $ra, $dec, $dist); $e->topo = $geo; echo "\n" . $e->apparent(); $e = new Equat(Frame::ICRF(), Epoch::jd(2455586), $ra, $dec, $dist); $e->topo = $geo; echo "\n" . $e->toHoriz(); return; $e = new Equat(Frame::ICRF(), Epoch::jd(2455586), $ra, $dec, $dist); echo "\n\n" . $e; echo "\n" . $e->apparent($geo); echo "\n" . $e->apparent()->toHoriz($geo); $e = new Equat(Frame::ICRF(), Epoch::jd(2455586), $ra, $dec, $dist); echo "\n\n" . $e; echo "\n" . $e->apparent(); echo "\n" . $e->apparent()->toHoriz(); $e = new Equat(Frame::ICRF(), Epoch::jd(2451586), $ra, $dec, $dist); $e->topo = $geo; echo "\n\n" . $e; echo "\n" . $e->apparent(); echo "\n" . $e->apparent()->toHoriz(); return; // Position of Mercury $x = Distance::au(+1.18052679326447); $y = Distance::au(-0.3650485652522116); $z = Distance::au(-0.2123422968928603); // Velocity of Mercury $vx = Velocity::aud(0.02052320553396918); $vy = Velocity::aud(0.02828864020900079); $vz = Velocity::aud(0.01145246106968459); // Frame & epoch $frame = Frame::ICRF(); $epoch = AstroDate::parse('2015-Mar-20')->toEpoch(); $c = new Cartesian($frame, $epoch, $x, $y, $z, $vx, $vy, $vz); echo "\n\n"; echo $c; echo "\n\n"; echo $c->setUnit('km km/d'); echo "\n\n"; echo $c->setUnit('km km/s'); echo "\n\n"; echo $c->toEquat(); echo "\n\n"; echo $c->toEquat()->apparent(); echo "\n\n"; echo $c->toEquat()->apparent(Geo::deg(27, 278)); echo "\n\n"; echo $c->toEquat()->toHoriz(Geo::deg(27, 278)); echo "\n\n"; }
public function test() { return; // Converts to J2000.0 echo "\n" . AstroDate::parse('2000-Jan-1 12:00:00 TT')->toEpoch(); // Isn't J2000.0 so represented as date echo "\n" . ($e = AstroDate::parse('2000-Jan-1 14:00:00 TT')->toEpoch()); echo "\n\n" . AstroDate::now()->toEpoch(); $d = AstroDate::now()->setTimezone('est'); echo "\n\n" . $d->sinceMidnight(); echo "\n\n"; return; echo "\n" . ($d = AstroDate::now()->setTimezone(TimeZone::UT(-7))); echo "\n" . TimeScale::TT()->abr; echo "\n" . TimeScale::TT()->name; echo "\n" . Epoch::J2000(); echo "\n" . Epoch::J1900(); echo "\n" . Epoch::B1950(); echo "\n" . Epoch::B1900(); echo "\n" . Epoch::B(1954.4423); echo "\n" . Epoch::jd(2455200.5); echo "\n\n" . Epoch::J2000()->toDate(); echo "\n" . Epoch::J1900()->toDate(); echo "\n" . Epoch::B1950()->toDate(); echo "\n" . Epoch::B1900()->toDate(); echo "\n" . Epoch::B(1954.4423)->toDate(); echo "\n\n" . AstroDate::now(); echo "\n" . ($d = AstroDate::now()->setTimezone(TimeZone::parse('EST'))); echo "\n" . $d->toTDB(); echo "\n" . $d->toUTC(); echo "\n" . ($d = AstroDate::now()->setTimezone('MST')); echo "\n" . ($d = AstroDate::now()->setTimezone('PST')); return; echo "\n" . AstroDate::parse('2015-Dec-10 6:00'); echo "\n" . AstroDate::parse('2015-Dec-10 6:00')->setTimezone(TimeZone::parse('EST')); echo "\n" . AstroDate::now(); echo "\n" . AstroDate::now()->setTimezone(TimeZone::parse('EST')); echo "\n" . AstroDate::now()->setTimezone(TimeZone::parse('PST')); echo "\n" . AstroDate::now()->setTimezone(TimeZone::UT(6)); echo "\n" . TimeZone::parse('est')->offset; echo "\n" . TimeZone::parse('est')->offset(2451545.5); echo "\n" . TimeZone::parse('est')->offset(2451589.5); return; echo "\n" . TimeZone::UT(-2); echo "\n" . TimeZone::parse('EST'); echo "\n" . AstroDate::now()->setTimezone(TimeZone::EST())->format(AstroDate::FORMAT_GOOGLE); echo "\n" . AstroDate::now()->setTimezone(TimeZone::UT(-10.5))->format(AstroDate::FORMAT_GOOGLE); echo "\n" . AstroDate::now()->setTimezone(TimeZone::UT(-10))->format(AstroDate::FORMAT_GOOGLE); return; $t = timezone_abbreviations_list(); $s = timezone_identifiers_list(); $e = timezone_name_from_abbr('est'); var_dump($t); return; $d = AstroDate::now()->setTimezone(TimeZone::EST()); echo "\n" . $d->format('r Y-M-c h:i:s.u A T'); echo "\n" . $d->sub(Time::days(15))->format(AstroDate::FORMAT_GENERIC); echo "\n" . $d->sidereal('a'); echo "\n" . $d->sidereal('m'); echo "\n" . $d->format(AstroDate::FORMAT_JPL_FRAC); echo "\n" . $d->sidereal('a', Angle::deg(-82.47)); echo "\n" . $d->sidereal('m', Angle::deg(-82.47)); echo "\n" . $d->sinceMidnight(); echo "\n" . $d->untilMidnight(); /** * TODO: * * - Figure out formula for DST start and end * - Figure out formula for Week # of year * * */ return; echo "\n" . $d->format(DateTime::RSS); echo "\n" . $d; echo "\n" . $d->format(AstroDate::FORMAT_GENERIC); echo "\n" . $d->format(DateTime::ISO8601); return; $str = '2016-Nov-14 17:07:07.120'; echo "\n" . ($d = AstroDate::parse($str)); echo "\n" . ($d = AstroDate::parse($str)->setTimezone(TimeZone::EST())); echo "\n" . $d->format('Z T P O e u s i h H G g a A y Y n M m F W z D Y-m-d j'); $str = '2016-Nov-14 17:07:07.120 TAI'; echo "\n" . ($d = AstroDate::parse($str)); echo "\n" . $d->format('O e u s i h H G g a A y Y n M m F W z D Y-m-d j'); $str = '2015-Nov-1 17:07:07.120 UTC'; $d = AstroDate::parse($str); echo "\n" . $d->format('z w S N l L D Y-m-d j'); return; echo "\n\n" . ($str = '2015-Nov-16 17:07:07.120 TT'); echo "\n" . AstroDate::parse($str); echo "\n\n" . ($str = '-1950-1-16 17:07:07 UTC'); echo "\n" . ($d = AstroDate::parse($str)); echo "\n" . $d->format('Y-m-d'); return; echo "\n" . ($d = AstroDate::now()); echo "\n" . $d->toUT1(); echo "\n" . $d->toTAI(); echo "\n\n" . ($d = AstroDate::now(TimeZone::EST())); echo "\n" . $d->toUT1(); echo "\n" . $d->toTAI(); return; $d = new AstroDate(2017, 11, 15, 7, 0, 0); echo "\n" . $d; echo "\n" . $d->setTimezone(TimeZone::EST()); //var_dump($d); $d = new AstroDate(2017, 6, 15, 7, 0, 0); echo "\n\n" . $d; echo "\n" . $d->setTimezone(TimeZone::EST()); //var_dump($d); $d = new AstroDate(2017, 11, 15, 7, 0, 0); echo "\n\n" . $d; echo "\n" . $d->setTimezone(TimeZone::EST()); //var_dump($d); $d = new AstroDate(2017, 6, 15, 6, 0, 0); echo "\n\n" . $d; echo "\n" . $d->setTimezone(TimeZone::EST()); //var_dump($d); return; $d = new AstroDate(2017, 11, 15, 0, 0, 0); echo "\n" . $d; echo "\n" . $d->jd(); echo "\n" . $d->jd(12); echo "\n" . $d->toTT(); echo "\n" . $d->toJD(); echo "\n" . $d->jd(12); echo "\n"; $d = new AstroDate(2015, 11, 15, 20, 23, 18, TimeZone::EST(), TimeScale::TT()); echo "\n" . $d; echo "\n" . $d->setTimezone(TimeZone::UTC()); echo "\n" . $d->toUT1(); echo "\n" . $d->setTimezone(TimeZone::EST()); echo "\n" . $d->jd(); echo "\n" . $d->jd(12); echo "\n" . $d->mjd(); echo "\n" . $d->mjd(12); echo "\n" . $d->monthName(); echo "\n" . $d->mjd(); echo "\n\n" . $d->toTAI(); echo "\n" . $d->year; echo "\n" . $d->month; echo "\n" . $d->day; echo "\n" . $d->hour; echo "\n" . $d->min; echo "\n" . $d->sec; echo "\n" . $d->micro; echo "\n" . $d->timezone; echo "\n" . $d->timescale; $d->year = 2020; echo "\n" . $d; $d->month = 12.13432; echo "\n" . $d; $d->sec = 12; echo "\n" . $d; echo "\n" . $d->add(Time::sec(0.5)); echo "\n" . $d->setDateTime(2017, 9, 4, 18, 34, 34.234); var_dump($d->isLeapYear()); echo "\n" . $d->setDateTime(2016, 9, 4, 18, 34, 34.234); var_dump($d->isLeapYear()); echo "\n" . $d->dayName(); $a = new AstroDate(2016, 12, 25, 19, 10, 2); $b = new AstroDate(2015, 12, 25, 19, 10, 2); echo "\n" . $a->diff($b); echo "\n" . ($a = new AstroDate(2016, 12, 31, 19, 10, 2)); echo "\n" . ($b = new AstroDate(2015, 12, 31, 19, 10, 2)); echo "\n" . $a->dayOfYear(); echo "\n" . $b->dayOfYear(); echo "\n\n" . $b; echo "\n" . $b->toTDB(); echo "\n" . $b->setTimezone(TimeZone::UTC()); echo "\n" . $b->toTDB(); echo "\n" . $b->setTimezone(TimeZone::EST()); echo "\n" . $b->toTDB(); echo "\n\n\n"; $d = new AstroDate(2015, 11, 15, 20, 23, 18.454334); echo "\n" . $d; echo "\n" . $d->setTimezone(TimeZone::EST()); echo "\n" . $d->toUTC(); echo "\n" . $d->toTAI(); echo "\n" . $d->setTimezone(TimeZone::EST()); echo "\n" . $d->toTT(); return; $d = new AstroDate(2015, 11, 15, 20, 23, 18.454334); echo "\n" . $d; $d = new AstroDate(2015, 11, 15, 20, 23, 18.454334, TimeZone::EST()); echo "\n" . $d; echo "\n" . $d->setDate(2020, 10, 2); echo "\n" . $d->setTime(23, 59, 1); echo "\n" . $d->setTimezone(TimeZone::UTC()); echo "\n" . $d->setTimezone(TimeZone::EST()); }
/** * @covers Marando\AstroCoord\Cartesian::toEquat */ public function testToEquat() { $frame = Frame::ICRF(); $epoch = AstroDate::parse('2015-Mar-20')->toEpoch(); // Position $x = Distance::pc(-0.472); $y = Distance::pc(-0.361); $z = Distance::pc(-1.151); $xyz = new Cartesian($frame, $epoch, $x, $y, $z); $eq = $xyz->toEquat(); $this->assertEquals(14.4966, $eq->ra->hours, 'ra', 0.01); $this->assertEquals(-62.681, $eq->dec->deg, 'dec', 0.1); $this->assertEquals(1.29, $eq->dist->pc, 'dist', 0.01); }