...
This commit is contained in:
parent
09cf5f9c19
commit
01d5657b1b
@ -101,5 +101,10 @@ if (WITH_TESTS)
|
||||
add_executable(${NETMSG_TESTS_APP} tests/netmsg_test.cpp)
|
||||
target_link_libraries(${NETMSG_TESTS_APP} mcc)
|
||||
|
||||
|
||||
set(MCCCOORD_TEST_APP mcc_coord_test)
|
||||
add_executable(${MCCCOORD_TEST_APP} tests/mcc_coord_test.cpp)
|
||||
target_link_libraries(${MCCCOORD_TEST_APP} mcc ERFA_LIB)
|
||||
|
||||
enable_testing()
|
||||
endif()
|
||||
|
||||
@ -273,10 +273,8 @@ public:
|
||||
{
|
||||
double ra_obs, dec_obs, az, zd, ha;
|
||||
|
||||
MccCelestialCoordEpoch ep;
|
||||
ep.fromMJD((radec_obs->MJD()));
|
||||
|
||||
auto err = icrsToObs(radec_icrs.x(), radec_icrs.y(), ep, &ra_obs, &dec_obs, &ha, &az, &zd, obj_params);
|
||||
auto err =
|
||||
icrsToObs(radec_icrs.x(), radec_icrs.y(), radec_icrs.epoch(), &ra_obs, &dec_obs, &ha, &az, &zd, obj_params);
|
||||
|
||||
if (!err) {
|
||||
if (radec_obs) {
|
||||
@ -285,7 +283,7 @@ public:
|
||||
}
|
||||
|
||||
if (azzd) {
|
||||
azzd->setMJD(radec_obs->MJD());
|
||||
azzd->setEpoch(radec_obs->epoch());
|
||||
azzd->setX(az);
|
||||
azzd->setY(zd);
|
||||
}
|
||||
@ -323,10 +321,8 @@ public:
|
||||
{
|
||||
double ra_app, dec_app, az, zd, ha;
|
||||
|
||||
MccCelestialCoordEpoch ep;
|
||||
ep.fromMJD((radec_app->MJD()));
|
||||
|
||||
auto err = icrsToApp(radec_icrs.x(), radec_icrs.y(), ep, &ra_app, &dec_app, &ha, &az, &zd, obj_params);
|
||||
auto err =
|
||||
icrsToApp(radec_icrs.x(), radec_icrs.y(), radec_icrs.epoch(), &ra_app, &dec_app, &ha, &az, &zd, obj_params);
|
||||
|
||||
if (!err) {
|
||||
if (radec_app) {
|
||||
@ -335,7 +331,7 @@ public:
|
||||
}
|
||||
|
||||
if (azzd) {
|
||||
azzd->setMJD(radec_app->MJD());
|
||||
azzd->setEpoch(radec_app->epoch());
|
||||
azzd->setX(az);
|
||||
azzd->setY(zd);
|
||||
}
|
||||
@ -364,10 +360,7 @@ public:
|
||||
{
|
||||
double ra, dec;
|
||||
|
||||
MccCelestialCoordEpoch ep;
|
||||
ep.fromMJD((xy_obs->MJD()));
|
||||
|
||||
auto err = obsToICRS(xy_obs.pair_kind, ep, xy_obs.x(), xy_obs.y(), &ra, &dec);
|
||||
auto err = obsToICRS(xy_obs.pair_kind, xy_obs.epoch(), xy_obs.x(), xy_obs.y(), &ra, &dec);
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
@ -392,6 +385,22 @@ public:
|
||||
}
|
||||
|
||||
|
||||
error_t appToICRS(mcc_coord_pair_c auto const& xy_app, MccSkyRADEC_ICRS* radec_icrs)
|
||||
{
|
||||
double ra, dec;
|
||||
|
||||
auto err = appToICRS(xy_app.pair_kind, xy_app.epoch(), xy_app.x(), xy_app.y(), &ra, &dec);
|
||||
if (!err) {
|
||||
if (radec_icrs) {
|
||||
radec_icrs->setX(ra);
|
||||
radec_icrs->setY(dec);
|
||||
}
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
error_t equationOrigins(const mcc_julday_c auto& mjd, mcc_angle_c auto* eo)
|
||||
{
|
||||
if (eo == nullptr) {
|
||||
@ -437,10 +446,35 @@ public:
|
||||
}
|
||||
|
||||
// Zobs must be observed zenithal distance (Zapp = Zobs + dZ -- corrected (in vacuo) zenithal distance)
|
||||
template <typename ZAPP_T = std::nullptr_t>
|
||||
error_t refractionCorrection(mcc_angle_c auto Zobs, mcc_angle_c auto* dZ, ZAPP_T Zapp = nullptr)
|
||||
requires(std::is_null_pointer_v<ZAPP_T> ||
|
||||
(std::is_pointer_v<ZAPP_T> && mcc_angle_c<std::remove_pointer_t<ZAPP_T>>))
|
||||
{
|
||||
error_t ret = MccCCTE_ERFAErrorCode::ERROR_OK;
|
||||
|
||||
if (dZ == nullptr) {
|
||||
return MccCCTE_ERFAErrorCode::ERROR_NULLPTR;
|
||||
}
|
||||
|
||||
refract_model_t rmodel;
|
||||
ret = refractionModel(&rmodel);
|
||||
|
||||
if (!ret) {
|
||||
ret = refractionCorrection(rmodel, Zobs, dZ, Zapp);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
// Zobs must be observed zenithal distance (Zapp = Zobs + dZ -- corrected (in vacuo) zenithal distance)
|
||||
template <typename ZAPP_T = std::nullptr_t>
|
||||
error_t refractionCorrection(const refract_model_t& rmodel,
|
||||
mcc_angle_c auto Zobs,
|
||||
mcc_angle_c auto* dZ,
|
||||
mcc_angle_c auto* Zapp = nullptr)
|
||||
ZAPP_T Zapp = nullptr)
|
||||
requires(std::is_null_pointer_v<ZAPP_T> ||
|
||||
(std::is_pointer_v<ZAPP_T> && mcc_angle_c<std::remove_pointer_t<ZAPP_T>>))
|
||||
{
|
||||
error_t ret = MccCCTE_ERFAErrorCode::ERROR_OK;
|
||||
|
||||
@ -456,19 +490,47 @@ public:
|
||||
*dZ = rmodel.refa * tanZ + rmodel.refb * tanZ * tanZ * tanZ;
|
||||
}
|
||||
|
||||
if (Zapp != nullptr) {
|
||||
if constexpr (!std::is_null_pointer_v<ZAPP_T>) {
|
||||
*Zapp = Zobs + *dZ;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
// Zapp must be topocentric (in vacuo) zenithal distance (Zobs = Zapp - dZ -- observed, i.e. affected by refraction,
|
||||
// zenithal distance)
|
||||
template <typename ZOBS_T = std::nullptr_t>
|
||||
error_t refractionReverseCorrection(mcc_angle_c auto Zapp, mcc_angle_c auto* dZ, ZOBS_T Zobs = nullptr)
|
||||
requires(std::is_null_pointer_v<ZOBS_T> ||
|
||||
(std::is_pointer_v<ZOBS_T> && mcc_angle_c<std::remove_pointer_t<ZOBS_T>>))
|
||||
{
|
||||
error_t ret = MccCCTE_ERFAErrorCode::ERROR_OK;
|
||||
|
||||
if (dZ == nullptr) {
|
||||
return MccCCTE_ERFAErrorCode::ERROR_NULLPTR;
|
||||
}
|
||||
|
||||
refract_model_t rmodel;
|
||||
ret = refractionModel(&rmodel);
|
||||
|
||||
if (!ret) {
|
||||
ret = refractionReverseCorrection(rmodel, Zapp, dZ, Zobs);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
// Zapp must be topocentric (in vacuo) zenithal distance (Zobs = Zapp - dZ -- observed, i.e. affected by refraction,
|
||||
// zenithal distance)
|
||||
template <typename ZOBS_T = std::nullptr_t>
|
||||
error_t refractionReverseCorrection(const refract_model_t& rmodel,
|
||||
mcc_angle_c auto Zapp,
|
||||
mcc_angle_c auto* dZ,
|
||||
mcc_angle_c auto* Zobs = nullptr)
|
||||
ZOBS_T Zobs = nullptr)
|
||||
requires(std::is_null_pointer_v<ZOBS_T> ||
|
||||
(std::is_pointer_v<ZOBS_T> && mcc_angle_c<std::remove_pointer_t<ZOBS_T>>))
|
||||
{
|
||||
error_t ret = MccCCTE_ERFAErrorCode::ERROR_OK;
|
||||
|
||||
@ -489,7 +551,7 @@ public:
|
||||
(1.0 + rmodel.refa + tanZ2 * (rmodel.refa + b3) + b3 * tanZ2 * tanZ2);
|
||||
}
|
||||
|
||||
if (Zobs != nullptr) {
|
||||
if constexpr (!std::is_null_pointer_v<ZOBS_T>) {
|
||||
*Zobs = Zapp - *dZ;
|
||||
}
|
||||
|
||||
@ -600,7 +662,8 @@ protected:
|
||||
// NOTE: according to definition of astronomical azimuth it is counted from the South through the West, but
|
||||
// in the ERFA the azimuth is counted from the North through the East!!!
|
||||
//
|
||||
*az = MccAngle(a + std::numbers::pi).normalize<MccAngle::NORM_KIND_0_360>();
|
||||
*az = MccAngle(a - std::numbers::pi).normalize<MccAngle::NORM_KIND_0_360>();
|
||||
// *az = MccAngle(a + std::numbers::pi).normalize<MccAngle::NORM_KIND_0_360>();
|
||||
}
|
||||
|
||||
if (zd) {
|
||||
|
||||
@ -15,10 +15,10 @@ static std::string MCC_DEFAULT_LEAP_SECONDS_FILE = R"--(
|
||||
# Value of TAI-UTC in second valid beetween the initial value until
|
||||
# the epoch given on the next line. The last line reads that NO
|
||||
# leap second was introduced since the corresponding date
|
||||
# Updated through IERS Bulletin 70 issued in July 2025
|
||||
# Updated through IERS Bulletin 71 issued in January 2026
|
||||
#
|
||||
#
|
||||
# File expires on 28 June 2026
|
||||
# File expires on 28 December 2026
|
||||
#
|
||||
#
|
||||
# MJD Date TAI-UTC (s)
|
||||
@ -67,7 +67,7 @@ static std::string MCC_DEFAULT_IERS_BULLETIN_A_FILE = R"--(
|
||||
* *
|
||||
* Rapid Service/Prediction of Earth Orientation *
|
||||
**********************************************************************
|
||||
27 November 2025 Vol. XXXVIII No. 048
|
||||
8 January 2026 Vol. XXXIX No. 002
|
||||
______________________________________________________________________
|
||||
GENERAL INFORMATION:
|
||||
MJD = Julian Date - 2 400 000.5 days
|
||||
@ -83,7 +83,7 @@ static std::string MCC_DEFAULT_IERS_BULLETIN_A_FILE = R"--(
|
||||
* ANNOUNCEMENTS: *
|
||||
* *
|
||||
* There will NOT be a leap second introduced in UTC *
|
||||
* at the end of December 2025. *
|
||||
* at the end of June 2026. *
|
||||
* *
|
||||
* The primary source for IERS Rapid Service/Prediction Center (RS/PC) *
|
||||
* data products is the official IERS RS/PC website: *
|
||||
@ -116,13 +116,47 @@ static std::string MCC_DEFAULT_IERS_BULLETIN_A_FILE = R"--(
|
||||
IERS Rapid Service
|
||||
MJD x error y error UT1-UTC error
|
||||
" " " " s s
|
||||
25 11 21 61000 0.14376 .00009 0.31566 .00009 0.083583 0.000014
|
||||
25 11 22 61001 0.14182 .00009 0.31496 .00009 0.083767 0.000013
|
||||
25 11 23 61002 0.13974 .00009 0.31421 .00009 0.083987 0.000016
|
||||
25 11 24 61003 0.13813 .00009 0.31362 .00009 0.084205 0.000015
|
||||
25 11 25 61004 0.13714 .00009 0.31374 .00009 0.084304 0.000015
|
||||
25 11 26 61005 0.13608 .00009 0.31443 .00009 0.084178 0.000013
|
||||
25 11 27 61006 0.13507 .00009 0.31503 .00009 0.083748 0.000014
|
||||
26 1 2 61042 0.10962 .00009 0.33249 .00009 0.074152 0.000020
|
||||
26 1 3 61043 0.10827 .00009 0.33355 .00009 0.074367 0.000021
|
||||
26 1 4 61044 0.10690 .00009 0.33455 .00009 0.074487 0.000020
|
||||
26 1 5 61045 0.10554 .00009 0.33551 .00009 0.074361 0.000015
|
||||
26 1 6 61046 0.10404 .00009 0.33628 .00009 0.073991 0.000015
|
||||
26 1 7 61047 0.10253 .00009 0.33692 .00009 0.073470 0.000012
|
||||
26 1 8 61048 0.10121 .00009 0.33746 .00009 0.072861 0.000008
|
||||
|
||||
IERS Final Values
|
||||
MJD x y UT1-UTC
|
||||
" " s
|
||||
25 11 2 60981 0.1750 0.3194 0.09220
|
||||
25 11 3 60982 0.1735 0.3187 0.09112
|
||||
25 11 4 60983 0.1718 0.3187 0.09005
|
||||
25 11 5 60984 0.1699 0.3183 0.08916
|
||||
25 11 6 60985 0.1679 0.3182 0.08854
|
||||
25 11 7 60986 0.1659 0.3179 0.08822
|
||||
25 11 8 60987 0.1640 0.3171 0.08814
|
||||
25 11 9 60988 0.1630 0.3163 0.08819
|
||||
25 11 10 60989 0.1625 0.3158 0.08820
|
||||
25 11 11 60990 0.1615 0.3153 0.08801
|
||||
25 11 12 60991 0.1602 0.3151 0.08763
|
||||
25 11 13 60992 0.1583 0.3154 0.08711
|
||||
25 11 14 60993 0.1564 0.3157 0.08644
|
||||
25 11 15 60994 0.1545 0.3160 0.08566
|
||||
25 11 16 60995 0.1530 0.3163 0.08494
|
||||
25 11 17 60996 0.1511 0.3167 0.08433
|
||||
25 11 18 60997 0.1491 0.3165 0.08390
|
||||
25 11 19 60998 0.1474 0.3163 0.08366
|
||||
25 11 20 60999 0.1456 0.3161 0.08357
|
||||
25 11 21 61000 0.1437 0.3157 0.08363
|
||||
25 11 22 61001 0.1419 0.3149 0.08381
|
||||
25 11 23 61002 0.1398 0.3143 0.08403
|
||||
25 11 24 61003 0.1380 0.3136 0.08426
|
||||
25 11 25 61004 0.1373 0.3137 0.08431
|
||||
25 11 26 61005 0.1360 0.3146 0.08417
|
||||
25 11 27 61006 0.1351 0.3149 0.08377
|
||||
25 11 28 61007 0.1343 0.3153 0.08305
|
||||
25 11 29 61008 0.1334 0.3153 0.08209
|
||||
25 11 30 61009 0.1325 0.3157 0.08097
|
||||
25 12 1 61010 0.1316 0.3160 0.07984
|
||||
|
||||
_______________________________________________________________________
|
||||
|
||||
@ -130,417 +164,480 @@ static std::string MCC_DEFAULT_IERS_BULLETIN_A_FILE = R"--(
|
||||
The following formulas will not reproduce the predictions given below,
|
||||
but may be used to extend the predictions beyond the end of this table.
|
||||
|
||||
x = 0.1394 + 0.0553 cos A - 0.1352 sin A - 0.0554 cos C + 0.0383 sin C
|
||||
y = 0.3901 - 0.1172 cos A - 0.0610 sin A + 0.0383 cos C + 0.0554 sin C
|
||||
UT1-UTC = 0.0660 + 0.00007 (MJD - 61014) - (UT2-UT1)
|
||||
x = 0.1611 - 0.0626 cos A - 0.1221 sin A + 0.0025 cos C + 0.0585 sin C
|
||||
y = 0.3836 - 0.1091 cos A + 0.0516 sin A + 0.0585 cos C - 0.0025 sin C
|
||||
UT1-UTC = 0.0617 + 0.00005 (MJD - 61056) - (UT2-UT1)
|
||||
|
||||
where A = 2*pi*(MJD-61006)/365.25 and C = 2*pi*(MJD-61006)/435.
|
||||
where A = 2*pi*(MJD-61048)/365.25 and C = 2*pi*(MJD-61048)/435.
|
||||
|
||||
TAI-UTC(MJD 61007) = 37.0
|
||||
TAI-UTC(MJD 61049) = 37.0
|
||||
The accuracy may be estimated from the expressions:
|
||||
S x,y = 0.00068 (MJD-61006)**0.80 S t = 0.00025 (MJD-61006)**0.75
|
||||
S x,y = 0.00068 (MJD-61048)**0.80 S t = 0.00025 (MJD-61048)**0.75
|
||||
Estimated accuracies are: Predictions 10 d 20 d 30 d 40 d
|
||||
Polar coord's 0.004 0.007 0.010 0.013
|
||||
UT1-UTC 0.0014 0.0024 0.0032 0.0040
|
||||
|
||||
MJD x(arcsec) y(arcsec) UT1-UTC(sec)
|
||||
2025 11 28 61007 0.1339 0.3157 0.08302
|
||||
2025 11 29 61008 0.1328 0.3161 0.08204
|
||||
2025 11 30 61009 0.1317 0.3165 0.08094
|
||||
2025 12 1 61010 0.1304 0.3167 0.07981
|
||||
2025 12 2 61011 0.1292 0.3169 0.07882
|
||||
2025 12 3 61012 0.1279 0.3172 0.07809
|
||||
2025 12 4 61013 0.1267 0.3174 0.07768
|
||||
2025 12 5 61014 0.1256 0.3177 0.07756
|
||||
2025 12 6 61015 0.1245 0.3180 0.07761
|
||||
2025 12 7 61016 0.1234 0.3183 0.07767
|
||||
2025 12 8 61017 0.1223 0.3186 0.07758
|
||||
2025 12 9 61018 0.1212 0.3189 0.07724
|
||||
2025 12 10 61019 0.1202 0.3192 0.07669
|
||||
2025 12 11 61020 0.1191 0.3196 0.07603
|
||||
2025 12 12 61021 0.1180 0.3200 0.07533
|
||||
2025 12 13 61022 0.1169 0.3203 0.07467
|
||||
2025 12 14 61023 0.1159 0.3207 0.07413
|
||||
2025 12 15 61024 0.1148 0.3211 0.07375
|
||||
2025 12 16 61025 0.1138 0.3216 0.07354
|
||||
2025 12 17 61026 0.1127 0.3220 0.07354
|
||||
2025 12 18 61027 0.1117 0.3224 0.07372
|
||||
2025 12 19 61028 0.1106 0.3229 0.07406
|
||||
2025 12 20 61029 0.1096 0.3234 0.07450
|
||||
2025 12 21 61030 0.1086 0.3239 0.07496
|
||||
2025 12 22 61031 0.1076 0.3244 0.07535
|
||||
2025 12 23 61032 0.1066 0.3249 0.07560
|
||||
2025 12 24 61033 0.1056 0.3254 0.07565
|
||||
2025 12 25 61034 0.1046 0.3260 0.07547
|
||||
2025 12 26 61035 0.1037 0.3266 0.07507
|
||||
2025 12 27 61036 0.1027 0.3272 0.07451
|
||||
2025 12 28 61037 0.1017 0.3278 0.07389
|
||||
2025 12 29 61038 0.1008 0.3284 0.07334
|
||||
2025 12 30 61039 0.0998 0.3290 0.07299
|
||||
2025 12 31 61040 0.0989 0.3297 0.07292
|
||||
2026 1 1 61041 0.0980 0.3304 0.07315
|
||||
2026 1 2 61042 0.0971 0.3311 0.07361
|
||||
2026 1 3 61043 0.0962 0.3318 0.07417
|
||||
2026 1 4 61044 0.0953 0.3325 0.07467
|
||||
2026 1 5 61045 0.0945 0.3332 0.07499
|
||||
2026 1 6 61046 0.0936 0.3340 0.07508
|
||||
2026 1 7 61047 0.0928 0.3348 0.07496
|
||||
2026 1 8 61048 0.0920 0.3355 0.07474
|
||||
2026 1 9 61049 0.0912 0.3363 0.07449
|
||||
2026 1 10 61050 0.0904 0.3372 0.07431
|
||||
2026 1 11 61051 0.0896 0.3380 0.07426
|
||||
2026 1 12 61052 0.0888 0.3388 0.07438
|
||||
2026 1 13 61053 0.0881 0.3397 0.07469
|
||||
2026 1 14 61054 0.0873 0.3405 0.07517
|
||||
2026 1 15 61055 0.0866 0.3414 0.07580
|
||||
2026 1 16 61056 0.0859 0.3423 0.07652
|
||||
2026 1 17 61057 0.0852 0.3432 0.07725
|
||||
2026 1 18 61058 0.0846 0.3442 0.07792
|
||||
2026 1 19 61059 0.0839 0.3451 0.07845
|
||||
2026 1 20 61060 0.0833 0.3461 0.07876
|
||||
2026 1 21 61061 0.0827 0.3470 0.07883
|
||||
2026 1 22 61062 0.0821 0.3480 0.07865
|
||||
2026 1 23 61063 0.0815 0.3490 0.07828
|
||||
2026 1 24 61064 0.0810 0.3500 0.07782
|
||||
2026 1 25 61065 0.0804 0.3510 0.07738
|
||||
2026 1 26 61066 0.0799 0.3520 0.07709
|
||||
2026 1 27 61067 0.0794 0.3530 0.07703
|
||||
2026 1 28 61068 0.0789 0.3541 0.07721
|
||||
2026 1 29 61069 0.0785 0.3551 0.07760
|
||||
2026 1 30 61070 0.0780 0.3562 0.07808
|
||||
2026 1 31 61071 0.0776 0.3572 0.07851
|
||||
2026 2 1 61072 0.0772 0.3583 0.07878
|
||||
2026 2 2 61073 0.0768 0.3594 0.07880
|
||||
2026 2 3 61074 0.0765 0.3605 0.07857
|
||||
2026 2 4 61075 0.0761 0.3616 0.07815
|
||||
2026 2 5 61076 0.0758 0.3627 0.07764
|
||||
2026 2 6 61077 0.0755 0.3638 0.07715
|
||||
2026 2 7 61078 0.0753 0.3649 0.07676
|
||||
2026 2 8 61079 0.0750 0.3660 0.07652
|
||||
2026 2 9 61080 0.0748 0.3672 0.07646
|
||||
2026 2 10 61081 0.0746 0.3683 0.07657
|
||||
2026 2 11 61082 0.0744 0.3695 0.07683
|
||||
2026 2 12 61083 0.0742 0.3706 0.07719
|
||||
2026 2 13 61084 0.0741 0.3718 0.07758
|
||||
2026 2 14 61085 0.0740 0.3729 0.07792
|
||||
2026 2 15 61086 0.0739 0.3741 0.07814
|
||||
2026 2 16 61087 0.0738 0.3752 0.07814
|
||||
2026 2 17 61088 0.0738 0.3764 0.07788
|
||||
2026 2 18 61089 0.0738 0.3776 0.07735
|
||||
2026 2 19 61090 0.0737 0.3788 0.07659
|
||||
2026 2 20 61091 0.0738 0.3799 0.07570
|
||||
2026 2 21 61092 0.0738 0.3811 0.07482
|
||||
2026 2 22 61093 0.0739 0.3823 0.07406
|
||||
2026 2 23 61094 0.0740 0.3835 0.07353
|
||||
2026 2 24 61095 0.0741 0.3846 0.07326
|
||||
2026 2 25 61096 0.0742 0.3858 0.07322
|
||||
2026 2 26 61097 0.0744 0.3870 0.07331
|
||||
2026 2 27 61098 0.0746 0.3882 0.07340
|
||||
2026 2 28 61099 0.0748 0.3894 0.07336
|
||||
2026 3 1 61100 0.0750 0.3905 0.07310
|
||||
2026 3 2 61101 0.0753 0.3917 0.07258
|
||||
2026 3 3 61102 0.0756 0.3929 0.07184
|
||||
2026 3 4 61103 0.0759 0.3941 0.07096
|
||||
2026 3 5 61104 0.0762 0.3952 0.07006
|
||||
2026 3 6 61105 0.0765 0.3964 0.06922
|
||||
2026 3 7 61106 0.0769 0.3976 0.06852
|
||||
2026 3 8 61107 0.0773 0.3987 0.06802
|
||||
2026 3 9 61108 0.0777 0.3999 0.06771
|
||||
2026 3 10 61109 0.0782 0.4010 0.06759
|
||||
2026 3 11 61110 0.0786 0.4022 0.06759
|
||||
2026 3 12 61111 0.0791 0.4033 0.06766
|
||||
2026 3 13 61112 0.0796 0.4044 0.06772
|
||||
2026 3 14 61113 0.0802 0.4056 0.06770
|
||||
2026 3 15 61114 0.0807 0.4067 0.06749
|
||||
2026 3 16 61115 0.0813 0.4078 0.06709
|
||||
2026 3 17 61116 0.0819 0.4089 0.06640
|
||||
2026 3 18 61117 0.0825 0.4100 0.06546
|
||||
2026 3 19 61118 0.0832 0.4111 0.06433
|
||||
2026 3 20 61119 0.0838 0.4122 0.06315
|
||||
2026 3 21 61120 0.0845 0.4132 0.06206
|
||||
2026 3 22 61121 0.0852 0.4143 0.06120
|
||||
2026 3 23 61122 0.0860 0.4154 0.06061
|
||||
2026 3 24 61123 0.0867 0.4164 0.06030
|
||||
2026 3 25 61124 0.0875 0.4174 0.06016
|
||||
2026 3 26 61125 0.0883 0.4185 0.06007
|
||||
2026 3 27 61126 0.0891 0.4195 0.05991
|
||||
2026 3 28 61127 0.0900 0.4205 0.05956
|
||||
2026 3 29 61128 0.0908 0.4215 0.05899
|
||||
2026 3 30 61129 0.0917 0.4224 0.05821
|
||||
2026 3 31 61130 0.0926 0.4234 0.05727
|
||||
2026 4 1 61131 0.0935 0.4244 0.05628
|
||||
2026 4 2 61132 0.0945 0.4253 0.05533
|
||||
2026 4 3 61133 0.0954 0.4262 0.05450
|
||||
2026 4 4 61134 0.0964 0.4271 0.05387
|
||||
2026 4 5 61135 0.0974 0.4280 0.05344
|
||||
2026 4 6 61136 0.0984 0.4289 0.05321
|
||||
2026 4 7 61137 0.0994 0.4298 0.05315
|
||||
2026 4 8 61138 0.1005 0.4306 0.05320
|
||||
2026 4 9 61139 0.1016 0.4315 0.05329
|
||||
2026 4 10 61140 0.1026 0.4323 0.05333
|
||||
2026 4 11 61141 0.1038 0.4331 0.05324
|
||||
2026 4 12 61142 0.1049 0.4339 0.05296
|
||||
2026 4 13 61143 0.1060 0.4347 0.05243
|
||||
2026 4 14 61144 0.1072 0.4354 0.05164
|
||||
2026 4 15 61145 0.1083 0.4362 0.05064
|
||||
2026 4 16 61146 0.1095 0.4369 0.04952
|
||||
2026 4 17 61147 0.1107 0.4376 0.04842
|
||||
2026 4 18 61148 0.1120 0.4383 0.04751
|
||||
2026 4 19 61149 0.1132 0.4389 0.04688
|
||||
2026 4 20 61150 0.1144 0.4396 0.04656
|
||||
2026 4 21 61151 0.1157 0.4402 0.04647
|
||||
2026 4 22 61152 0.1170 0.4408 0.04649
|
||||
2026 4 23 61153 0.1183 0.4414 0.04647
|
||||
2026 4 24 61154 0.1196 0.4420 0.04631
|
||||
2026 4 25 61155 0.1209 0.4426 0.04596
|
||||
2026 4 26 61156 0.1222 0.4431 0.04541
|
||||
2026 4 27 61157 0.1235 0.4436 0.04473
|
||||
2026 4 28 61158 0.1249 0.4441 0.04398
|
||||
2026 4 29 61159 0.1263 0.4446 0.04327
|
||||
2026 4 30 61160 0.1276 0.4451 0.04267
|
||||
2026 5 1 61161 0.1290 0.4455 0.04225
|
||||
2026 5 2 61162 0.1304 0.4459 0.04204
|
||||
2026 5 3 61163 0.1318 0.4463 0.04204
|
||||
2026 5 4 61164 0.1332 0.4467 0.04223
|
||||
2026 5 5 61165 0.1346 0.4470 0.04256
|
||||
2026 5 6 61166 0.1361 0.4473 0.04294
|
||||
2026 5 7 61167 0.1375 0.4476 0.04332
|
||||
2026 5 8 61168 0.1390 0.4479 0.04361
|
||||
2026 5 9 61169 0.1404 0.4482 0.04375
|
||||
2026 5 10 61170 0.1419 0.4484 0.04368
|
||||
2026 5 11 61171 0.1433 0.4486 0.04337
|
||||
2026 5 12 61172 0.1448 0.4488 0.04285
|
||||
2026 5 13 61173 0.1463 0.4490 0.04218
|
||||
2026 5 14 61174 0.1478 0.4492 0.04147
|
||||
2026 5 15 61175 0.1493 0.4493 0.04087
|
||||
2026 5 16 61176 0.1508 0.4494 0.04050
|
||||
2026 5 17 61177 0.1523 0.4495 0.04043
|
||||
2026 5 18 61178 0.1538 0.4495 0.04064
|
||||
2026 5 19 61179 0.1553 0.4496 0.04102
|
||||
2026 5 20 61180 0.1568 0.4496 0.04141
|
||||
2026 5 21 61181 0.1583 0.4496 0.04168
|
||||
2026 5 22 61182 0.1598 0.4495 0.04176
|
||||
2026 5 23 61183 0.1613 0.4495 0.04163
|
||||
2026 5 24 61184 0.1628 0.4494 0.04136
|
||||
2026 5 25 61185 0.1643 0.4493 0.04102
|
||||
2026 5 26 61186 0.1658 0.4492 0.04070
|
||||
2026 5 27 61187 0.1673 0.4490 0.04049
|
||||
2026 5 28 61188 0.1688 0.4488 0.04042
|
||||
2026 5 29 61189 0.1704 0.4486 0.04054
|
||||
2026 5 30 61190 0.1719 0.4484 0.04085
|
||||
2026 5 31 61191 0.1734 0.4482 0.04132
|
||||
2026 6 1 61192 0.1749 0.4479 0.04190
|
||||
2026 6 2 61193 0.1764 0.4476 0.04253
|
||||
2026 6 3 61194 0.1779 0.4473 0.04314
|
||||
2026 6 4 61195 0.1793 0.4470 0.04364
|
||||
2026 6 5 61196 0.1808 0.4466 0.04399
|
||||
2026 6 6 61197 0.1823 0.4462 0.04416
|
||||
2026 6 7 61198 0.1838 0.4458 0.04415
|
||||
2026 6 8 61199 0.1853 0.4454 0.04397
|
||||
2026 6 9 61200 0.1867 0.4449 0.04367
|
||||
2026 6 10 61201 0.1882 0.4444 0.04334
|
||||
2026 6 11 61202 0.1896 0.4439 0.04309
|
||||
2026 6 12 61203 0.1911 0.4434 0.04301
|
||||
2026 6 13 61204 0.1925 0.4429 0.04320
|
||||
2026 6 14 61205 0.1939 0.4423 0.04367
|
||||
2026 6 15 61206 0.1953 0.4417 0.04432
|
||||
2026 6 16 61207 0.1967 0.4411 0.04505
|
||||
2026 6 17 61208 0.1981 0.4405 0.04568
|
||||
2026 6 18 61209 0.1995 0.4398 0.04613
|
||||
2026 6 19 61210 0.2009 0.4391 0.04636
|
||||
2026 6 20 61211 0.2022 0.4384 0.04641
|
||||
2026 6 21 61212 0.2036 0.4377 0.04640
|
||||
2026 6 22 61213 0.2049 0.4370 0.04644
|
||||
2026 6 23 61214 0.2063 0.4362 0.04662
|
||||
2026 6 24 61215 0.2076 0.4354 0.04700
|
||||
2026 6 25 61216 0.2089 0.4346 0.04759
|
||||
2026 6 26 61217 0.2102 0.4338 0.04839
|
||||
2026 6 27 61218 0.2114 0.4329 0.04939
|
||||
2026 6 28 61219 0.2127 0.4321 0.05053
|
||||
2026 6 29 61220 0.2139 0.4312 0.05178
|
||||
2026 6 30 61221 0.2152 0.4303 0.05308
|
||||
2026 7 1 61222 0.2164 0.4293 0.05437
|
||||
2026 7 2 61223 0.2176 0.4284 0.05558
|
||||
2026 7 3 61224 0.2188 0.4274 0.05666
|
||||
2026 7 4 61225 0.2199 0.4264 0.05756
|
||||
2026 7 5 61226 0.2211 0.4254 0.05823
|
||||
2026 7 6 61227 0.2222 0.4244 0.05872
|
||||
2026 7 7 61228 0.2233 0.4234 0.05913
|
||||
2026 7 8 61229 0.2244 0.4223 0.05955
|
||||
2026 7 9 61230 0.2255 0.4212 0.06009
|
||||
2026 7 10 61231 0.2265 0.4201 0.06082
|
||||
2026 7 11 61232 0.2276 0.4190 0.06188
|
||||
2026 7 12 61233 0.2286 0.4179 0.06315
|
||||
2026 7 13 61234 0.2296 0.4168 0.06447
|
||||
2026 7 14 61235 0.2305 0.4156 0.06578
|
||||
2026 7 15 61236 0.2315 0.4144 0.06697
|
||||
2026 7 16 61237 0.2324 0.4132 0.06793
|
||||
2026 7 17 61238 0.2333 0.4120 0.06865
|
||||
2026 7 18 61239 0.2342 0.4108 0.06925
|
||||
2026 7 19 61240 0.2351 0.4096 0.06982
|
||||
2026 7 20 61241 0.2359 0.4083 0.07043
|
||||
2026 7 21 61242 0.2368 0.4071 0.07114
|
||||
2026 7 22 61243 0.2376 0.4058 0.07204
|
||||
2026 7 23 61244 0.2383 0.4045 0.07315
|
||||
2026 7 24 61245 0.2391 0.4032 0.07447
|
||||
2026 7 25 61246 0.2398 0.4019 0.07601
|
||||
2026 7 26 61247 0.2405 0.4006 0.07762
|
||||
2026 7 27 61248 0.2412 0.3992 0.07923
|
||||
2026 7 28 61249 0.2419 0.3979 0.08080
|
||||
2026 7 29 61250 0.2425 0.3965 0.08223
|
||||
2026 7 30 61251 0.2431 0.3952 0.08345
|
||||
2026 7 31 61252 0.2437 0.3938 0.08445
|
||||
2026 8 1 61253 0.2443 0.3924 0.08525
|
||||
2026 8 2 61254 0.2448 0.3910 0.08582
|
||||
2026 8 3 61255 0.2453 0.3896 0.08630
|
||||
2026 8 4 61256 0.2458 0.3882 0.08678
|
||||
2026 8 5 61257 0.2463 0.3867 0.08740
|
||||
2026 8 6 61258 0.2467 0.3853 0.08823
|
||||
2026 8 7 61259 0.2471 0.3839 0.08932
|
||||
2026 8 8 61260 0.2475 0.3824 0.09066
|
||||
2026 8 9 61261 0.2478 0.3810 0.09216
|
||||
2026 8 10 61262 0.2482 0.3795 0.09359
|
||||
2026 8 11 61263 0.2485 0.3780 0.09490
|
||||
2026 8 12 61264 0.2487 0.3766 0.09596
|
||||
2026 8 13 61265 0.2490 0.3751 0.09670
|
||||
2026 8 14 61266 0.2492 0.3736 0.09719
|
||||
2026 8 15 61267 0.2494 0.3721 0.09761
|
||||
2026 8 16 61268 0.2496 0.3706 0.09798
|
||||
2026 8 17 61269 0.2497 0.3692 0.09843
|
||||
2026 8 18 61270 0.2498 0.3677 0.09905
|
||||
2026 8 19 61271 0.2499 0.3662 0.09985
|
||||
2026 8 20 61272 0.2499 0.3647 0.10084
|
||||
2026 8 21 61273 0.2500 0.3632 0.10199
|
||||
2026 8 22 61274 0.2500 0.3617 0.10330
|
||||
2026 8 23 61275 0.2499 0.3602 0.10462
|
||||
2026 8 24 61276 0.2499 0.3587 0.10594
|
||||
2026 8 25 61277 0.2498 0.3572 0.10718
|
||||
2026 8 26 61278 0.2497 0.3557 0.10829
|
||||
2026 8 27 61279 0.2495 0.3542 0.10912
|
||||
2026 8 28 61280 0.2494 0.3527 0.10972
|
||||
2026 8 29 61281 0.2492 0.3512 0.11011
|
||||
2026 8 30 61282 0.2489 0.3497 0.11035
|
||||
2026 8 31 61283 0.2487 0.3482 0.11057
|
||||
2026 9 1 61284 0.2484 0.3467 0.11085
|
||||
2026 9 2 61285 0.2481 0.3452 0.11128
|
||||
2026 9 3 61286 0.2478 0.3437 0.11196
|
||||
2026 9 4 61287 0.2474 0.3423 0.11277
|
||||
2026 9 5 61288 0.2470 0.3408 0.11371
|
||||
2026 9 6 61289 0.2466 0.3393 0.11478
|
||||
2026 9 7 61290 0.2461 0.3379 0.11578
|
||||
2026 9 8 61291 0.2457 0.3364 0.11647
|
||||
2026 9 9 61292 0.2452 0.3350 0.11688
|
||||
2026 9 10 61293 0.2446 0.3336 0.11703
|
||||
2026 9 11 61294 0.2441 0.3321 0.11694
|
||||
2026 9 12 61295 0.2435 0.3307 0.11678
|
||||
2026 9 13 61296 0.2429 0.3293 0.11663
|
||||
2026 9 14 61297 0.2423 0.3279 0.11658
|
||||
2026 9 15 61298 0.2416 0.3265 0.11678
|
||||
2026 9 16 61299 0.2409 0.3251 0.11724
|
||||
2026 9 17 61300 0.2402 0.3237 0.11786
|
||||
2026 9 18 61301 0.2395 0.3224 0.11862
|
||||
2026 9 19 61302 0.2387 0.3210 0.11948
|
||||
2026 9 20 61303 0.2379 0.3197 0.12038
|
||||
2026 9 21 61304 0.2371 0.3184 0.12121
|
||||
2026 9 22 61305 0.2363 0.3170 0.12182
|
||||
2026 9 23 61306 0.2354 0.3157 0.12217
|
||||
2026 9 24 61307 0.2345 0.3144 0.12224
|
||||
2026 9 25 61308 0.2336 0.3132 0.12195
|
||||
2026 9 26 61309 0.2327 0.3119 0.12154
|
||||
2026 9 27 61310 0.2317 0.3107 0.12102
|
||||
2026 9 28 61311 0.2307 0.3094 0.12054
|
||||
2026 9 29 61312 0.2297 0.3082 0.12015
|
||||
2026 9 30 61313 0.2287 0.3070 0.12000
|
||||
2026 10 1 61314 0.2276 0.3058 0.12018
|
||||
2026 10 2 61315 0.2265 0.3046 0.12054
|
||||
2026 10 3 61316 0.2254 0.3035 0.12103
|
||||
2026 10 4 61317 0.2243 0.3023 0.12144
|
||||
2026 10 5 61318 0.2232 0.3012 0.12165
|
||||
2026 10 6 61319 0.2220 0.3001 0.12164
|
||||
2026 10 7 61320 0.2208 0.2990 0.12139
|
||||
2026 10 8 61321 0.2196 0.2980 0.12088
|
||||
2026 10 9 61322 0.2184 0.2969 0.12027
|
||||
2026 10 10 61323 0.2171 0.2959 0.11972
|
||||
2026 10 11 61324 0.2158 0.2949 0.11925
|
||||
2026 10 12 61325 0.2146 0.2939 0.11890
|
||||
2026 10 13 61326 0.2133 0.2929 0.11887
|
||||
2026 10 14 61327 0.2119 0.2920 0.11912
|
||||
2026 10 15 61328 0.2106 0.2910 0.11953
|
||||
2026 10 16 61329 0.2092 0.2901 0.12012
|
||||
2026 10 17 61330 0.2078 0.2892 0.12065
|
||||
2026 10 18 61331 0.2064 0.2884 0.12109
|
||||
2026 10 19 61332 0.2050 0.2875 0.12137
|
||||
2026 10 20 61333 0.2036 0.2867 0.12146
|
||||
2026 10 21 61334 0.2021 0.2859 0.12130
|
||||
2026 10 22 61335 0.2007 0.2851 0.12093
|
||||
2026 10 23 61336 0.1992 0.2844 0.12034
|
||||
2026 10 24 61337 0.1977 0.2836 0.11962
|
||||
2026 10 25 61338 0.1962 0.2829 0.11886
|
||||
2026 10 26 61339 0.1947 0.2822 0.11818
|
||||
2026 10 27 61340 0.1931 0.2816 0.11769
|
||||
2026 10 28 61341 0.1916 0.2809 0.11736
|
||||
2026 10 29 61342 0.1900 0.2803 0.11719
|
||||
2026 10 30 61343 0.1885 0.2797 0.11716
|
||||
2026 10 31 61344 0.1869 0.2792 0.11710
|
||||
2026 11 1 61345 0.1853 0.2786 0.11685
|
||||
2026 11 2 61346 0.1837 0.2781 0.11637
|
||||
2026 11 3 61347 0.1821 0.2776 0.11560
|
||||
2026 11 4 61348 0.1804 0.2771 0.11466
|
||||
2026 11 5 61349 0.1788 0.2767 0.11370
|
||||
2026 11 6 61350 0.1771 0.2763 0.11271
|
||||
2026 11 7 61351 0.1755 0.2759 0.11190
|
||||
2026 11 8 61352 0.1738 0.2755 0.11121
|
||||
2026 11 9 61353 0.1721 0.2752 0.11068
|
||||
2026 11 10 61354 0.1705 0.2749 0.11032
|
||||
2026 11 11 61355 0.1688 0.2746 0.11012
|
||||
2026 11 12 61356 0.1671 0.2743 0.11007
|
||||
2026 11 13 61357 0.1654 0.2741 0.11002
|
||||
2026 11 14 61358 0.1637 0.2739 0.10999
|
||||
2026 11 15 61359 0.1620 0.2737 0.10989
|
||||
2026 11 16 61360 0.1603 0.2736 0.10962
|
||||
2026 11 17 61361 0.1586 0.2734 0.10914
|
||||
2026 11 18 61362 0.1568 0.2733 0.10845
|
||||
2026 11 19 61363 0.1551 0.2733 0.10758
|
||||
2026 11 20 61364 0.1534 0.2732 0.10654
|
||||
2026 11 21 61365 0.1517 0.2732 0.10550
|
||||
2026 11 22 61366 0.1499 0.2732 0.10458
|
||||
2026 11 23 61367 0.1482 0.2733 0.10384
|
||||
2026 11 24 61368 0.1465 0.2733 0.10342
|
||||
2026 11 25 61369 0.1448 0.2734 0.10321
|
||||
2026 11 26 61370 0.1430 0.2735 0.10323
|
||||
2026 11 27 61371 0.1413 0.2737 0.10328
|
||||
2026 1 9 61049 0.1001 0.3380 0.07228
|
||||
2026 1 10 61050 0.0993 0.3385 0.07180
|
||||
2026 1 11 61051 0.0985 0.3390 0.07149
|
||||
2026 1 12 61052 0.0978 0.3396 0.07136
|
||||
2026 1 13 61053 0.0971 0.3403 0.07142
|
||||
2026 1 14 61054 0.0964 0.3411 0.07168
|
||||
2026 1 15 61055 0.0957 0.3418 0.07209
|
||||
2026 1 16 61056 0.0949 0.3426 0.07260
|
||||
2026 1 17 61057 0.0942 0.3434 0.07313
|
||||
2026 1 18 61058 0.0935 0.3442 0.07360
|
||||
2026 1 19 61059 0.0928 0.3450 0.07391
|
||||
2026 1 20 61060 0.0921 0.3458 0.07400
|
||||
2026 1 21 61061 0.0915 0.3466 0.07380
|
||||
2026 1 22 61062 0.0909 0.3474 0.07332
|
||||
2026 1 23 61063 0.0903 0.3482 0.07264
|
||||
2026 1 24 61064 0.0897 0.3490 0.07185
|
||||
2026 1 25 61065 0.0892 0.3499 0.07110
|
||||
2026 1 26 61066 0.0886 0.3507 0.07051
|
||||
2026 1 27 61067 0.0881 0.3516 0.07015
|
||||
2026 1 28 61068 0.0876 0.3524 0.07004
|
||||
2026 1 29 61069 0.0872 0.3533 0.07016
|
||||
2026 1 30 61070 0.0867 0.3542 0.07040
|
||||
2026 1 31 61071 0.0863 0.3551 0.07062
|
||||
2026 2 1 61072 0.0858 0.3560 0.07069
|
||||
2026 2 2 61073 0.0855 0.3569 0.07052
|
||||
2026 2 3 61074 0.0851 0.3578 0.07011
|
||||
2026 2 4 61075 0.0847 0.3587 0.06952
|
||||
2026 2 5 61076 0.0844 0.3596 0.06884
|
||||
2026 2 6 61077 0.0841 0.3605 0.06818
|
||||
2026 2 7 61078 0.0838 0.3615 0.06763
|
||||
2026 2 8 61079 0.0835 0.3624 0.06723
|
||||
2026 2 9 61080 0.0832 0.3634 0.06700
|
||||
2026 2 10 61081 0.0830 0.3643 0.06696
|
||||
2026 2 11 61082 0.0828 0.3653 0.06706
|
||||
2026 2 12 61083 0.0826 0.3662 0.06727
|
||||
2026 2 13 61084 0.0824 0.3672 0.06753
|
||||
2026 2 14 61085 0.0822 0.3682 0.06774
|
||||
2026 2 15 61086 0.0821 0.3692 0.06784
|
||||
2026 2 16 61087 0.0820 0.3702 0.06774
|
||||
2026 2 17 61088 0.0819 0.3711 0.06738
|
||||
2026 2 18 61089 0.0818 0.3721 0.06675
|
||||
2026 2 19 61090 0.0818 0.3731 0.06590
|
||||
2026 2 20 61091 0.0817 0.3741 0.06493
|
||||
2026 2 21 61092 0.0817 0.3751 0.06395
|
||||
2026 2 22 61093 0.0817 0.3761 0.06311
|
||||
2026 2 23 61094 0.0818 0.3771 0.06250
|
||||
2026 2 24 61095 0.0818 0.3781 0.06215
|
||||
2026 2 25 61096 0.0819 0.3792 0.06203
|
||||
2026 2 26 61097 0.0820 0.3802 0.06204
|
||||
2026 2 27 61098 0.0821 0.3812 0.06206
|
||||
2026 2 28 61099 0.0823 0.3822 0.06196
|
||||
2026 3 1 61100 0.0824 0.3832 0.06165
|
||||
2026 3 2 61101 0.0826 0.3842 0.06111
|
||||
2026 3 3 61102 0.0828 0.3852 0.06037
|
||||
2026 3 4 61103 0.0831 0.3862 0.05951
|
||||
2026 3 5 61104 0.0833 0.3872 0.05864
|
||||
2026 3 6 61105 0.0836 0.3882 0.05787
|
||||
2026 3 7 61106 0.0839 0.3893 0.05726
|
||||
2026 3 8 61107 0.0842 0.3903 0.05686
|
||||
2026 3 9 61108 0.0846 0.3913 0.05667
|
||||
2026 3 10 61109 0.0849 0.3922 0.05667
|
||||
2026 3 11 61110 0.0853 0.3932 0.05681
|
||||
2026 3 12 61111 0.0857 0.3942 0.05703
|
||||
2026 3 13 61112 0.0861 0.3952 0.05725
|
||||
2026 3 14 61113 0.0866 0.3962 0.05737
|
||||
2026 3 15 61114 0.0870 0.3972 0.05732
|
||||
2026 3 16 61115 0.0875 0.3981 0.05703
|
||||
2026 3 17 61116 0.0880 0.3991 0.05647
|
||||
2026 3 18 61117 0.0886 0.4000 0.05564
|
||||
2026 3 19 61118 0.0891 0.4010 0.05462
|
||||
2026 3 20 61119 0.0897 0.4019 0.05355
|
||||
2026 3 21 61120 0.0903 0.4029 0.05256
|
||||
2026 3 22 61121 0.0909 0.4038 0.05180
|
||||
2026 3 23 61122 0.0916 0.4047 0.05132
|
||||
2026 3 24 61123 0.0922 0.4056 0.05111
|
||||
2026 3 25 61124 0.0929 0.4065 0.05107
|
||||
2026 3 26 61125 0.0936 0.4074 0.05108
|
||||
2026 3 27 61126 0.0943 0.4083 0.05100
|
||||
2026 3 28 61127 0.0950 0.4092 0.05075
|
||||
2026 3 29 61128 0.0958 0.4101 0.05028
|
||||
2026 3 30 61129 0.0966 0.4109 0.04959
|
||||
2026 3 31 61130 0.0974 0.4118 0.04876
|
||||
2026 4 1 61131 0.0982 0.4126 0.04787
|
||||
2026 4 2 61132 0.0990 0.4134 0.04702
|
||||
2026 4 3 61133 0.0998 0.4142 0.04629
|
||||
2026 4 4 61134 0.1007 0.4150 0.04574
|
||||
2026 4 5 61135 0.1016 0.4158 0.04540
|
||||
2026 4 6 61136 0.1025 0.4166 0.04526
|
||||
2026 4 7 61137 0.1034 0.4174 0.04528
|
||||
2026 4 8 61138 0.1044 0.4181 0.04540
|
||||
2026 4 9 61139 0.1053 0.4188 0.04556
|
||||
2026 4 10 61140 0.1063 0.4196 0.04566
|
||||
2026 4 11 61141 0.1073 0.4203 0.04563
|
||||
2026 4 12 61142 0.1083 0.4210 0.04539
|
||||
2026 4 13 61143 0.1093 0.4217 0.04489
|
||||
2026 4 14 61144 0.1103 0.4223 0.04411
|
||||
2026 4 15 61145 0.1114 0.4230 0.04311
|
||||
2026 4 16 61146 0.1124 0.4236 0.04198
|
||||
2026 4 17 61147 0.1135 0.4242 0.04088
|
||||
2026 4 18 61148 0.1146 0.4248 0.03995
|
||||
2026 4 19 61149 0.1157 0.4254 0.03929
|
||||
2026 4 20 61150 0.1168 0.4260 0.03893
|
||||
2026 4 21 61151 0.1180 0.4265 0.03881
|
||||
2026 4 22 61152 0.1191 0.4271 0.03879
|
||||
2026 4 23 61153 0.1203 0.4276 0.03874
|
||||
2026 4 24 61154 0.1214 0.4281 0.03855
|
||||
2026 4 25 61155 0.1226 0.4286 0.03815
|
||||
2026 4 26 61156 0.1238 0.4291 0.03757
|
||||
2026 4 27 61157 0.1250 0.4295 0.03685
|
||||
2026 4 28 61158 0.1262 0.4299 0.03606
|
||||
2026 4 29 61159 0.1275 0.4304 0.03532
|
||||
2026 4 30 61160 0.1287 0.4308 0.03468
|
||||
2026 5 1 61161 0.1300 0.4311 0.03422
|
||||
2026 5 2 61162 0.1312 0.4315 0.03397
|
||||
2026 5 3 61163 0.1325 0.4318 0.03394
|
||||
2026 5 4 61164 0.1338 0.4322 0.03410
|
||||
2026 5 5 61165 0.1350 0.4325 0.03439
|
||||
2026 5 6 61166 0.1363 0.4327 0.03475
|
||||
2026 5 7 61167 0.1376 0.4330 0.03509
|
||||
2026 5 8 61168 0.1389 0.4332 0.03536
|
||||
2026 5 9 61169 0.1402 0.4335 0.03547
|
||||
2026 5 10 61170 0.1416 0.4337 0.03538
|
||||
2026 5 11 61171 0.1429 0.4339 0.03505
|
||||
2026 5 12 61172 0.1442 0.4340 0.03452
|
||||
2026 5 13 61173 0.1456 0.4342 0.03383
|
||||
2026 5 14 61174 0.1469 0.4343 0.03311
|
||||
2026 5 15 61175 0.1482 0.4344 0.03249
|
||||
2026 5 16 61176 0.1496 0.4345 0.03211
|
||||
2026 5 17 61177 0.1509 0.4345 0.03204
|
||||
2026 5 18 61178 0.1523 0.4345 0.03225
|
||||
2026 5 19 61179 0.1537 0.4346 0.03262
|
||||
2026 5 20 61180 0.1550 0.4346 0.03301
|
||||
2026 5 21 61181 0.1564 0.4345 0.03328
|
||||
2026 5 22 61182 0.1577 0.4345 0.03336
|
||||
2026 5 23 61183 0.1591 0.4344 0.03325
|
||||
2026 5 24 61184 0.1605 0.4343 0.03299
|
||||
2026 5 25 61185 0.1618 0.4342 0.03268
|
||||
2026 5 26 61186 0.1632 0.4341 0.03241
|
||||
2026 5 27 61187 0.1646 0.4339 0.03224
|
||||
2026 5 28 61188 0.1659 0.4338 0.03225
|
||||
2026 5 29 61189 0.1673 0.4336 0.03246
|
||||
2026 5 30 61190 0.1686 0.4333 0.03289
|
||||
2026 5 31 61191 0.1700 0.4331 0.03352
|
||||
2026 6 1 61192 0.1713 0.4328 0.03429
|
||||
2026 6 2 61193 0.1727 0.4326 0.03515
|
||||
2026 6 3 61194 0.1740 0.4323 0.03602
|
||||
2026 6 4 61195 0.1754 0.4319 0.03683
|
||||
2026 6 5 61196 0.1767 0.4316 0.03751
|
||||
2026 6 6 61197 0.1781 0.4312 0.03801
|
||||
2026 6 7 61198 0.1794 0.4308 0.03831
|
||||
2026 6 8 61199 0.1807 0.4304 0.03841
|
||||
2026 6 9 61200 0.1820 0.4300 0.03835
|
||||
2026 6 10 61201 0.1833 0.4295 0.03823
|
||||
2026 6 11 61202 0.1846 0.4291 0.03815
|
||||
2026 6 12 61203 0.1859 0.4286 0.03824
|
||||
2026 6 13 61204 0.1872 0.4280 0.03860
|
||||
2026 6 14 61205 0.1885 0.4275 0.03924
|
||||
2026 6 15 61206 0.1897 0.4270 0.04009
|
||||
2026 6 16 61207 0.1910 0.4264 0.04101
|
||||
2026 6 17 61208 0.1922 0.4258 0.04185
|
||||
2026 6 18 61209 0.1935 0.4252 0.04250
|
||||
2026 6 19 61210 0.1947 0.4245 0.04293
|
||||
2026 6 20 61211 0.1959 0.4239 0.04317
|
||||
2026 6 21 61212 0.1971 0.4232 0.04333
|
||||
2026 6 22 61213 0.1983 0.4225 0.04352
|
||||
2026 6 23 61214 0.1995 0.4218 0.04381
|
||||
2026 6 24 61215 0.2007 0.4211 0.04428
|
||||
2026 6 25 61216 0.2018 0.4203 0.04496
|
||||
2026 6 26 61217 0.2030 0.4195 0.04586
|
||||
2026 6 27 61218 0.2041 0.4187 0.04695
|
||||
2026 6 28 61219 0.2052 0.4179 0.04820
|
||||
2026 6 29 61220 0.2063 0.4171 0.04955
|
||||
2026 6 30 61221 0.2074 0.4162 0.05092
|
||||
2026 7 1 61222 0.2085 0.4154 0.05224
|
||||
2026 7 2 61223 0.2095 0.4145 0.05344
|
||||
2026 7 3 61224 0.2106 0.4136 0.05447
|
||||
2026 7 4 61225 0.2116 0.4127 0.05530
|
||||
2026 7 5 61226 0.2126 0.4118 0.05595
|
||||
2026 7 6 61227 0.2136 0.4108 0.05644
|
||||
2026 7 7 61228 0.2146 0.4098 0.05686
|
||||
2026 7 8 61229 0.2155 0.4088 0.05730
|
||||
2026 7 9 61230 0.2164 0.4078 0.05787
|
||||
2026 7 10 61231 0.2174 0.4068 0.05866
|
||||
2026 7 11 61232 0.2183 0.4058 0.05971
|
||||
2026 7 12 61233 0.2191 0.4048 0.06099
|
||||
2026 7 13 61234 0.2200 0.4037 0.06238
|
||||
2026 7 14 61235 0.2208 0.4026 0.06374
|
||||
2026 7 15 61236 0.2217 0.4015 0.06490
|
||||
2026 7 16 61237 0.2225 0.4004 0.06580
|
||||
2026 7 17 61238 0.2232 0.3993 0.06643
|
||||
2026 7 18 61239 0.2240 0.3982 0.06686
|
||||
2026 7 19 61240 0.2247 0.3970 0.06720
|
||||
2026 7 20 61241 0.2255 0.3959 0.06757
|
||||
2026 7 21 61242 0.2262 0.3947 0.06804
|
||||
2026 7 22 61243 0.2268 0.3935 0.06865
|
||||
2026 7 23 61244 0.2275 0.3923 0.06942
|
||||
2026 7 24 61245 0.2281 0.3911 0.07035
|
||||
2026 7 25 61246 0.2287 0.3899 0.07139
|
||||
2026 7 26 61247 0.2293 0.3887 0.07253
|
||||
2026 7 27 61248 0.2299 0.3875 0.07369
|
||||
2026 7 28 61249 0.2304 0.3862 0.07483
|
||||
2026 7 29 61250 0.2309 0.3849 0.07589
|
||||
2026 7 30 61251 0.2314 0.3837 0.07681
|
||||
2026 7 31 61252 0.2319 0.3824 0.07755
|
||||
2026 8 1 61253 0.2323 0.3811 0.07812
|
||||
2026 8 2 61254 0.2327 0.3798 0.07854
|
||||
2026 8 3 61255 0.2331 0.3785 0.07889
|
||||
2026 8 4 61256 0.2335 0.3772 0.07925
|
||||
2026 8 5 61257 0.2338 0.3759 0.07972
|
||||
2026 8 6 61258 0.2342 0.3746 0.08039
|
||||
2026 8 7 61259 0.2344 0.3733 0.08130
|
||||
2026 8 8 61260 0.2347 0.3719 0.08241
|
||||
2026 8 9 61261 0.2350 0.3706 0.08365
|
||||
2026 8 10 61262 0.2352 0.3692 0.08486
|
||||
2026 8 11 61263 0.2354 0.3679 0.08590
|
||||
2026 8 12 61264 0.2355 0.3665 0.08667
|
||||
2026 8 13 61265 0.2357 0.3652 0.08710
|
||||
2026 8 14 61266 0.2358 0.3638 0.08724
|
||||
2026 8 15 61267 0.2359 0.3624 0.08725
|
||||
2026 8 16 61268 0.2359 0.3611 0.08727
|
||||
2026 8 17 61269 0.2360 0.3597 0.08741
|
||||
2026 8 18 61270 0.2360 0.3583 0.08772
|
||||
2026 8 19 61271 0.2360 0.3570 0.08823
|
||||
2026 8 20 61272 0.2359 0.3556 0.08889
|
||||
2026 8 21 61273 0.2359 0.3542 0.08975
|
||||
2026 8 22 61274 0.2358 0.3528 0.09075
|
||||
2026 8 23 61275 0.2356 0.3515 0.09173
|
||||
2026 8 24 61276 0.2355 0.3501 0.09267
|
||||
2026 8 25 61277 0.2353 0.3487 0.09354
|
||||
2026 8 26 61278 0.2351 0.3473 0.09418
|
||||
2026 8 27 61279 0.2349 0.3460 0.09450
|
||||
2026 8 28 61280 0.2346 0.3446 0.09461
|
||||
2026 8 29 61281 0.2344 0.3432 0.09454
|
||||
2026 8 30 61282 0.2340 0.3419 0.09433
|
||||
2026 8 31 61283 0.2337 0.3405 0.09408
|
||||
2026 9 1 61284 0.2334 0.3391 0.09392
|
||||
2026 9 2 61285 0.2330 0.3378 0.09389
|
||||
2026 9 3 61286 0.2326 0.3364 0.09406
|
||||
2026 9 4 61287 0.2321 0.3351 0.09437
|
||||
2026 9 5 61288 0.2317 0.3337 0.09483
|
||||
2026 9 6 61289 0.2312 0.3324 0.09533
|
||||
2026 9 7 61290 0.2306 0.3311 0.09572
|
||||
2026 9 8 61291 0.2301 0.3298 0.09587
|
||||
2026 9 9 61292 0.2295 0.3285 0.09576
|
||||
2026 9 10 61293 0.2289 0.3272 0.09541
|
||||
2026 9 11 61294 0.2283 0.3259 0.09492
|
||||
2026 9 12 61295 0.2277 0.3246 0.09452
|
||||
2026 9 13 61296 0.2270 0.3233 0.09420
|
||||
2026 9 14 61297 0.2263 0.3220 0.09410
|
||||
2026 9 15 61298 0.2256 0.3208 0.09416
|
||||
2026 9 16 61299 0.2248 0.3195 0.09433
|
||||
2026 9 17 61300 0.2241 0.3183 0.09465
|
||||
2026 9 18 61301 0.2233 0.3170 0.09510
|
||||
2026 9 19 61302 0.2225 0.3158 0.09562
|
||||
2026 9 20 61303 0.2216 0.3146 0.09615
|
||||
2026 9 21 61304 0.2208 0.3134 0.09657
|
||||
2026 9 22 61305 0.2199 0.3122 0.09690
|
||||
2026 9 23 61306 0.2190 0.3110 0.09704
|
||||
2026 9 24 61307 0.2180 0.3099 0.09702
|
||||
2026 9 25 61308 0.2171 0.3087 0.09681
|
||||
2026 9 26 61309 0.2161 0.3076 0.09642
|
||||
2026 9 27 61310 0.2151 0.3065 0.09591
|
||||
2026 9 28 61311 0.2141 0.3054 0.09537
|
||||
2026 9 29 61312 0.2130 0.3043 0.09501
|
||||
2026 9 30 61313 0.2119 0.3032 0.09489
|
||||
2026 10 1 61314 0.2109 0.3022 0.09500
|
||||
2026 10 2 61315 0.2097 0.3011 0.09526
|
||||
2026 10 3 61316 0.2086 0.3001 0.09568
|
||||
2026 10 4 61317 0.2075 0.2991 0.09602
|
||||
2026 10 5 61318 0.2063 0.2981 0.09613
|
||||
2026 10 6 61319 0.2051 0.2971 0.09602
|
||||
2026 10 7 61320 0.2039 0.2962 0.09573
|
||||
2026 10 8 61321 0.2027 0.2952 0.09526
|
||||
2026 10 9 61322 0.2014 0.2943 0.09470
|
||||
2026 10 10 61323 0.2001 0.2934 0.09420
|
||||
2026 10 11 61324 0.1989 0.2925 0.09382
|
||||
2026 10 12 61325 0.1976 0.2917 0.09360
|
||||
2026 10 13 61326 0.1962 0.2908 0.09354
|
||||
2026 10 14 61327 0.1949 0.2900 0.09367
|
||||
2026 10 15 61328 0.1935 0.2892 0.09395
|
||||
2026 10 16 61329 0.1922 0.2884 0.09436
|
||||
2026 10 17 61330 0.1908 0.2876 0.09484
|
||||
2026 10 18 61331 0.1894 0.2869 0.09525
|
||||
2026 10 19 61332 0.1880 0.2862 0.09550
|
||||
2026 10 20 61333 0.1865 0.2855 0.09558
|
||||
2026 10 21 61334 0.1851 0.2848 0.09543
|
||||
2026 10 22 61335 0.1836 0.2841 0.09503
|
||||
2026 10 23 61336 0.1821 0.2835 0.09443
|
||||
2026 10 24 61337 0.1807 0.2829 0.09372
|
||||
2026 10 25 61338 0.1792 0.2823 0.09295
|
||||
2026 10 26 61339 0.1776 0.2817 0.09229
|
||||
2026 10 27 61340 0.1761 0.2812 0.09186
|
||||
2026 10 28 61341 0.1746 0.2807 0.09174
|
||||
2026 10 29 61342 0.1730 0.2802 0.09188
|
||||
2026 10 30 61343 0.1715 0.2797 0.09217
|
||||
2026 10 31 61344 0.1699 0.2792 0.09250
|
||||
2026 11 1 61345 0.1683 0.2788 0.09272
|
||||
2026 11 2 61346 0.1667 0.2784 0.09267
|
||||
2026 11 3 61347 0.1651 0.2780 0.09243
|
||||
2026 11 4 61348 0.1635 0.2777 0.09199
|
||||
2026 11 5 61349 0.1619 0.2773 0.09144
|
||||
2026 11 6 61350 0.1603 0.2770 0.09088
|
||||
2026 11 7 61351 0.1587 0.2767 0.09046
|
||||
2026 11 8 61352 0.1571 0.2765 0.09016
|
||||
2026 11 9 61353 0.1554 0.2763 0.09004
|
||||
2026 11 10 61354 0.1538 0.2760 0.09011
|
||||
2026 11 11 61355 0.1521 0.2759 0.09033
|
||||
2026 11 12 61356 0.1505 0.2757 0.09067
|
||||
2026 11 13 61357 0.1488 0.2756 0.09106
|
||||
2026 11 14 61358 0.1471 0.2755 0.09148
|
||||
2026 11 15 61359 0.1455 0.2754 0.09178
|
||||
2026 11 16 61360 0.1438 0.2753 0.09198
|
||||
2026 11 17 61361 0.1421 0.2753 0.09203
|
||||
2026 11 18 61362 0.1405 0.2753 0.09194
|
||||
2026 11 19 61363 0.1388 0.2753 0.09161
|
||||
2026 11 20 61364 0.1371 0.2754 0.09115
|
||||
2026 11 21 61365 0.1354 0.2755 0.09063
|
||||
2026 11 22 61366 0.1338 0.2756 0.09016
|
||||
2026 11 23 61367 0.1321 0.2757 0.08988
|
||||
2026 11 24 61368 0.1304 0.2759 0.08982
|
||||
2026 11 25 61369 0.1287 0.2760 0.09000
|
||||
2026 11 26 61370 0.1271 0.2762 0.09038
|
||||
2026 11 27 61371 0.1254 0.2765 0.09073
|
||||
2026 11 28 61372 0.1237 0.2767 0.09096
|
||||
2026 11 29 61373 0.1221 0.2770 0.09110
|
||||
2026 11 30 61374 0.1204 0.2773 0.09103
|
||||
2026 12 1 61375 0.1188 0.2777 0.09070
|
||||
2026 12 2 61376 0.1171 0.2780 0.09027
|
||||
2026 12 3 61377 0.1155 0.2784 0.08987
|
||||
2026 12 4 61378 0.1139 0.2788 0.08951
|
||||
2026 12 5 61379 0.1122 0.2793 0.08932
|
||||
2026 12 6 61380 0.1106 0.2797 0.08929
|
||||
2026 12 7 61381 0.1090 0.2802 0.08941
|
||||
2026 12 8 61382 0.1074 0.2807 0.08977
|
||||
2026 12 9 61383 0.1058 0.2813 0.09031
|
||||
2026 12 10 61384 0.1042 0.2819 0.09092
|
||||
2026 12 11 61385 0.1026 0.2824 0.09153
|
||||
2026 12 12 61386 0.1011 0.2831 0.09210
|
||||
2026 12 13 61387 0.0995 0.2837 0.09261
|
||||
2026 12 14 61388 0.0980 0.2844 0.09296
|
||||
2026 12 15 61389 0.0964 0.2851 0.09308
|
||||
2026 12 16 61390 0.0949 0.2858 0.09298
|
||||
2026 12 17 61391 0.0934 0.2865 0.09271
|
||||
2026 12 18 61392 0.0919 0.2873 0.09223
|
||||
2026 12 19 61393 0.0904 0.2881 0.09183
|
||||
2026 12 20 61394 0.0889 0.2889 0.09151
|
||||
2026 12 21 61395 0.0875 0.2897 0.09140
|
||||
2026 12 22 61396 0.0860 0.2906 0.09146
|
||||
2026 12 23 61397 0.0846 0.2914 0.09172
|
||||
2026 12 24 61398 0.0832 0.2923 0.09217
|
||||
2026 12 25 61399 0.0818 0.2933 0.09256
|
||||
2026 12 26 61400 0.0804 0.2942 0.09281
|
||||
2026 12 27 61401 0.0791 0.2952 0.09278
|
||||
2026 12 28 61402 0.0777 0.2962 0.09251
|
||||
2026 12 29 61403 0.0764 0.2972 0.09213
|
||||
2026 12 30 61404 0.0751 0.2982 0.09173
|
||||
2026 12 31 61405 0.0738 0.2993 0.09140
|
||||
2027 1 1 61406 0.0725 0.3004 0.09123
|
||||
2027 1 2 61407 0.0713 0.3015 0.09132
|
||||
2027 1 3 61408 0.0700 0.3026 0.09160
|
||||
2027 1 4 61409 0.0688 0.3037 0.09200
|
||||
2027 1 5 61410 0.0676 0.3049 0.09264
|
||||
2027 1 6 61411 0.0665 0.3061 0.09344
|
||||
2027 1 7 61412 0.0653 0.3072 0.09426
|
||||
2027 1 8 61413 0.0642 0.3085 0.09509
|
||||
These predictions are based on all announced leap seconds.
|
||||
|
||||
CELESTIAL POLE OFFSET SERIES:
|
||||
NEOS Celestial Pole Offset Series
|
||||
MJD dpsi error deps error
|
||||
(msec. of arc)
|
||||
60980 -117.40 1.27 -8.99 0.02
|
||||
60981 -117.55 1.03 -8.91 0.02
|
||||
60982 -117.70 1.03 -8.71 0.02
|
||||
60983 -117.84 0.94 -8.48 0.02
|
||||
60984 -117.83 0.96 -8.48 0.17
|
||||
60985 -117.46 0.96 -8.69 0.17
|
||||
60986 -116.89 0.96 -8.77 0.17
|
||||
60987 -116.60 0.98 -8.60 0.25
|
||||
60988 -116.74 1.14 -8.42 0.18
|
||||
60989 -116.95 1.14 -8.50 0.18
|
||||
60990 -116.87 1.25 -8.71 0.08
|
||||
61026 -114.45 1.33 -7.19 0.16
|
||||
61027 -114.43 1.33 -7.42 0.16
|
||||
61028 -114.48 1.33 -7.64 0.16
|
||||
61029 -114.51 1.19 -7.67 0.18
|
||||
61030 -114.39 1.19 -7.49 0.18
|
||||
61031 -114.09 1.24 -7.26 0.16
|
||||
61032 -113.74 1.35 -7.13 0.06
|
||||
61033 -113.52 1.35 -7.11 0.06
|
||||
|
||||
IERS Celestial Pole Offset Final Series
|
||||
MJD dpsi deps
|
||||
(msec. of arc)
|
||||
60981 -117.6 -9.0
|
||||
60982 -117.8 -8.8
|
||||
60983 -118.0 -8.6
|
||||
60984 -117.8 -8.6
|
||||
60985 -117.5 -8.8
|
||||
60986 -117.1 -8.9
|
||||
60987 -116.8 -8.7
|
||||
60988 -116.9 -8.5
|
||||
60989 -117.0 -8.6
|
||||
60990 -116.9 -8.8
|
||||
60991 -116.6 -8.8
|
||||
60992 -116.5 -8.5
|
||||
60993 -116.5 -8.0
|
||||
60994 -116.6 -7.7
|
||||
60995 -116.6 -7.6
|
||||
60996 -116.4 -7.5
|
||||
60997 -116.1 -7.5
|
||||
60998 -115.6 -7.8
|
||||
60999 -115.5 -8.3
|
||||
61000 -115.9 -8.6
|
||||
61001 -116.0 -8.6
|
||||
61002 -115.9 -8.5
|
||||
61003 -115.7 -8.3
|
||||
61004 -115.4 -8.2
|
||||
61005 -115.1 -8.2
|
||||
61006 -114.7 -8.1
|
||||
61007 -114.4 -7.9
|
||||
61008 -114.3 -7.9
|
||||
61009 -114.6 -7.8
|
||||
61010 -115.2 -7.6
|
||||
|
||||
IAU2000A Celestial Pole Offset Series
|
||||
MJD dX error dY error
|
||||
(msec. of arc)
|
||||
60980 0.437 0.504 0.035 0.022
|
||||
60981 0.432 0.411 0.041 0.021
|
||||
60982 0.426 0.411 0.047 0.021
|
||||
60983 0.422 0.373 0.053 0.020
|
||||
60984 0.420 0.382 0.057 0.173
|
||||
60985 0.421 0.382 0.060 0.173
|
||||
60986 0.426 0.382 0.059 0.173
|
||||
60987 0.433 0.391 0.052 0.248
|
||||
60988 0.443 0.453 0.040 0.184
|
||||
60989 0.454 0.453 0.025 0.184
|
||||
60990 0.466 0.495 0.008 0.082
|
||||
61026 0.512 0.531 -0.092 0.161
|
||||
61027 0.519 0.531 -0.101 0.161
|
||||
61028 0.523 0.531 -0.107 0.161
|
||||
61029 0.527 0.474 -0.112 0.176
|
||||
61030 0.530 0.474 -0.114 0.176
|
||||
61031 0.533 0.494 -0.114 0.156
|
||||
61032 0.536 0.536 -0.113 0.059
|
||||
61033 0.539 0.536 -0.111 0.059
|
||||
|
||||
|
||||
IAU2000A Celestial Pole Offset Final Series
|
||||
MJD dX dY
|
||||
(msec. of arc)
|
||||
60981 0.40 0.03
|
||||
60982 0.38 0.02
|
||||
60983 0.37 0.00
|
||||
60984 0.42 -0.05
|
||||
60985 0.41 -0.05
|
||||
60986 0.34 -0.00
|
||||
60987 0.33 0.01
|
||||
60988 0.36 -0.01
|
||||
60989 0.41 -0.04
|
||||
60990 0.46 -0.06
|
||||
60991 0.45 -0.05
|
||||
60992 0.42 -0.02
|
||||
60993 0.39 0.01
|
||||
60994 0.33 0.07
|
||||
60995 0.29 0.12
|
||||
60996 0.30 0.14
|
||||
60997 0.38 0.10
|
||||
60998 0.59 -0.02
|
||||
60999 0.62 -0.11
|
||||
61000 0.51 -0.14
|
||||
61001 0.41 -0.14
|
||||
61002 0.35 -0.10
|
||||
61003 0.32 -0.06
|
||||
61004 0.33 -0.03
|
||||
61005 0.38 -0.07
|
||||
61006 0.47 -0.10
|
||||
61007 0.57 -0.11
|
||||
61008 0.57 -0.10
|
||||
61009 0.48 -0.08
|
||||
61010 0.35 -0.06
|
||||
|
||||
)--";
|
||||
|
||||
|
||||
369
mcc/mcc_coord.h
369
mcc/mcc_coord.h
@ -1,5 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include "mcc_angle.h"
|
||||
#include "mcc_ccte_iers.h"
|
||||
#include "mcc_defaults.h"
|
||||
#include "mcc_generics.h"
|
||||
|
||||
@ -42,7 +43,7 @@ public:
|
||||
? MccCoordPairKind::COORDS_KIND_AZZD
|
||||
// apparent AZ and ALT
|
||||
: (std::same_as<CO_LON_T, MccAngleAZ> && std::same_as<CO_LAT_T, MccAngleALT>)
|
||||
? MccCoordPairKind::COORDS_KIND_AZZD
|
||||
? MccCoordPairKind::COORDS_KIND_AZALT
|
||||
// general purpose X and Y
|
||||
: (std::same_as<CO_LON_T, MccAngleX> && std::same_as<CO_LAT_T, MccAngleY>)
|
||||
? MccCoordPairKind::COORDS_KIND_XY
|
||||
@ -52,7 +53,7 @@ public:
|
||||
: MccCoordPairKind::COORDS_KIND_UNKNOWN;
|
||||
|
||||
template <mcc_coord_epoch_c EpT = MccCelestialCoordEpoch>
|
||||
MccCoordPair(CO_LON_T const& x, CO_LAT_T const& y, EpT const& epoch = EpT::now()) : _x(x), _y(y), _mjd(epoch.MJD)
|
||||
MccCoordPair(CO_LON_T const& x, CO_LAT_T const& y, EpT const& epoch = EpT::now()) : _x(x), _y(y), _epoch(epoch)
|
||||
{
|
||||
}
|
||||
|
||||
@ -74,16 +75,22 @@ public:
|
||||
return _y;
|
||||
}
|
||||
|
||||
MccCelestialCoordEpoch epoch() const
|
||||
{
|
||||
return _epoch;
|
||||
}
|
||||
|
||||
|
||||
double MJD() const
|
||||
{
|
||||
return _mjd;
|
||||
return _epoch.MJD();
|
||||
}
|
||||
|
||||
// for something like:
|
||||
// auto [ra, dec, mjd] = coord_pair;
|
||||
operator std::tuple<CO_LON_T, CO_LAT_T, double>() const
|
||||
// auto [ra, dec, epoch] = coord_pair;
|
||||
operator std::tuple<CO_LON_T, CO_LAT_T, MccCelestialCoordEpoch>() const
|
||||
{
|
||||
return {_x, _y, _mjd};
|
||||
return {_x, _y, _epoch};
|
||||
}
|
||||
|
||||
void setX(const CO_LON_T& x)
|
||||
@ -96,16 +103,16 @@ public:
|
||||
_y = y;
|
||||
}
|
||||
|
||||
void setMJD(double mjd)
|
||||
void setEpoch(mcc_coord_epoch_c auto const& ep)
|
||||
{
|
||||
_mjd = mjd;
|
||||
_epoch = ep;
|
||||
}
|
||||
|
||||
protected:
|
||||
CO_LON_T _x;
|
||||
CO_LAT_T _y;
|
||||
|
||||
double _mjd;
|
||||
MccCelestialCoordEpoch _epoch;
|
||||
};
|
||||
|
||||
|
||||
@ -128,7 +135,7 @@ public:
|
||||
template <typename CxT, typename CyT, mcc_coord_epoch_c EpT = MccCelestialCoordEpoch>
|
||||
requires(std::is_arithmetic_v<CxT> && std::is_arithmetic_v<CyT>)
|
||||
MccNamedCoordPair(CxT const& x, CyT const& y, EpT const& epoch = EpT::now())
|
||||
: MccCoordPair<CO_LON_T, CO_LAT_T>(CO_LON_T{x}, CO_LAT_T{y}, epoch)
|
||||
: MccCoordPair<CO_LON_T, CO_LAT_T>(CO_LON_T{(double)x}, CO_LAT_T{(double)y}, epoch)
|
||||
{
|
||||
}
|
||||
|
||||
@ -148,15 +155,62 @@ public:
|
||||
virtual ~MccNamedCoordPair() = default;
|
||||
};
|
||||
|
||||
using MccSkyRADEC_ICRS = MccNamedCoordPair<MccAngleRA_ICRS, MccAngleDEC_ICRS>;
|
||||
using MccSkyRADEC_APP = MccNamedCoordPair<MccAngleRA_APP, MccAngleDEC_APP>;
|
||||
using MccSkyRADEC_OBS = MccNamedCoordPair<MccAngleRA_OBS, MccAngleDEC_OBS>;
|
||||
using MccSkyHADEC_APP = MccNamedCoordPair<MccAngleHA_APP, MccAngleDEC_APP>;
|
||||
using MccSkyHADEC_OBS = MccNamedCoordPair<MccAngleHA_OBS, MccAngleDEC_OBS>;
|
||||
using MccSkyAZZD = MccNamedCoordPair<MccAngleAZ, MccAngleZD>;
|
||||
using MccSkyAZALT = MccNamedCoordPair<MccAngleAZ, MccAngleALT>;
|
||||
using MccGenXY = MccNamedCoordPair<MccAngleX, MccAngleY>;
|
||||
using MccGeoLONLAT = MccNamedCoordPair<MccAngleLON, MccAngleLAT>;
|
||||
struct MccSkyRADEC_ICRS : MccNamedCoordPair<MccAngleRA_ICRS, MccAngleDEC_ICRS> {
|
||||
template <typename CxT, typename CyT>
|
||||
requires(std::is_arithmetic_v<CxT> && std::is_arithmetic_v<CyT>)
|
||||
MccSkyRADEC_ICRS(CxT const& x, CyT const& y)
|
||||
: MccNamedCoordPair<MccAngleRA_ICRS, MccAngleDEC_ICRS>(x, y, MccCelestialCoordEpoch{})
|
||||
{
|
||||
}
|
||||
|
||||
MccSkyRADEC_ICRS(MccAngle const& x, MccAngle const& y) : MccSkyRADEC_ICRS((double)x, (double)y) {}
|
||||
|
||||
// ignore epoch setting (it is always J2000.0)
|
||||
void setEpoch(mcc_coord_epoch_c auto const& ep)
|
||||
{
|
||||
static_assert(false, "CANNOT SET EPOCH FOR ICRS-KIND COORDINATE PAIR!!!");
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
struct MccSkyRADEC_APP : MccNamedCoordPair<MccAngleRA_APP, MccAngleDEC_APP> {
|
||||
using MccNamedCoordPair<MccAngleRA_APP, MccAngleDEC_APP>::MccNamedCoordPair;
|
||||
};
|
||||
|
||||
|
||||
struct MccSkyRADEC_OBS : MccNamedCoordPair<MccAngleRA_OBS, MccAngleDEC_OBS> {
|
||||
using MccNamedCoordPair<MccAngleRA_OBS, MccAngleDEC_OBS>::MccNamedCoordPair;
|
||||
};
|
||||
|
||||
|
||||
struct MccSkyHADEC_APP : MccNamedCoordPair<MccAngleHA_APP, MccAngleDEC_APP> {
|
||||
using MccNamedCoordPair<MccAngleHA_APP, MccAngleDEC_APP>::MccNamedCoordPair;
|
||||
};
|
||||
|
||||
|
||||
struct MccSkyHADEC_OBS : MccNamedCoordPair<MccAngleHA_OBS, MccAngleDEC_OBS> {
|
||||
using MccNamedCoordPair<MccAngleHA_OBS, MccAngleDEC_OBS>::MccNamedCoordPair;
|
||||
};
|
||||
|
||||
|
||||
struct MccSkyAZZD : MccNamedCoordPair<MccAngleAZ, MccAngleZD> {
|
||||
using MccNamedCoordPair<MccAngleAZ, MccAngleZD>::MccNamedCoordPair;
|
||||
};
|
||||
|
||||
|
||||
struct MccSkyAZALT : MccNamedCoordPair<MccAngleAZ, MccAngleALT> {
|
||||
using MccNamedCoordPair<MccAngleAZ, MccAngleALT>::MccNamedCoordPair;
|
||||
};
|
||||
|
||||
|
||||
struct MccGenXY : MccNamedCoordPair<MccAngleX, MccAngleY> {
|
||||
using MccNamedCoordPair<MccAngleX, MccAngleY>::MccNamedCoordPair;
|
||||
};
|
||||
|
||||
|
||||
struct MccGeoLONLAT : MccNamedCoordPair<MccAngleLON, MccAngleLAT> {
|
||||
using MccNamedCoordPair<MccAngleLON, MccAngleLAT>::MccNamedCoordPair;
|
||||
};
|
||||
|
||||
|
||||
struct mcc_skypoint_interface_t {
|
||||
@ -211,69 +265,31 @@ concept mcc_skypoint_c = std::derived_from<T, mcc_skypoint_interface_t> && requi
|
||||
/* MCC-LIBRARY DEFAULT SKY POINT CLASS IMPLEMENTATION BASED ON ERFA-LIBRARY */
|
||||
|
||||
|
||||
class MccSkyPoint : public mcc_skypoint_interface_t
|
||||
template <typename CCTE_T>
|
||||
class MccGenericSkyPoint : public mcc_skypoint_interface_t
|
||||
{
|
||||
public:
|
||||
typedef CCTE_T ccte_t;
|
||||
|
||||
static constexpr double MJD0 = 2400000.5;
|
||||
|
||||
struct meteo_t {
|
||||
double temperature; // Temperature in C
|
||||
double humidity; // humidity in % ([0.0, 1.0])
|
||||
double pressure; // atmospheric presure in hPa=mB
|
||||
};
|
||||
inline static CCTE_T cctEngine{}; // celestial coordinates transformation engine
|
||||
|
||||
static ccte::iers::MccLeapSeconds iersLeapSeconds()
|
||||
{
|
||||
return _leapSeconds;
|
||||
}
|
||||
|
||||
static bool updateLeapSeconds(traits::mcc_input_char_range auto const& filename)
|
||||
{
|
||||
std::lock_guard lock{_leapSecondsMutex};
|
||||
|
||||
return _leapSeconds.load(filename);
|
||||
};
|
||||
|
||||
static bool updateIersBulletinA(traits::mcc_input_char_range auto const& filename)
|
||||
{
|
||||
std::lock_guard lock{_bulletinAMutex};
|
||||
|
||||
return _bulletinA.load(filename);
|
||||
};
|
||||
|
||||
static ccte::iers::MccIersBulletinA iersBulletinA()
|
||||
{
|
||||
return _bulletinA;
|
||||
}
|
||||
|
||||
static void setMeteo(meteo_t meteo)
|
||||
{
|
||||
std::lock_guard lock{_meteoMutex};
|
||||
|
||||
_currentMeteo = std::move(meteo);
|
||||
}
|
||||
|
||||
static meteo_t getMeteo()
|
||||
{
|
||||
return _currentMeteo;
|
||||
}
|
||||
|
||||
|
||||
MccSkyPoint() {}
|
||||
MccGenericSkyPoint() {}
|
||||
|
||||
template <mcc_coord_pair_c PT>
|
||||
MccSkyPoint(const PT& coord_pair) : MccSkyPoint()
|
||||
MccGenericSkyPoint(const PT& coord_pair) : MccGenericSkyPoint()
|
||||
{
|
||||
auto self = from(coord_pair);
|
||||
}
|
||||
|
||||
MccSkyPoint(const MccSkyPoint&) = default;
|
||||
MccSkyPoint(MccSkyPoint&&) = default;
|
||||
MccGenericSkyPoint(const MccGenericSkyPoint&) = default;
|
||||
MccGenericSkyPoint(MccGenericSkyPoint&&) = default;
|
||||
|
||||
MccSkyPoint& operator=(const MccSkyPoint&) = default;
|
||||
MccSkyPoint& operator=(MccSkyPoint&&) = default;
|
||||
MccGenericSkyPoint& operator=(const MccGenericSkyPoint&) = default;
|
||||
MccGenericSkyPoint& operator=(MccGenericSkyPoint&&) = default;
|
||||
|
||||
virtual ~MccSkyPoint() = default;
|
||||
virtual ~MccGenericSkyPoint() = default;
|
||||
|
||||
MccCelestialCoordEpoch epoch() const
|
||||
{
|
||||
@ -281,7 +297,7 @@ public:
|
||||
}
|
||||
|
||||
template <mcc_coord_pair_c PT>
|
||||
MccSkyPoint& from(const PT& coord_pair)
|
||||
MccGenericSkyPoint& from(const PT& coord_pair)
|
||||
{
|
||||
_x = coord_pair.x();
|
||||
_y = coord_pair.y();
|
||||
@ -293,9 +309,11 @@ public:
|
||||
} else {
|
||||
_epoch.fromMJD(coord_pair.MJD());
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
MccSkyPoint& operator=(mcc_coord_pair_c auto const& coord_pair)
|
||||
MccGenericSkyPoint& operator=(mcc_coord_pair_c auto const& coord_pair)
|
||||
{
|
||||
return from(coord_pair);
|
||||
}
|
||||
@ -312,18 +330,6 @@ public:
|
||||
}
|
||||
|
||||
protected:
|
||||
// IERS related static members
|
||||
static inline ccte::iers::MccLeapSeconds _leapSeconds{};
|
||||
static inline ccte::iers::MccIersBulletinA _bulletinA{};
|
||||
|
||||
static inline std::mutex _leapSecondsMutex{}, _bulletinAMutex{};
|
||||
|
||||
// meteo related static members
|
||||
|
||||
static inline meteo_t _currentMeteo{.temperature = 10.0, .humidity = 0.5, .pressure = 1010.0};
|
||||
static inline std::mutex _meteoMutex{};
|
||||
|
||||
|
||||
double _x{0.0}, _y{0.0};
|
||||
MccCoordPairKind _pairKind{MccCoordPairKind::COORDS_KIND_RADEC_ICRS};
|
||||
MccCelestialCoordEpoch _epoch{}; // J2000.0
|
||||
@ -331,10 +337,6 @@ protected:
|
||||
template <mcc_coord_pair_c PT>
|
||||
auto toHelper(PT& cpair)
|
||||
{
|
||||
if (this == &cpair) {
|
||||
return;
|
||||
}
|
||||
|
||||
static constexpr double half_pi = std::numbers::pi / 2.0;
|
||||
|
||||
// HA, DEC to AZ, ALT (AZ from the South through the West)
|
||||
@ -385,27 +387,62 @@ protected:
|
||||
dec = std::atan2(z, r);
|
||||
};
|
||||
|
||||
double phi;
|
||||
typename CCTE_T::error_t ccte_err;
|
||||
|
||||
double phi = cctEngine.getStateERFA().lat;
|
||||
double ra_icrs, dec_icrs, ra, dec, ha, az, zd, alt, lst, eo;
|
||||
|
||||
static_assert(PT::pairKind == MccCoordPairKind::COORDS_KIND_GENERIC, "UNSUPPORTED SKY POINT TRANSFORMATION!");
|
||||
static_assert(PT::pairKind == MccCoordPairKind::COORDS_KIND_UNKNOWN, "UNSUPPORTED SKY POINT TRANSFORMATION!");
|
||||
static_assert(PT::pairKind != MccCoordPairKind::COORDS_KIND_GENERIC, "UNSUPPORTED SKY POINT TRANSFORMATION!");
|
||||
static_assert(PT::pairKind != MccCoordPairKind::COORDS_KIND_UNKNOWN, "UNSUPPORTED SKY POINT TRANSFORMATION!");
|
||||
|
||||
// from ICRS to ICRS - just copy and exit
|
||||
if (_pairKind == MccCoordPairKind::COORDS_KIND_RADEC_ICRS &&
|
||||
PT::pairKind == MccCoordPairKind::COORDS_KIND_RADEC_ICRS) {
|
||||
cpair = PT(PT::x_t(_x), PT::y_t(_y), _epoch);
|
||||
return;
|
||||
|
||||
if (_pairKind == MccCoordPairKind::COORDS_KIND_RADEC_ICRS) {
|
||||
if constexpr (PT::pairKind ==
|
||||
MccCoordPairKind::COORDS_KIND_RADEC_ICRS) { // from ICRS to ICRS - just copy and exit
|
||||
cpair = PT(typename PT::x_t(_x), typename PT::y_t(_y));
|
||||
|
||||
return;
|
||||
} else { // from ICRS to apparent or observed
|
||||
if constexpr (mccIsAppCoordPairKind<PT::pairKind>) {
|
||||
ccte_err = cctEngine.icrsToApp(_x, _y, cpair.epoch(), &ra, &dec, &ha, &az, &zd);
|
||||
} else if constexpr (mccIsObsCoordPairKind<PT::pairKind>) {
|
||||
ccte_err = cctEngine.icrsToObs(_x, _y, cpair.epoch(), &ra, &dec, &ha, &az, &zd);
|
||||
} else {
|
||||
static_assert(true, "UNSUPPORTED SKY POINT TRANSFORMATION!");
|
||||
}
|
||||
|
||||
if constexpr (PT::pairKind == MccCoordPairKind::COORDS_KIND_RADEC_APP ||
|
||||
PT::pairKind == MccCoordPairKind::COORDS_KIND_RADEC_OBS) {
|
||||
cpair.setX(ra);
|
||||
cpair.setY(dec);
|
||||
} else if constexpr (PT::pairKind == MccCoordPairKind::COORDS_KIND_HADEC_APP ||
|
||||
PT::pairKind == MccCoordPairKind::COORDS_KIND_HADEC_OBS) {
|
||||
cpair.setX(ha);
|
||||
cpair.setY(dec);
|
||||
} else if constexpr (PT::pairKind == MccCoordPairKind::COORDS_KIND_AZZD) {
|
||||
cpair.setX(az);
|
||||
cpair.setY(zd);
|
||||
} else if constexpr (PT::pairKind == MccCoordPairKind::COORDS_KIND_AZALT) {
|
||||
cpair.setX(az);
|
||||
cpair.setY(half_pi - zd);
|
||||
} else {
|
||||
static_assert(true, "UNSUPPORTED SKY POINT TRANSFORMATION!");
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// just copy coordinates and exit
|
||||
if (_pairKind == PT::pairKind && utils::isEqual(_epoch.MJD(), cpair.MJD())) {
|
||||
cpair = PT(PT::x_t(_x), PT::y_t(_y), _epoch);
|
||||
// cpair = PT(typename PT::x_t(_x), typename PT::y_t(_y), _epoch);
|
||||
cpair.setX(_x);
|
||||
cpair.setY(_y);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// if epochs is not the same then
|
||||
// if epochs are not the same then
|
||||
// 1) convert stored coordinates to ICRS ones
|
||||
// 2) convert from the computed ICRS coordinates to required ones
|
||||
MccCoordPairKind pkind = _pairKind;
|
||||
@ -413,16 +450,17 @@ protected:
|
||||
if (_pairKind != MccCoordPairKind::COORDS_KIND_RADEC_ICRS) {
|
||||
pkind = MccCoordPairKind::COORDS_KIND_RADEC_ICRS;
|
||||
|
||||
// cct_engine.appToICRS(app_type, app_x, app_y, ra_icrs, dec_icrs)
|
||||
// cct_engine.obsToICRS(obs_type, obs_x, obs_y, ra_icrs, dec_icrs)
|
||||
|
||||
if (mcc_is_obs_coordpair(_pairKind)) {
|
||||
// cct_engine.obsToICRS(...)
|
||||
ccte_err = cctEngine.obsToICRS(_pairKind, _epoch, _x, _y, &ra_icrs, &dec_icrs);
|
||||
} else if (mcc_is_app_coordpair(_pairKind)) {
|
||||
// cct_engine.appToICRS(...)
|
||||
ccte_err = cctEngine.appToICRS(_pairKind, _epoch, _x, _y, &ra_icrs, &dec_icrs);
|
||||
} else { // unsupported transformation!!!
|
||||
return;
|
||||
}
|
||||
|
||||
if (ccte_err) {
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
ra_icrs = _x;
|
||||
dec_icrs = _y;
|
||||
@ -432,119 +470,14 @@ protected:
|
||||
// here, from APP or OBS to ICRS and exit
|
||||
if (pkind == MccCoordPairKind::COORDS_KIND_RADEC_ICRS &&
|
||||
PT::pairKind == MccCoordPairKind::COORDS_KIND_RADEC_ICRS) {
|
||||
cpair = PT(PT::x_t(ra_icrs), PT::y_t(dec_icrs), MccCelestialCoordEpoch{});
|
||||
cpair = PT(typename PT::x_t(ra_icrs), typename PT::y_t(dec_icrs));
|
||||
return;
|
||||
}
|
||||
|
||||
// here, the input coordinates and stored one are at the same epoch
|
||||
if (pkind == MccCoordPairKind::COORDS_KIND_RADEC_ICRS) {
|
||||
// cct_engine.icrsToObs(ra_icrs, dec_icrs, jd, ra_obs, dec_obs, ha, az, zd)
|
||||
// cct_engine.icrsToApp(ra_icrs, dec_icrs, jd, ra_app, dec_app, ha)
|
||||
|
||||
if constexpr (mccIsObsCoordPairKind<PT::pairKind>) {
|
||||
// cct_engine.icrsToObs(...)
|
||||
} else if constexpr (mccIsAppCoordPairKind<PT::pairKind>) {
|
||||
// cct_engine.icrsToApp(...)
|
||||
} else {
|
||||
static_assert(false, "UNSUPPORTED SKY POINT TRANSFORMATION!");
|
||||
}
|
||||
|
||||
|
||||
if constexpr (PT::pairKind == MccCoordPairKind::COORDS_KIND_RADEC_APP) {
|
||||
// cct_engine.icrsToApp(...)
|
||||
cpair.setX(ra);
|
||||
cpair.setY(dec);
|
||||
} else if constexpr (PT::pairKind == MccCoordPairKind::COORDS_KIND_RADEC_OBS) {
|
||||
// cct_engine.icrsToObs(...)
|
||||
} else if constexpr (PT::pairKind == MccCoordPairKind::COORDS_KIND_HADEC_APP) {
|
||||
// cct_engine.icrsToApp(...)
|
||||
cpair.setX(ha);
|
||||
cpair.setY(dec);
|
||||
} else if constexpr (PT::pairKind == MccCoordPairKind::COORDS_KIND_HADEC_OBS) {
|
||||
// cct_engine.icrsToObs(...)
|
||||
} else if constexpr (PT::pairKind == MccCoordPairKind::COORDS_KIND_AZZD) {
|
||||
// cct_engine.icrsToObs(...)
|
||||
cpair.setX(az);
|
||||
cpair.setY(zd);
|
||||
} else if constexpr (PT::pairKind == MccCoordPairKind::COORDS_KIND_AZALT) {
|
||||
// cct_engine.icrsToObs(...)
|
||||
cpair.setX(az);
|
||||
cpair.setY(half_pi - zd);
|
||||
} else {
|
||||
static_assert(false, "UNSUPPORTED SKY POINT TRANSFORMATION!");
|
||||
}
|
||||
} else if (pkind == MccCoordPairKind::COORDS_KIND_RADEC_APP) {
|
||||
// compute EO, LST, refract model
|
||||
ha = lst + eo - cpair.x(); // from CIO based RA
|
||||
|
||||
if constexpr (PT::pairKind != MccCoordPairKind::COORDS_KIND_HADEC_APP) {
|
||||
hadec2azalt(ha, _y, phi, az, alt); // to app az, alt
|
||||
// to observed zenithal distance: alt += z_corr
|
||||
}
|
||||
|
||||
if constexpr (PT::pairKind == MccCoordPairKind::COORDS_KIND_RADEC_OBS) {
|
||||
azalt2hadec(az, alt, phi, ha, dec); // to obs ha, dec
|
||||
|
||||
ra = lst + eo - ha; // CIO based RA
|
||||
cpair.setX(ra);
|
||||
cpair.setY(dec);
|
||||
|
||||
} else if constexpr (PT::pairKind == MccCoordPairKind::COORDS_KIND_HADEC_APP) {
|
||||
cpair.setX(ha);
|
||||
|
||||
} else if constexpr (PT::pairKind == MccCoordPairKind::COORDS_KIND_HADEC_OBS) {
|
||||
azalt2hadec(az, alt, phi, ha, dec); // to obs ha, dec
|
||||
cpair.setX(ha);
|
||||
cpair.setY(dec);
|
||||
|
||||
} else if constexpr (PT::pairKind == MccCoordPairKind::COORDS_KIND_AZZD) {
|
||||
cpair.setX(az); // ????????????!!!!!!!!!
|
||||
cpair.setY(half_pi - alt);
|
||||
|
||||
} else if constexpr (PT::pairKind == MccCoordPairKind::COORDS_KIND_AZALT) {
|
||||
cpair.setX(az); // ????????????!!!!!!!!!
|
||||
cpair.setY(alt);
|
||||
} else {
|
||||
static_assert(false, "UNSUPPORTED SKY POINT TRANSFORMATION!");
|
||||
}
|
||||
} else if (pkind == MccCoordPairKind::COORDS_KIND_RADEC_OBS) {
|
||||
ha = lst + eo - cpair.x(); // from CIO based RA
|
||||
|
||||
if constexpr (PT::pairKind == MccCoordPairKind::COORDS_KIND_RADEC_APP) {
|
||||
hadec2azalt(ha, _y, phi, az, alt);
|
||||
// to apparent zenithal distance: alt -= z_corr;
|
||||
azalt2hadec(az, alt, phi, ha, dec); // to app ha,dec
|
||||
|
||||
ra = lst + eo - ha; // CIO based RA
|
||||
cpair.setX(ra);
|
||||
cpair.setY(dec);
|
||||
|
||||
} else if constexpr (PT::pairKind == MccCoordPairKind::COORDS_KIND_HADEC_APP) {
|
||||
hadec2azalt(ha, _y, phi, az, alt);
|
||||
// to apparent zenithal distance: alt -= z_corr;
|
||||
azalt2hadec(az, alt, phi, ha, dec); // to app ha,dec
|
||||
|
||||
cpair.setX(ha);
|
||||
cpair.setY(dec);
|
||||
|
||||
} else if constexpr (PT::pairKind == MccCoordPairKind::COORDS_KIND_HADEC_OBS) {
|
||||
cpair.setX(ha);
|
||||
} else if constexpr (PT::pairKind == MccCoordPairKind::COORDS_KIND_AZZD) {
|
||||
hadec2azalt(ha, _y, phi, az, alt);
|
||||
cpair.setX(az);
|
||||
cpair.setY(half_pi - alt);
|
||||
} else if constexpr (PT::pairKind == MccCoordPairKind::COORDS_KIND_AZALT) {
|
||||
hadec2azalt(ha, _y, phi, az, alt);
|
||||
cpair.setX(az);
|
||||
cpair.setY(alt);
|
||||
} else {
|
||||
static_assert(false, "UNSUPPORTED SKY POINT TRANSFORMATION!");
|
||||
}
|
||||
} else if (pkind == MccCoordPairKind::COORDS_KIND_HADEC_APP) {
|
||||
} else if (pkind == MccCoordPairKind::COORDS_KIND_HADEC_OBS) {
|
||||
} else if (pkind == MccCoordPairKind::COORDS_KIND_AZZD) {
|
||||
} else if (pkind == MccCoordPairKind::COORDS_KIND_AZALT) {
|
||||
} else { // unsupported transformation!!!
|
||||
ccte_err = cctEngine.equationOrigins(cpair.MJD(), &eo);
|
||||
if (ccte_err) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -561,11 +494,15 @@ protected:
|
||||
} else if (pkind == MccCoordPairKind::COORDS_KIND_AZALT) {
|
||||
az = _x;
|
||||
alt = _y;
|
||||
} else if (pkind == MccCoordPairKind::COORDS_KIND_RADEC_ICRS) {
|
||||
ra_icrs = _x;
|
||||
dec_icrs = _y;
|
||||
} else { // unsupported transformation!!!
|
||||
return;
|
||||
}
|
||||
|
||||
auto comp_func = [&, this](this auto& self, MccCoordPairKind cp_kind) {
|
||||
// coordinate transformation lambda (possibly recursive!!!)
|
||||
auto comp_func = [&, this](this auto&& self, MccCoordPairKind cp_kind) -> void {
|
||||
if (cp_kind == MccCoordPairKind::COORDS_KIND_AZALT) {
|
||||
if constexpr (PT::pairKind == MccCoordPairKind::COORDS_KIND_AZZD) {
|
||||
zd = half_pi - alt;
|
||||
@ -574,6 +511,9 @@ protected:
|
||||
} else {
|
||||
if constexpr (mccIsAppCoordPairKind<PT::pairKind>) {
|
||||
// correct for refraction: alt -= dz_refr
|
||||
double dZ;
|
||||
ccte_err = cctEngine.refractionCorrection(half_pi - alt, &dZ);
|
||||
alt -= dZ;
|
||||
}
|
||||
|
||||
azalt2hadec(az, alt, phi, ha, dec);
|
||||
@ -629,6 +569,9 @@ protected:
|
||||
hadec2azalt(ha, dec, phi, az, alt);
|
||||
if constexpr (mccIsObsCoordPairKind<PT::pairKind>) { // RADEC_OBS, HADEC_OBS, AZALT, AZZD
|
||||
// correct for refraction: alt += dz_refr
|
||||
double dZ;
|
||||
ccte_err = cctEngine.refractionReverseCorrection(half_pi - alt, &dZ);
|
||||
alt += dZ;
|
||||
self(MccCoordPairKind::COORDS_KIND_AZALT);
|
||||
}
|
||||
}
|
||||
@ -650,6 +593,8 @@ protected:
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
comp_func(pkind); // ran transformation
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -98,6 +98,52 @@ public:
|
||||
|
||||
MccCelestialCoordEpoch() : _UTC(J2000_UTC), _MJD(J2000_MJD), _JEpoch(2000.0) {}
|
||||
|
||||
MccCelestialCoordEpoch(const MccCelestialCoordEpoch&) = default;
|
||||
MccCelestialCoordEpoch(MccCelestialCoordEpoch&&) = default;
|
||||
|
||||
MccCelestialCoordEpoch& operator=(const MccCelestialCoordEpoch&) = default;
|
||||
MccCelestialCoordEpoch& operator=(MccCelestialCoordEpoch&&) = default;
|
||||
|
||||
MccCelestialCoordEpoch(mcc_coord_epoch_c auto&& other) : MccCelestialCoordEpoch()
|
||||
{
|
||||
fromTimePoint(std::forward<decltype(other)>(other).UTC());
|
||||
}
|
||||
|
||||
MccCelestialCoordEpoch& operator=(mcc_coord_epoch_c auto&& other)
|
||||
{
|
||||
fromTimePoint(std::forward<decltype(other)>(other).UTC());
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
MccCelestialCoordEpoch& operator=(traits::mcc_input_char_range auto&& str)
|
||||
{
|
||||
// ignore possible errors!!!
|
||||
auto ok = fromCharRange(std::forward<decltype(str)>(str));
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
template <typename ClockT, typename DurT>
|
||||
MccCelestialCoordEpoch& operator=(std::chrono::time_point<ClockT, DurT>&& tp)
|
||||
{
|
||||
// ignore possible errors!!!
|
||||
auto ok = fromTimePoint(std::forward<decltype(tp)>(tp));
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
template <typename VT>
|
||||
MccCelestialCoordEpoch& operator=(VT&& mjd)
|
||||
requires std::is_arithmetic_v<VT>
|
||||
{
|
||||
// ignore possible errors!!!
|
||||
auto ok = fromMJD(std::forward<decltype(mjd)>(mjd));
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
template <traits::mcc_input_char_range IR>
|
||||
bool fromCharRange(IR&& str)
|
||||
{
|
||||
|
||||
@ -142,7 +142,8 @@ static constexpr void mcc_tp2tp(const T1& from_tp1, T2& to_tp)
|
||||
/* JULIAN DAY CLASS CONCEPT */
|
||||
|
||||
template <typename T>
|
||||
concept mcc_julday_c = mcc_fp_type_like_c<T> && requires(const T v) {
|
||||
concept mcc_julday_c = mcc_fp_type_like_c<T> || requires(const T v) {
|
||||
// concept mcc_julday_c = mcc_fp_type_like_c<T> && requires(const T v) {
|
||||
// modified Julian Day
|
||||
{ v.MJD() } -> std::convertible_to<double>;
|
||||
// comparison operators
|
||||
|
||||
@ -244,6 +244,10 @@ static R rad2sxg(double ang, bool hms = false, int prec = 2)
|
||||
term *= 10.0;
|
||||
}
|
||||
|
||||
// round to given precision of arcseconds/seconds
|
||||
degs = std::round(degs * 3600.0 * term) / term / 3600.0;
|
||||
|
||||
|
||||
auto d = std::trunc(degs);
|
||||
auto s = (degs - d) * 60.0;
|
||||
auto m = std::trunc(s);
|
||||
@ -261,7 +265,9 @@ static R rad2sxg(double ang, bool hms = false, int prec = 2)
|
||||
}
|
||||
|
||||
if (ang < 0) {
|
||||
std::ranges::copy(std::string_view("-"), std::back_inserter(res));
|
||||
if (!isEqual(d, 0.0) || !isEqual(m, 0.0) || !isEqual(s, 0.0)) {
|
||||
std::ranges::copy(std::string_view("-"), std::back_inserter(res));
|
||||
}
|
||||
}
|
||||
|
||||
std::vformat_to(std::back_inserter(res), std::string_view{fmt.begin(), fmt.end()}, std::make_format_args(d, m, s));
|
||||
|
||||
67
mcc/tests/mcc_coord_test.cpp
Normal file
67
mcc/tests/mcc_coord_test.cpp
Normal file
@ -0,0 +1,67 @@
|
||||
#include <iostream>
|
||||
|
||||
#include "../mcc_ccte_erfa_new.h"
|
||||
#include "../mcc_coord.h"
|
||||
|
||||
using namespace mcc;
|
||||
|
||||
typedef MccGenericSkyPoint<mcc::ccte::erfa::MccCCTE_ERFA> skypt_t;
|
||||
|
||||
|
||||
static skypt_t::ccte_t::engine_state_t saoras{.meteo{.temperature = 0.0, .humidity = 0.5, .pressure = 1010.0},
|
||||
.wavelength = 0.5,
|
||||
.lat = 43.646711_degs,
|
||||
.lon = 41.440732_degs,
|
||||
.elev = 2100.0};
|
||||
|
||||
// skypt_t::cctEngine.setStateERFA(saoras);
|
||||
|
||||
static_assert(mcc_angle_c<double>, "!!!!!!!!!!!!");
|
||||
|
||||
int main()
|
||||
{
|
||||
skypt_t::cctEngine.setStateERFA(saoras);
|
||||
|
||||
skypt_t pt;
|
||||
MccSkyRADEC_ICRS icrs(0.0, 0.0);
|
||||
|
||||
pt = icrs;
|
||||
|
||||
MccSkyRADEC_OBS radec_obs{0.0, 0.0};
|
||||
MccSkyAZALT azalt{0, 0};
|
||||
MccSkyAZZD azzd{0, 0};
|
||||
|
||||
pt.to(radec_obs, azalt, azzd);
|
||||
|
||||
std::cout << "FROM ICRS TO OBSERVED:\n";
|
||||
std::cout << "RA_ICRS = " << icrs.x().sexagesimal(true) << "\n";
|
||||
std::cout << "DEC_ICRS = " << icrs.y().sexagesimal() << "\n";
|
||||
std::cout << "OBS COORD EPOCH: " << radec_obs.epoch().UTC() << "\n";
|
||||
std::cout << "RA_OBS = " << radec_obs.x().sexagesimal(true) << "\n";
|
||||
std::cout << "DEC_OBS = " << radec_obs.y().sexagesimal() << "\n";
|
||||
std::cout << "AZ = " << azalt.x().sexagesimal() << "\n";
|
||||
std::cout << "ALT = " << azalt.y().sexagesimal() << "\n";
|
||||
std::cout << "ZD = " << azzd.y().sexagesimal() << "\n";
|
||||
|
||||
|
||||
// radec_obs = {10.2387983_degs, "43:21:34.5465"_dms};
|
||||
pt = radec_obs;
|
||||
pt.to(icrs);
|
||||
|
||||
std::cout << "\n\nFROM OBSERVED TO ICRS:\n";
|
||||
std::cout << "OBS COORD EPOCH: " << radec_obs.epoch().UTC() << "\n";
|
||||
std::cout << "RA_OBS = " << radec_obs.x().sexagesimal(true) << "\n";
|
||||
std::cout << "DEC_OBS = " << radec_obs.y().sexagesimal() << "\n";
|
||||
std::cout << "RA_ICRS = " << icrs.x().sexagesimal(true) << "\n";
|
||||
std::cout << "DEC_ICRS = " << icrs.y().sexagesimal() << "\n";
|
||||
|
||||
pt.to(azzd);
|
||||
std::cout << "\n\nFROM OBSERVED TO OBSERVED:\n";
|
||||
std::cout << "OBS COORD EPOCH: " << radec_obs.epoch().UTC() << "\n";
|
||||
std::cout << "RA_OBS = " << radec_obs.x().sexagesimal(true) << "\n";
|
||||
std::cout << "DEC_OBS = " << radec_obs.y().sexagesimal() << "\n";
|
||||
std::cout << "AZ = " << azzd.x().sexagesimal() << "\n";
|
||||
std::cout << "ZD = " << azzd.y().sexagesimal() << "\n";
|
||||
|
||||
return 0;
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user