From 3659ddab015010de0e477d4624dad98451459c67 Mon Sep 17 00:00:00 2001 From: "Timur A. Fatkhullin" Date: Thu, 14 Aug 2025 18:35:44 +0300 Subject: [PATCH] ... --- cxx/CMakeLists.txt | 16 +- cxx/mcc_astrom_iers_default.h | 895 +++++++++++++++++++--------------- cxx/mcc_guiding_model.h | 29 +- cxx/mcc_mount_pz.h | 33 +- cxx/mcc_mount_telemetry.h | 13 +- cxx/tests/astrom_test.cpp | 73 ++- 6 files changed, 623 insertions(+), 436 deletions(-) diff --git a/cxx/CMakeLists.txt b/cxx/CMakeLists.txt index 9be0934..067588a 100644 --- a/cxx/CMakeLists.txt +++ b/cxx/CMakeLists.txt @@ -103,6 +103,8 @@ add_dependencies(ERFA_LIB erfalib) set(ERFA_INCLUDE_DIR ${CMAKE_BINARY_DIR}/erfa_lib) include_directories(${ERFA_INCLUDE_DIR}) +message(STATUS "ERFA: " ${ERFA_INCLUDE_DIR}) + option(WITH_TESTS "Build tests" ON) @@ -132,15 +134,15 @@ set(MCC_LIBRARY_SRC mcc_mount_concepts.h mcc_fsm_mount.h mcc_generic_mount.h mcc set(MCC_LIBRARY mcc) add_library(${MCC_LIBRARY} INTERFACE ${MCC_LIBRARY_SRC}) target_compile_features(${MCC_LIBRARY} INTERFACE cxx_std_23) -target_include_directories(${MCC_LIBRARY} INTERFACE ${FITPACK_INCLUDE_DIR}) +target_include_directories(${MCC_LIBRARY} INTERFACE ${FITPACK_INCLUDE_DIR} ${ERFA_INCLUDE_DIR}) -set(ASIBFM700_LIB_SRC asibfm700_common.h asibfm700_hardware.h asibfm700_hardware.cpp) -set(ASIBFM700_LIB asibfm700) -add_library(${ASIBFM700_LIB} STATIC ${ASIBFM700_LIB_SRC} - asibfm700_mount.h asibfm700_mount.cpp +set(ASIBFM700_LIB_SRC asibfm700_common.h asibfm700_hardware.h asibfm700_hardware.cpp asibfm700_mount.h asibfm700_mount.cpp asibfm700_config.h) -target_include_directories(${ASIBFM700_LIB} PRIVATE ${FITPACK_INCLUDE_DIR}) +set(ASIBFM700_LIB asibfm700) +add_library(${ASIBFM700_LIB} STATIC ${ASIBFM700_LIB_SRC}) +# target_include_directories(${ASIBFM700_LIB} PRIVATE ${FITPACK_INCLUDE_DIR} ${ERFA_INCLUDE_DIR}) +target_include_directories(${ASIBFM700_LIB} PUBLIC ${FITPACK_INCLUDE_DIR} ${ERFA_INCLUDE_DIR}) # set(MOUNT_SERVER_APP_SRC mount.h mount_state.h mount_server.cpp comm_server.h comm_server_endpoint.h comm_server_configfile.h mount_astrom.h # mount_astrom_default.h mcc_coord.h mount_pz.h mcc_fsm.h mcc_fsm_utils.h mcc_finite_state_machine.h mcc_mount_events_states.h) @@ -161,7 +163,7 @@ if (WITH_TESTS) set(ASTROM_TEST_APP astrom_test) add_executable(${ASTROM_TEST_APP} tests/astrom_test.cpp) - target_include_directories(${ASTROM_TEST_APP} PRIVATE ${FITPACK_INCLUDE_DIR}) + target_include_directories(${ASTROM_TEST_APP} PRIVATE ${FITPACK_INCLUDE_DIR} ${ERFA_INCLUDE_DIR}) target_link_libraries(${ASTROM_TEST_APP} ERFA_LIB) set(FITPACK_TEST_APP fitpack_test) diff --git a/cxx/mcc_astrom_iers_default.h b/cxx/mcc_astrom_iers_default.h index d8d1da9..b3b766a 100644 --- a/cxx/mcc_astrom_iers_default.h +++ b/cxx/mcc_astrom_iers_default.h @@ -67,7 +67,7 @@ static std::string MCC_DEFAULT_IERS_BULLETIN_A_FILE = R"--( * * * Rapid Service/Prediction of Earth Orientation * ********************************************************************** - 31 July 2025 Vol. XXXVIII No. 031 + 7 August 2025 Vol. XXXVIII No. 032 ______________________________________________________________________ GENERAL INFORMATION: MJD = Julian Date - 2 400 000.5 days @@ -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 7 25 60881 0.19849 .00009 0.43231 .00009 0.060664 0.000023 - 25 7 26 60882 0.19962 .00009 0.43171 .00009 0.061061 0.000018 - 25 7 27 60883 0.20063 .00009 0.43095 .00009 0.061275 0.000018 - 25 7 28 60884 0.20201 .00009 0.43031 .00009 0.061376 0.000016 - 25 7 29 60885 0.20393 .00009 0.42977 .00009 0.061481 0.000016 - 25 7 30 60886 0.20609 .00009 0.42900 .00009 0.061552 0.000012 - 25 7 31 60887 0.20824 .00009 0.42803 .00009 0.061682 0.000006 + 25 8 1 60888 0.21017 .00009 0.42717 .00009 0.062125 0.000021 + 25 8 2 60889 0.21181 .00009 0.42627 .00009 0.062752 0.000019 + 25 8 3 60890 0.21302 .00009 0.42504 .00009 0.063645 0.000016 + 25 8 4 60891 0.21368 .00009 0.42383 .00009 0.064781 0.000010 + 25 8 5 60892 0.21398 .00009 0.42271 .00009 0.066047 0.000009 + 25 8 6 60893 0.21437 .00009 0.42152 .00009 0.067348 0.000008 + 25 8 7 60894 0.21485 .00009 0.42038 .00009 0.068615 0.000055 + + IERS Final Values + MJD x y UT1-UTC + " " s + 25 6 2 60828 0.1141 0.4380 0.02903 + 25 6 3 60829 0.1154 0.4384 0.02896 + 25 6 4 60830 0.1172 0.4390 0.02885 + 25 6 5 60831 0.1187 0.4399 0.02874 + 25 6 6 60832 0.1202 0.4403 0.02868 + 25 6 7 60833 0.1217 0.4408 0.02871 + 25 6 8 60834 0.1232 0.4410 0.02891 + 25 6 9 60835 0.1248 0.4415 0.02936 + 25 6 10 60836 0.1262 0.4420 0.03004 + 25 6 11 60837 0.1276 0.4425 0.03086 + 25 6 12 60838 0.1291 0.4428 0.03178 + 25 6 13 60839 0.1307 0.4428 0.03273 + 25 6 14 60840 0.1325 0.4426 0.03360 + 25 6 15 60841 0.1347 0.4424 0.03430 + 25 6 16 60842 0.1370 0.4426 0.03479 + 25 6 17 60843 0.1389 0.4427 0.03506 + 25 6 18 60844 0.1406 0.4429 0.03512 + 25 6 19 60845 0.1420 0.4431 0.03504 + 25 6 20 60846 0.1436 0.4427 0.03492 + 25 6 21 60847 0.1452 0.4426 0.03489 + 25 6 22 60848 0.1468 0.4423 0.03515 + 25 6 23 60849 0.1486 0.4420 0.03583 + 25 6 24 60850 0.1502 0.4416 0.03682 + 25 6 25 60851 0.1518 0.4411 0.03797 + 25 6 26 60852 0.1533 0.4407 0.03919 + 25 6 27 60853 0.1548 0.4404 0.04037 + 25 6 28 60854 0.1564 0.4401 0.04139 + 25 6 29 60855 0.1585 0.4400 0.04222 + 25 6 30 60856 0.1603 0.4401 0.04287 + 25 7 1 60857 0.1621 0.4398 0.04342 _______________________________________________________________________ @@ -130,401 +164,492 @@ 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.1419 + 0.0946 cos A + 0.1166 sin A - 0.0303 cos C - 0.0701 sin C - y = 0.3863 + 0.1145 cos A - 0.0825 sin A - 0.0701 cos C + 0.0303 sin C - UT1-UTC = 0.0464 + 0.00010 (MJD - 60895) - (UT2-UT1) + x = 0.1420 + 0.1046 cos A + 0.1043 sin A - 0.0336 cos C - 0.0648 sin C + y = 0.3838 + 0.1044 cos A - 0.0915 sin A - 0.0648 cos C + 0.0336 sin C + UT1-UTC = 0.0474 + 0.00010 (MJD - 60902) - (UT2-UT1) - where A = 2*pi*(MJD-60887)/365.25 and C = 2*pi*(MJD-60887)/435. + where A = 2*pi*(MJD-60894)/365.25 and C = 2*pi*(MJD-60894)/435. - TAI-UTC(MJD 60888) = 37.0 + TAI-UTC(MJD 60895) = 37.0 The accuracy may be estimated from the expressions: - S x,y = 0.00068 (MJD-60887)**0.80 S t = 0.00025 (MJD-60887)**0.75 + S x,y = 0.00068 (MJD-60894)**0.80 S t = 0.00025 (MJD-60894)**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 8 1 60888 0.2101 0.4272 0.06205 - 2025 8 2 60889 0.2119 0.4263 0.06269 - 2025 8 3 60890 0.2133 0.4254 0.06357 - 2025 8 4 60891 0.2145 0.4244 0.06468 - 2025 8 5 60892 0.2156 0.4234 0.06594 - 2025 8 6 60893 0.2167 0.4224 0.06727 - 2025 8 7 60894 0.2177 0.4213 0.06856 - 2025 8 8 60895 0.2187 0.4202 0.06970 - 2025 8 9 60896 0.2197 0.4190 0.07060 - 2025 8 10 60897 0.2206 0.4177 0.07120 - 2025 8 11 60898 0.2215 0.4164 0.07146 - 2025 8 12 60899 0.2224 0.4152 0.07142 - 2025 8 13 60900 0.2232 0.4139 0.07120 - 2025 8 14 60901 0.2240 0.4127 0.07098 - 2025 8 15 60902 0.2248 0.4114 0.07091 - 2025 8 16 60903 0.2255 0.4101 0.07106 - 2025 8 17 60904 0.2262 0.4089 0.07146 - 2025 8 18 60905 0.2269 0.4076 0.07208 - 2025 8 19 60906 0.2275 0.4063 0.07281 - 2025 8 20 60907 0.2281 0.4049 0.07354 - 2025 8 21 60908 0.2286 0.4036 0.07414 - 2025 8 22 60909 0.2291 0.4023 0.07454 - 2025 8 23 60910 0.2296 0.4009 0.07474 - 2025 8 24 60911 0.2301 0.3996 0.07478 - 2025 8 25 60912 0.2305 0.3982 0.07473 - 2025 8 26 60913 0.2309 0.3968 0.07466 - 2025 8 27 60914 0.2313 0.3954 0.07467 - 2025 8 28 60915 0.2316 0.3941 0.07483 - 2025 8 29 60916 0.2320 0.3927 0.07516 - 2025 8 30 60917 0.2322 0.3913 0.07569 - 2025 8 31 60918 0.2325 0.3899 0.07639 - 2025 9 1 60919 0.2327 0.3885 0.07722 - 2025 9 2 60920 0.2330 0.3871 0.07811 - 2025 9 3 60921 0.2331 0.3857 0.07897 - 2025 9 4 60922 0.2333 0.3843 0.07971 - 2025 9 5 60923 0.2334 0.3828 0.08022 - 2025 9 6 60924 0.2335 0.3814 0.08044 - 2025 9 7 60925 0.2336 0.3800 0.08033 - 2025 9 8 60926 0.2336 0.3786 0.07993 - 2025 9 9 60927 0.2336 0.3772 0.07935 - 2025 9 10 60928 0.2336 0.3757 0.07876 - 2025 9 11 60929 0.2336 0.3743 0.07832 - 2025 9 12 60930 0.2335 0.3729 0.07814 - 2025 9 13 60931 0.2334 0.3715 0.07825 - 2025 9 14 60932 0.2333 0.3701 0.07859 - 2025 9 15 60933 0.2331 0.3686 0.07906 - 2025 9 16 60934 0.2329 0.3672 0.07952 - 2025 9 17 60935 0.2327 0.3658 0.07987 - 2025 9 18 60936 0.2325 0.3644 0.08003 - 2025 9 19 60937 0.2322 0.3630 0.07996 - 2025 9 20 60938 0.2319 0.3616 0.07969 - 2025 9 21 60939 0.2316 0.3602 0.07928 - 2025 9 22 60940 0.2313 0.3588 0.07881 - 2025 9 23 60941 0.2309 0.3574 0.07837 - 2025 9 24 60942 0.2305 0.3560 0.07804 - 2025 9 25 60943 0.2301 0.3546 0.07786 - 2025 9 26 60944 0.2297 0.3532 0.07787 - 2025 9 27 60945 0.2292 0.3518 0.07805 - 2025 9 28 60946 0.2287 0.3505 0.07838 - 2025 9 29 60947 0.2282 0.3491 0.07880 - 2025 9 30 60948 0.2276 0.3478 0.07924 - 2025 10 1 60949 0.2270 0.3464 0.07962 - 2025 10 2 60950 0.2264 0.3451 0.07983 - 2025 10 3 60951 0.2258 0.3438 0.07978 - 2025 10 4 60952 0.2252 0.3424 0.07944 - 2025 10 5 60953 0.2245 0.3411 0.07878 - 2025 10 6 60954 0.2238 0.3398 0.07790 - 2025 10 7 60955 0.2231 0.3386 0.07692 - 2025 10 8 60956 0.2223 0.3373 0.07603 - 2025 10 9 60957 0.2215 0.3360 0.07538 - 2025 10 10 60958 0.2207 0.3348 0.07506 - 2025 10 11 60959 0.2199 0.3335 0.07504 - 2025 10 12 60960 0.2191 0.3323 0.07523 - 2025 10 13 60961 0.2182 0.3311 0.07547 - 2025 10 14 60962 0.2173 0.3299 0.07564 - 2025 10 15 60963 0.2164 0.3287 0.07565 - 2025 10 16 60964 0.2155 0.3275 0.07545 - 2025 10 17 60965 0.2145 0.3263 0.07507 - 2025 10 18 60966 0.2136 0.3252 0.07454 - 2025 10 19 60967 0.2126 0.3241 0.07396 - 2025 10 20 60968 0.2116 0.3229 0.07339 - 2025 10 21 60969 0.2105 0.3218 0.07290 - 2025 10 22 60970 0.2095 0.3207 0.07257 - 2025 10 23 60971 0.2084 0.3197 0.07242 - 2025 10 24 60972 0.2073 0.3186 0.07246 - 2025 10 25 60973 0.2062 0.3176 0.07267 - 2025 10 26 60974 0.2050 0.3166 0.07299 - 2025 10 27 60975 0.2039 0.3156 0.07336 - 2025 10 28 60976 0.2027 0.3146 0.07370 - 2025 10 29 60977 0.2015 0.3136 0.07393 - 2025 10 30 60978 0.2003 0.3126 0.07395 - 2025 10 31 60979 0.1991 0.3117 0.07371 - 2025 11 1 60980 0.1979 0.3108 0.07317 - 2025 11 2 60981 0.1966 0.3099 0.07238 - 2025 11 3 60982 0.1953 0.3090 0.07144 - 2025 11 4 60983 0.1941 0.3082 0.07049 - 2025 11 5 60984 0.1928 0.3073 0.06970 - 2025 11 6 60985 0.1914 0.3065 0.06920 - 2025 11 7 60986 0.1901 0.3057 0.06903 - 2025 11 8 60987 0.1888 0.3050 0.06912 - 2025 11 9 60988 0.1874 0.3042 0.06933 - 2025 11 10 60989 0.1860 0.3035 0.06951 - 2025 11 11 60990 0.1847 0.3028 0.06956 - 2025 11 12 60991 0.1833 0.3021 0.06941 - 2025 11 13 60992 0.1819 0.3014 0.06907 - 2025 11 14 60993 0.1804 0.3008 0.06861 - 2025 11 15 60994 0.1790 0.3001 0.06809 - 2025 11 16 60995 0.1776 0.2995 0.06758 - 2025 11 17 60996 0.1761 0.2989 0.06707 - 2025 11 18 60997 0.1747 0.2984 0.06669 - 2025 11 19 60998 0.1732 0.2979 0.06650 - 2025 11 20 60999 0.1717 0.2973 0.06650 - 2025 11 21 61000 0.1702 0.2969 0.06668 - 2025 11 22 61001 0.1687 0.2964 0.06699 - 2025 11 23 61002 0.1672 0.2959 0.06738 - 2025 11 24 61003 0.1657 0.2955 0.06776 - 2025 11 25 61004 0.1642 0.2951 0.06806 - 2025 11 26 61005 0.1627 0.2948 0.06820 - 2025 11 27 61006 0.1612 0.2944 0.06812 - 2025 11 28 61007 0.1596 0.2941 0.06779 - 2025 11 29 61008 0.1581 0.2938 0.06722 - 2025 11 30 61009 0.1566 0.2935 0.06647 - 2025 12 1 61010 0.1550 0.2933 0.06567 - 2025 12 2 61011 0.1535 0.2930 0.06495 - 2025 12 3 61012 0.1519 0.2928 0.06445 - 2025 12 4 61013 0.1504 0.2926 0.06426 - 2025 12 5 61014 0.1488 0.2925 0.06435 - 2025 12 6 61015 0.1473 0.2924 0.06463 - 2025 12 7 61016 0.1457 0.2923 0.06493 - 2025 12 8 61017 0.1441 0.2922 0.06513 - 2025 12 9 61018 0.1426 0.2921 0.06512 - 2025 12 10 61019 0.1410 0.2921 0.06492 - 2025 12 11 61020 0.1395 0.2921 0.06456 - 2025 12 12 61021 0.1379 0.2921 0.06414 - 2025 12 13 61022 0.1364 0.2921 0.06372 - 2025 12 14 61023 0.1348 0.2922 0.06339 - 2025 12 15 61024 0.1333 0.2923 0.06320 - 2025 12 16 61025 0.1318 0.2924 0.06318 - 2025 12 17 61026 0.1302 0.2925 0.06335 - 2025 12 18 61027 0.1287 0.2927 0.06371 - 2025 12 19 61028 0.1272 0.2929 0.06421 - 2025 12 20 61029 0.1256 0.2931 0.06480 - 2025 12 21 61030 0.1241 0.2933 0.06540 - 2025 12 22 61031 0.1226 0.2936 0.06593 - 2025 12 23 61032 0.1211 0.2939 0.06631 - 2025 12 24 61033 0.1196 0.2942 0.06648 - 2025 12 25 61034 0.1181 0.2945 0.06642 - 2025 12 26 61035 0.1166 0.2948 0.06614 - 2025 12 27 61036 0.1152 0.2952 0.06567 - 2025 12 28 61037 0.1137 0.2956 0.06513 - 2025 12 29 61038 0.1122 0.2960 0.06463 - 2025 12 30 61039 0.1108 0.2965 0.06430 - 2025 12 31 61040 0.1094 0.2970 0.06422 - 2026 1 1 61041 0.1079 0.2974 0.06441 - 2026 1 2 61042 0.1065 0.2980 0.06480 - 2026 1 3 61043 0.1051 0.2985 0.06526 - 2026 1 4 61044 0.1037 0.2991 0.06565 - 2026 1 5 61045 0.1024 0.2996 0.06585 - 2026 1 6 61046 0.1010 0.3002 0.06581 - 2026 1 7 61047 0.0996 0.3009 0.06558 - 2026 1 8 61048 0.0983 0.3015 0.06522 - 2026 1 9 61049 0.0970 0.3022 0.06485 - 2026 1 10 61050 0.0957 0.3029 0.06455 - 2026 1 11 61051 0.0944 0.3036 0.06438 - 2026 1 12 61052 0.0931 0.3043 0.06439 - 2026 1 13 61053 0.0918 0.3051 0.06459 - 2026 1 14 61054 0.0906 0.3058 0.06498 - 2026 1 15 61055 0.0893 0.3066 0.06552 - 2026 1 16 61056 0.0881 0.3074 0.06616 - 2026 1 17 61057 0.0869 0.3083 0.06682 - 2026 1 18 61058 0.0858 0.3091 0.06743 - 2026 1 19 61059 0.0846 0.3100 0.06790 - 2026 1 20 61060 0.0834 0.3109 0.06816 - 2026 1 21 61061 0.0823 0.3118 0.06818 - 2026 1 22 61062 0.0812 0.3127 0.06797 - 2026 1 23 61063 0.0801 0.3136 0.06757 - 2026 1 24 61064 0.0791 0.3146 0.06710 - 2026 1 25 61065 0.0780 0.3156 0.06666 - 2026 1 26 61066 0.0770 0.3166 0.06637 - 2026 1 27 61067 0.0760 0.3176 0.06631 - 2026 1 28 61068 0.0750 0.3186 0.06653 - 2026 1 29 61069 0.0740 0.3196 0.06698 - 2026 1 30 61070 0.0731 0.3207 0.06754 - 2026 1 31 61071 0.0721 0.3218 0.06810 - 2026 2 1 61072 0.0712 0.3229 0.06853 - 2026 2 2 61073 0.0704 0.3240 0.06874 - 2026 2 3 61074 0.0695 0.3251 0.06875 - 2026 2 4 61075 0.0687 0.3262 0.06861 - 2026 2 5 61076 0.0678 0.3273 0.06843 - 2026 2 6 61077 0.0671 0.3285 0.06830 - 2026 2 7 61078 0.0663 0.3297 0.06830 - 2026 2 8 61079 0.0655 0.3309 0.06846 - 2026 2 9 61080 0.0648 0.3321 0.06880 - 2026 2 10 61081 0.0641 0.3333 0.06930 - 2026 2 11 61082 0.0635 0.3345 0.06993 - 2026 2 12 61083 0.0628 0.3357 0.07063 - 2026 2 13 61084 0.0622 0.3370 0.07134 - 2026 2 14 61085 0.0616 0.3382 0.07197 - 2026 2 15 61086 0.0610 0.3395 0.07244 - 2026 2 16 61087 0.0605 0.3407 0.07269 - 2026 2 17 61088 0.0599 0.3420 0.07266 - 2026 2 18 61089 0.0594 0.3433 0.07235 - 2026 2 19 61090 0.0590 0.3446 0.07181 - 2026 2 20 61091 0.0585 0.3459 0.07115 - 2026 2 21 61092 0.0581 0.3472 0.07049 - 2026 2 22 61093 0.0577 0.3485 0.06996 - 2026 2 23 61094 0.0573 0.3499 0.06966 - 2026 2 24 61095 0.0570 0.3512 0.06961 - 2026 2 25 61096 0.0567 0.3525 0.06978 - 2026 2 26 61097 0.0564 0.3539 0.07006 - 2026 2 27 61098 0.0561 0.3552 0.07033 - 2026 2 28 61099 0.0559 0.3566 0.07045 - 2026 3 1 61100 0.0557 0.3579 0.07033 - 2026 3 2 61101 0.0555 0.3593 0.06993 - 2026 3 3 61102 0.0553 0.3607 0.06927 - 2026 3 4 61103 0.0552 0.3620 0.06843 - 2026 3 5 61104 0.0551 0.3634 0.06752 - 2026 3 6 61105 0.0550 0.3648 0.06663 - 2026 3 7 61106 0.0550 0.3662 0.06588 - 2026 3 8 61107 0.0549 0.3675 0.06529 - 2026 3 9 61108 0.0549 0.3689 0.06488 - 2026 3 10 61109 0.0550 0.3703 0.06460 - 2026 3 11 61110 0.0550 0.3717 0.06447 - 2026 3 12 61111 0.0551 0.3731 0.06446 - 2026 3 13 61112 0.0552 0.3744 0.06443 - 2026 3 14 61113 0.0554 0.3758 0.06436 - 2026 3 15 61114 0.0555 0.3772 0.06408 - 2026 3 16 61115 0.0557 0.3786 0.06349 - 2026 3 17 61116 0.0559 0.3799 0.06259 - 2026 3 18 61117 0.0562 0.3813 0.06141 - 2026 3 19 61118 0.0564 0.3827 0.06005 - 2026 3 20 61119 0.0567 0.3840 0.05860 - 2026 3 21 61120 0.0570 0.3854 0.05727 - 2026 3 22 61121 0.0574 0.3867 0.05618 - 2026 3 23 61122 0.0577 0.3881 0.05536 - 2026 3 24 61123 0.0581 0.3894 0.05478 - 2026 3 25 61124 0.0586 0.3907 0.05438 - 2026 3 26 61125 0.0590 0.3921 0.05402 - 2026 3 27 61126 0.0595 0.3934 0.05356 - 2026 3 28 61127 0.0600 0.3947 0.05298 - 2026 3 29 61128 0.0605 0.3960 0.05224 - 2026 3 30 61129 0.0610 0.3973 0.05131 - 2026 3 31 61130 0.0616 0.3986 0.05030 - 2026 4 1 61131 0.0622 0.3999 0.04920 - 2026 4 2 61132 0.0628 0.4012 0.04819 - 2026 4 3 61133 0.0635 0.4024 0.04731 - 2026 4 4 61134 0.0641 0.4037 0.04672 - 2026 4 5 61135 0.0648 0.4050 0.04635 - 2026 4 6 61136 0.0656 0.4062 0.04618 - 2026 4 7 61137 0.0663 0.4074 0.04628 - 2026 4 8 61138 0.0671 0.4086 0.04646 - 2026 4 9 61139 0.0678 0.4098 0.04671 - 2026 4 10 61140 0.0686 0.4110 0.04691 - 2026 4 11 61141 0.0695 0.4122 0.04694 - 2026 4 12 61142 0.0703 0.4134 0.04670 - 2026 4 13 61143 0.0712 0.4145 0.04619 - 2026 4 14 61144 0.0721 0.4157 0.04540 - 2026 4 15 61145 0.0730 0.4168 0.04436 - 2026 4 16 61146 0.0739 0.4179 0.04323 - 2026 4 17 61147 0.0749 0.4190 0.04215 - 2026 4 18 61148 0.0759 0.4201 0.04125 - 2026 4 19 61149 0.0768 0.4211 0.04060 - 2026 4 20 61150 0.0779 0.4222 0.04022 - 2026 4 21 61151 0.0789 0.4232 0.04012 - 2026 4 22 61152 0.0799 0.4242 0.04007 - 2026 4 23 61153 0.0810 0.4253 0.03998 - 2026 4 24 61154 0.0821 0.4262 0.03981 - 2026 4 25 61155 0.0832 0.4272 0.03945 - 2026 4 26 61156 0.0843 0.4282 0.03896 - 2026 4 27 61157 0.0855 0.4291 0.03839 - 2026 4 28 61158 0.0866 0.4300 0.03777 - 2026 4 29 61159 0.0878 0.4309 0.03717 - 2026 4 30 61160 0.0890 0.4318 0.03670 - 2026 5 1 61161 0.0902 0.4327 0.03647 - 2026 5 2 61162 0.0914 0.4335 0.03650 - 2026 5 3 61163 0.0927 0.4343 0.03671 - 2026 5 4 61164 0.0939 0.4351 0.03710 - 2026 5 5 61165 0.0952 0.4359 0.03768 - 2026 5 6 61166 0.0965 0.4367 0.03826 - 2026 5 7 61167 0.0978 0.4374 0.03880 - 2026 5 8 61168 0.0991 0.4382 0.03926 - 2026 5 9 61169 0.1004 0.4389 0.03960 - 2026 5 10 61170 0.1017 0.4396 0.03969 - 2026 5 11 61171 0.1030 0.4402 0.03958 - 2026 5 12 61172 0.1044 0.4409 0.03924 - 2026 5 13 61173 0.1058 0.4415 0.03874 - 2026 5 14 61174 0.1071 0.4421 0.03822 - 2026 5 15 61175 0.1085 0.4427 0.03781 - 2026 5 16 61176 0.1099 0.4432 0.03762 - 2026 5 17 61177 0.1113 0.4438 0.03770 - 2026 5 18 61178 0.1127 0.4443 0.03797 - 2026 5 19 61179 0.1141 0.4448 0.03848 - 2026 5 20 61180 0.1156 0.4453 0.03905 - 2026 5 21 61181 0.1170 0.4457 0.03952 - 2026 5 22 61182 0.1185 0.4461 0.03983 - 2026 5 23 61183 0.1199 0.4465 0.03997 - 2026 5 24 61184 0.1214 0.4469 0.03987 - 2026 5 25 61185 0.1228 0.4473 0.03969 - 2026 5 26 61186 0.1243 0.4476 0.03958 - 2026 5 27 61187 0.1257 0.4479 0.03953 - 2026 5 28 61188 0.1272 0.4482 0.03962 - 2026 5 29 61189 0.1287 0.4485 0.03986 - 2026 5 30 61190 0.1302 0.4487 0.04031 - 2026 5 31 61191 0.1317 0.4489 0.04088 - 2026 6 1 61192 0.1331 0.4491 0.04159 - 2026 6 2 61193 0.1346 0.4493 0.04244 - 2026 6 3 61194 0.1361 0.4494 0.04341 - 2026 6 4 61195 0.1376 0.4496 0.04430 - 2026 6 5 61196 0.1391 0.4497 0.04511 - 2026 6 6 61197 0.1406 0.4497 0.04574 - 2026 6 7 61198 0.1421 0.4498 0.04612 - 2026 6 8 61199 0.1436 0.4498 0.04627 - 2026 6 9 61200 0.1451 0.4498 0.04633 - 2026 6 10 61201 0.1465 0.4498 0.04635 - 2026 6 11 61202 0.1480 0.4498 0.04643 - 2026 6 12 61203 0.1495 0.4497 0.04676 - 2026 6 13 61204 0.1510 0.4496 0.04741 - 2026 6 14 61205 0.1525 0.4495 0.04834 - 2026 6 15 61206 0.1539 0.4494 0.04956 - 2026 6 16 61207 0.1554 0.4492 0.05075 - 2026 6 17 61208 0.1568 0.4490 0.05178 - 2026 6 18 61209 0.1583 0.4488 0.05255 - 2026 6 19 61210 0.1597 0.4486 0.05301 - 2026 6 20 61211 0.1612 0.4483 0.05328 - 2026 6 21 61212 0.1626 0.4481 0.05345 - 2026 6 22 61213 0.1640 0.4478 0.05361 - 2026 6 23 61214 0.1655 0.4474 0.05393 - 2026 6 24 61215 0.1669 0.4471 0.05442 - 2026 6 25 61216 0.1683 0.4467 0.05512 - 2026 6 26 61217 0.1697 0.4463 0.05611 - 2026 6 27 61218 0.1711 0.4459 0.05729 - 2026 6 28 61219 0.1724 0.4455 0.05868 - 2026 6 29 61220 0.1738 0.4450 0.06008 - 2026 6 30 61221 0.1751 0.4446 0.06159 - 2026 7 1 61222 0.1765 0.4441 0.06300 - 2026 7 2 61223 0.1778 0.4435 0.06426 - 2026 7 3 61224 0.1791 0.4430 0.06534 - 2026 7 4 61225 0.1804 0.4424 0.06625 - 2026 7 5 61226 0.1817 0.4418 0.06692 - 2026 7 6 61227 0.1830 0.4412 0.06750 - 2026 7 7 61228 0.1843 0.4406 0.06802 - 2026 7 8 61229 0.1855 0.4400 0.06856 - 2026 7 9 61230 0.1868 0.4393 0.06919 - 2026 7 10 61231 0.1880 0.4386 0.06998 - 2026 7 11 61232 0.1892 0.4379 0.07112 - 2026 7 12 61233 0.1904 0.4372 0.07248 - 2026 7 13 61234 0.1916 0.4364 0.07398 - 2026 7 14 61235 0.1927 0.4357 0.07539 - 2026 7 15 61236 0.1939 0.4349 0.07656 - 2026 7 16 61237 0.1950 0.4341 0.07751 - 2026 7 17 61238 0.1961 0.4333 0.07821 - 2026 7 18 61239 0.1972 0.4324 0.07881 - 2026 7 19 61240 0.1983 0.4316 0.07932 - 2026 7 20 61241 0.1993 0.4307 0.07987 - 2026 7 21 61242 0.2003 0.4298 0.08067 - 2026 7 22 61243 0.2014 0.4289 0.08162 - 2026 7 23 61244 0.2024 0.4280 0.08281 - 2026 7 24 61245 0.2033 0.4271 0.08417 - 2026 7 25 61246 0.2043 0.4261 0.08568 - 2026 7 26 61247 0.2052 0.4251 0.08728 - 2026 7 27 61248 0.2061 0.4242 0.08887 - 2026 7 28 61249 0.2070 0.4232 0.09042 - 2026 7 29 61250 0.2079 0.4221 0.09183 - 2026 7 30 61251 0.2088 0.4211 0.09304 - 2026 7 31 61252 0.2096 0.4201 0.09407 + 2025 8 8 60895 0.2155 0.4191 0.06979 + 2025 8 9 60896 0.2161 0.4179 0.07073 + 2025 8 10 60897 0.2169 0.4167 0.07137 + 2025 8 11 60898 0.2176 0.4154 0.07173 + 2025 8 12 60899 0.2184 0.4142 0.07190 + 2025 8 13 60900 0.2191 0.4130 0.07200 + 2025 8 14 60901 0.2198 0.4117 0.07218 + 2025 8 15 60902 0.2204 0.4105 0.07254 + 2025 8 16 60903 0.2210 0.4094 0.07316 + 2025 8 17 60904 0.2216 0.4082 0.07403 + 2025 8 18 60905 0.2222 0.4070 0.07507 + 2025 8 19 60906 0.2227 0.4058 0.07619 + 2025 8 20 60907 0.2232 0.4046 0.07725 + 2025 8 21 60908 0.2237 0.4033 0.07814 + 2025 8 22 60909 0.2242 0.4021 0.07878 + 2025 8 23 60910 0.2247 0.4008 0.07912 + 2025 8 24 60911 0.2251 0.3995 0.07921 + 2025 8 25 60912 0.2255 0.3983 0.07914 + 2025 8 26 60913 0.2259 0.3970 0.07899 + 2025 8 27 60914 0.2263 0.3957 0.07887 + 2025 8 28 60915 0.2266 0.3944 0.07884 + 2025 8 29 60916 0.2269 0.3931 0.07898 + 2025 8 30 60917 0.2272 0.3918 0.07930 + 2025 8 31 60918 0.2275 0.3905 0.07979 + 2025 9 1 60919 0.2278 0.3892 0.08042 + 2025 9 2 60920 0.2280 0.3879 0.08112 + 2025 9 3 60921 0.2282 0.3865 0.08182 + 2025 9 4 60922 0.2283 0.3852 0.08242 + 2025 9 5 60923 0.2285 0.3839 0.08283 + 2025 9 6 60924 0.2286 0.3825 0.08295 + 2025 9 7 60925 0.2287 0.3812 0.08277 + 2025 9 8 60926 0.2287 0.3799 0.08232 + 2025 9 9 60927 0.2287 0.3785 0.08173 + 2025 9 10 60928 0.2288 0.3772 0.08114 + 2025 9 11 60929 0.2287 0.3758 0.08072 + 2025 9 12 60930 0.2287 0.3745 0.08056 + 2025 9 13 60931 0.2286 0.3731 0.08070 + 2025 9 14 60932 0.2285 0.3718 0.08108 + 2025 9 15 60933 0.2284 0.3705 0.08159 + 2025 9 16 60934 0.2282 0.3691 0.08209 + 2025 9 17 60935 0.2281 0.3678 0.08247 + 2025 9 18 60936 0.2279 0.3664 0.08265 + 2025 9 19 60937 0.2276 0.3651 0.08260 + 2025 9 20 60938 0.2274 0.3638 0.08234 + 2025 9 21 60939 0.2271 0.3624 0.08194 + 2025 9 22 60940 0.2268 0.3611 0.08146 + 2025 9 23 60941 0.2264 0.3598 0.08101 + 2025 9 24 60942 0.2261 0.3585 0.08064 + 2025 9 25 60943 0.2257 0.3571 0.08042 + 2025 9 26 60944 0.2253 0.3558 0.08037 + 2025 9 27 60945 0.2248 0.3545 0.08049 + 2025 9 28 60946 0.2244 0.3532 0.08076 + 2025 9 29 60947 0.2239 0.3520 0.08112 + 2025 9 30 60948 0.2234 0.3507 0.08148 + 2025 10 1 60949 0.2228 0.3494 0.08177 + 2025 10 2 60950 0.2223 0.3481 0.08189 + 2025 10 3 60951 0.2217 0.3469 0.08176 + 2025 10 4 60952 0.2211 0.3456 0.08133 + 2025 10 5 60953 0.2204 0.3444 0.08059 + 2025 10 6 60954 0.2198 0.3431 0.07962 + 2025 10 7 60955 0.2191 0.3419 0.07856 + 2025 10 8 60956 0.2184 0.3407 0.07759 + 2025 10 9 60957 0.2177 0.3395 0.07687 + 2025 10 10 60958 0.2169 0.3383 0.07647 + 2025 10 11 60959 0.2161 0.3371 0.07637 + 2025 10 12 60960 0.2153 0.3360 0.07648 + 2025 10 13 60961 0.2145 0.3348 0.07665 + 2025 10 14 60962 0.2137 0.3337 0.07674 + 2025 10 15 60963 0.2128 0.3325 0.07667 + 2025 10 16 60964 0.2119 0.3314 0.07640 + 2025 10 17 60965 0.2110 0.3303 0.07594 + 2025 10 18 60966 0.2101 0.3292 0.07535 + 2025 10 19 60967 0.2092 0.3281 0.07470 + 2025 10 20 60968 0.2082 0.3271 0.07405 + 2025 10 21 60969 0.2072 0.3260 0.07350 + 2025 10 22 60970 0.2062 0.3250 0.07310 + 2025 10 23 60971 0.2052 0.3240 0.07289 + 2025 10 24 60972 0.2041 0.3230 0.07287 + 2025 10 25 60973 0.2031 0.3220 0.07302 + 2025 10 26 60974 0.2020 0.3210 0.07329 + 2025 10 27 60975 0.2009 0.3200 0.07360 + 2025 10 28 60976 0.1998 0.3191 0.07388 + 2025 10 29 60977 0.1986 0.3182 0.07405 + 2025 10 30 60978 0.1975 0.3173 0.07402 + 2025 10 31 60979 0.1963 0.3164 0.07372 + 2025 11 1 60980 0.1951 0.3155 0.07315 + 2025 11 2 60981 0.1939 0.3147 0.07232 + 2025 11 3 60982 0.1927 0.3139 0.07133 + 2025 11 4 60983 0.1915 0.3130 0.07034 + 2025 11 5 60984 0.1902 0.3122 0.06953 + 2025 11 6 60985 0.1890 0.3115 0.06901 + 2025 11 7 60986 0.1877 0.3107 0.06882 + 2025 11 8 60987 0.1864 0.3100 0.06889 + 2025 11 9 60988 0.1851 0.3093 0.06908 + 2025 11 10 60989 0.1838 0.3086 0.06924 + 2025 11 11 60990 0.1825 0.3079 0.06927 + 2025 11 12 60991 0.1812 0.3072 0.06910 + 2025 11 13 60992 0.1798 0.3066 0.06876 + 2025 11 14 60993 0.1784 0.3060 0.06828 + 2025 11 15 60994 0.1771 0.3054 0.06774 + 2025 11 16 60995 0.1757 0.3048 0.06722 + 2025 11 17 60996 0.1743 0.3043 0.06677 + 2025 11 18 60997 0.1729 0.3038 0.06647 + 2025 11 19 60998 0.1715 0.3033 0.06635 + 2025 11 20 60999 0.1701 0.3028 0.06642 + 2025 11 21 61000 0.1687 0.3023 0.06667 + 2025 11 22 61001 0.1672 0.3019 0.06705 + 2025 11 23 61002 0.1658 0.3015 0.06751 + 2025 11 24 61003 0.1643 0.3011 0.06788 + 2025 11 25 61004 0.1629 0.3007 0.06817 + 2025 11 26 61005 0.1614 0.3003 0.06829 + 2025 11 27 61006 0.1600 0.3000 0.06820 + 2025 11 28 61007 0.1585 0.2997 0.06785 + 2025 11 29 61008 0.1570 0.2994 0.06727 + 2025 11 30 61009 0.1556 0.2992 0.06650 + 2025 12 1 61010 0.1541 0.2989 0.06567 + 2025 12 2 61011 0.1526 0.2987 0.06494 + 2025 12 3 61012 0.1511 0.2985 0.06442 + 2025 12 4 61013 0.1496 0.2984 0.06421 + 2025 12 5 61014 0.1481 0.2982 0.06429 + 2025 12 6 61015 0.1466 0.2981 0.06454 + 2025 12 7 61016 0.1451 0.2980 0.06483 + 2025 12 8 61017 0.1437 0.2980 0.06500 + 2025 12 9 61018 0.1422 0.2979 0.06498 + 2025 12 10 61019 0.1407 0.2979 0.06476 + 2025 12 11 61020 0.1392 0.2979 0.06439 + 2025 12 12 61021 0.1377 0.2979 0.06395 + 2025 12 13 61022 0.1362 0.2980 0.06353 + 2025 12 14 61023 0.1347 0.2980 0.06319 + 2025 12 15 61024 0.1332 0.2981 0.06299 + 2025 12 16 61025 0.1318 0.2982 0.06297 + 2025 12 17 61026 0.1303 0.2984 0.06315 + 2025 12 18 61027 0.1288 0.2985 0.06351 + 2025 12 19 61028 0.1274 0.2987 0.06401 + 2025 12 20 61029 0.1259 0.2989 0.06461 + 2025 12 21 61030 0.1245 0.2992 0.06522 + 2025 12 22 61031 0.1230 0.2994 0.06575 + 2025 12 23 61032 0.1216 0.2997 0.06614 + 2025 12 24 61033 0.1201 0.3000 0.06632 + 2025 12 25 61034 0.1187 0.3003 0.06627 + 2025 12 26 61035 0.1173 0.3007 0.06599 + 2025 12 27 61036 0.1159 0.3011 0.06554 + 2025 12 28 61037 0.1145 0.3015 0.06500 + 2025 12 29 61038 0.1131 0.3019 0.06451 + 2025 12 30 61039 0.1117 0.3023 0.06418 + 2025 12 31 61040 0.1103 0.3028 0.06410 + 2026 1 1 61041 0.1090 0.3033 0.06429 + 2026 1 2 61042 0.1076 0.3038 0.06468 + 2026 1 3 61043 0.1063 0.3043 0.06514 + 2026 1 4 61044 0.1050 0.3048 0.06553 + 2026 1 5 61045 0.1036 0.3054 0.06573 + 2026 1 6 61046 0.1023 0.3060 0.06569 + 2026 1 7 61047 0.1010 0.3066 0.06545 + 2026 1 8 61048 0.0998 0.3072 0.06509 + 2026 1 9 61049 0.0985 0.3079 0.06472 + 2026 1 10 61050 0.0973 0.3086 0.06441 + 2026 1 11 61051 0.0960 0.3093 0.06423 + 2026 1 12 61052 0.0948 0.3100 0.06423 + 2026 1 13 61053 0.0936 0.3107 0.06442 + 2026 1 14 61054 0.0924 0.3115 0.06480 + 2026 1 15 61055 0.0912 0.3122 0.06532 + 2026 1 16 61056 0.0901 0.3130 0.06595 + 2026 1 17 61057 0.0889 0.3138 0.06660 + 2026 1 18 61058 0.0878 0.3146 0.06719 + 2026 1 19 61059 0.0867 0.3155 0.06763 + 2026 1 20 61060 0.0856 0.3164 0.06787 + 2026 1 21 61061 0.0846 0.3172 0.06785 + 2026 1 22 61062 0.0835 0.3181 0.06761 + 2026 1 23 61063 0.0825 0.3191 0.06717 + 2026 1 24 61064 0.0815 0.3200 0.06664 + 2026 1 25 61065 0.0805 0.3209 0.06615 + 2026 1 26 61066 0.0795 0.3219 0.06579 + 2026 1 27 61067 0.0786 0.3229 0.06566 + 2026 1 28 61068 0.0776 0.3239 0.06578 + 2026 1 29 61069 0.0767 0.3249 0.06612 + 2026 1 30 61070 0.0758 0.3259 0.06656 + 2026 1 31 61071 0.0749 0.3270 0.06697 + 2026 2 1 61072 0.0741 0.3280 0.06723 + 2026 2 2 61073 0.0733 0.3291 0.06725 + 2026 2 3 61074 0.0725 0.3302 0.06704 + 2026 2 4 61075 0.0717 0.3313 0.06666 + 2026 2 5 61076 0.0709 0.3324 0.06622 + 2026 2 6 61077 0.0702 0.3335 0.06583 + 2026 2 7 61078 0.0695 0.3346 0.06557 + 2026 2 8 61079 0.0688 0.3358 0.06552 + 2026 2 9 61080 0.0681 0.3369 0.06570 + 2026 2 10 61081 0.0675 0.3381 0.06610 + 2026 2 11 61082 0.0668 0.3393 0.06671 + 2026 2 12 61083 0.0662 0.3405 0.06747 + 2026 2 13 61084 0.0657 0.3417 0.06829 + 2026 2 14 61085 0.0651 0.3429 0.06910 + 2026 2 15 61086 0.0646 0.3441 0.06977 + 2026 2 16 61087 0.0641 0.3453 0.07023 + 2026 2 17 61088 0.0636 0.3466 0.07040 + 2026 2 18 61089 0.0632 0.3478 0.07026 + 2026 2 19 61090 0.0627 0.3491 0.06986 + 2026 2 20 61091 0.0623 0.3503 0.06930 + 2026 2 21 61092 0.0620 0.3516 0.06869 + 2026 2 22 61093 0.0616 0.3529 0.06818 + 2026 2 23 61094 0.0613 0.3541 0.06787 + 2026 2 24 61095 0.0610 0.3554 0.06779 + 2026 2 25 61096 0.0607 0.3567 0.06793 + 2026 2 26 61097 0.0605 0.3580 0.06818 + 2026 2 27 61098 0.0602 0.3593 0.06844 + 2026 2 28 61099 0.0600 0.3606 0.06858 + 2026 3 1 61100 0.0599 0.3619 0.06850 + 2026 3 2 61101 0.0597 0.3632 0.06818 + 2026 3 3 61102 0.0596 0.3646 0.06765 + 2026 3 4 61103 0.0595 0.3659 0.06699 + 2026 3 5 61104 0.0595 0.3672 0.06631 + 2026 3 6 61105 0.0594 0.3685 0.06572 + 2026 3 7 61106 0.0594 0.3698 0.06529 + 2026 3 8 61107 0.0594 0.3712 0.06505 + 2026 3 9 61108 0.0595 0.3725 0.06500 + 2026 3 10 61109 0.0595 0.3738 0.06511 + 2026 3 11 61110 0.0596 0.3751 0.06533 + 2026 3 12 61111 0.0597 0.3765 0.06562 + 2026 3 13 61112 0.0599 0.3778 0.06589 + 2026 3 14 61113 0.0600 0.3791 0.06606 + 2026 3 15 61114 0.0602 0.3804 0.06604 + 2026 3 16 61115 0.0604 0.3818 0.06576 + 2026 3 17 61116 0.0607 0.3831 0.06516 + 2026 3 18 61117 0.0610 0.3844 0.06423 + 2026 3 19 61118 0.0613 0.3857 0.06304 + 2026 3 20 61119 0.0616 0.3870 0.06180 + 2026 3 21 61120 0.0619 0.3883 0.06065 + 2026 3 22 61121 0.0623 0.3896 0.05966 + 2026 3 23 61122 0.0627 0.3909 0.05895 + 2026 3 24 61123 0.0631 0.3922 0.05844 + 2026 3 25 61124 0.0636 0.3934 0.05812 + 2026 3 26 61125 0.0640 0.3947 0.05791 + 2026 3 27 61126 0.0645 0.3960 0.05759 + 2026 3 28 61127 0.0651 0.3972 0.05717 + 2026 3 29 61128 0.0656 0.3985 0.05646 + 2026 3 30 61129 0.0662 0.3997 0.05548 + 2026 3 31 61130 0.0668 0.4010 0.05432 + 2026 4 1 61131 0.0674 0.4022 0.05306 + 2026 4 2 61132 0.0680 0.4034 0.05187 + 2026 4 3 61133 0.0687 0.4046 0.05076 + 2026 4 4 61134 0.0694 0.4058 0.04986 + 2026 4 5 61135 0.0701 0.4070 0.04920 + 2026 4 6 61136 0.0708 0.4082 0.04872 + 2026 4 7 61137 0.0716 0.4093 0.04838 + 2026 4 8 61138 0.0724 0.4105 0.04815 + 2026 4 9 61139 0.0732 0.4116 0.04795 + 2026 4 10 61140 0.0740 0.4128 0.04768 + 2026 4 11 61141 0.0748 0.4139 0.04735 + 2026 4 12 61142 0.0757 0.4150 0.04689 + 2026 4 13 61143 0.0766 0.4161 0.04620 + 2026 4 14 61144 0.0775 0.4172 0.04531 + 2026 4 15 61145 0.0784 0.4182 0.04419 + 2026 4 16 61146 0.0794 0.4193 0.04299 + 2026 4 17 61147 0.0803 0.4203 0.04183 + 2026 4 18 61148 0.0813 0.4213 0.04095 + 2026 4 19 61149 0.0823 0.4223 0.04036 + 2026 4 20 61150 0.0833 0.4233 0.04007 + 2026 4 21 61151 0.0844 0.4243 0.04013 + 2026 4 22 61152 0.0854 0.4253 0.04026 + 2026 4 23 61153 0.0865 0.4262 0.04040 + 2026 4 24 61154 0.0876 0.4271 0.04039 + 2026 4 25 61155 0.0887 0.4280 0.04013 + 2026 4 26 61156 0.0899 0.4289 0.03962 + 2026 4 27 61157 0.0910 0.4298 0.03894 + 2026 4 28 61158 0.0922 0.4307 0.03819 + 2026 4 29 61159 0.0933 0.4315 0.03743 + 2026 4 30 61160 0.0945 0.4323 0.03681 + 2026 5 1 61161 0.0957 0.4331 0.03639 + 2026 5 2 61162 0.0970 0.4339 0.03619 + 2026 5 3 61163 0.0982 0.4347 0.03616 + 2026 5 4 61164 0.0994 0.4354 0.03629 + 2026 5 5 61165 0.1007 0.4362 0.03660 + 2026 5 6 61166 0.1020 0.4369 0.03691 + 2026 5 7 61167 0.1033 0.4376 0.03721 + 2026 5 8 61168 0.1046 0.4382 0.03749 + 2026 5 9 61169 0.1059 0.4389 0.03763 + 2026 5 10 61170 0.1072 0.4395 0.03762 + 2026 5 11 61171 0.1086 0.4401 0.03744 + 2026 5 12 61172 0.1099 0.4407 0.03706 + 2026 5 13 61173 0.1113 0.4413 0.03652 + 2026 5 14 61174 0.1126 0.4418 0.03595 + 2026 5 15 61175 0.1140 0.4423 0.03555 + 2026 5 16 61176 0.1154 0.4428 0.03545 + 2026 5 17 61177 0.1168 0.4433 0.03561 + 2026 5 18 61178 0.1182 0.4438 0.03605 + 2026 5 19 61179 0.1196 0.4442 0.03672 + 2026 5 20 61180 0.1210 0.4446 0.03732 + 2026 5 21 61181 0.1224 0.4450 0.03779 + 2026 5 22 61182 0.1239 0.4454 0.03807 + 2026 5 23 61183 0.1253 0.4457 0.03818 + 2026 5 24 61184 0.1267 0.4461 0.03811 + 2026 5 25 61185 0.1282 0.4464 0.03802 + 2026 5 26 61186 0.1296 0.4466 0.03795 + 2026 5 27 61187 0.1311 0.4469 0.03798 + 2026 5 28 61188 0.1326 0.4471 0.03820 + 2026 5 29 61189 0.1340 0.4473 0.03862 + 2026 5 30 61190 0.1355 0.4475 0.03926 + 2026 5 31 61191 0.1369 0.4477 0.04005 + 2026 6 1 61192 0.1384 0.4478 0.04090 + 2026 6 2 61193 0.1399 0.4480 0.04191 + 2026 6 3 61194 0.1414 0.4481 0.04298 + 2026 6 4 61195 0.1428 0.4481 0.04399 + 2026 6 5 61196 0.1443 0.4482 0.04491 + 2026 6 6 61197 0.1458 0.4482 0.04568 + 2026 6 7 61198 0.1472 0.4482 0.04614 + 2026 6 8 61199 0.1487 0.4482 0.04638 + 2026 6 9 61200 0.1502 0.4481 0.04649 + 2026 6 10 61201 0.1516 0.4481 0.04648 + 2026 6 11 61202 0.1531 0.4480 0.04649 + 2026 6 12 61203 0.1545 0.4479 0.04661 + 2026 6 13 61204 0.1560 0.4477 0.04699 + 2026 6 14 61205 0.1574 0.4476 0.04756 + 2026 6 15 61206 0.1589 0.4474 0.04835 + 2026 6 16 61207 0.1603 0.4472 0.04924 + 2026 6 17 61208 0.1618 0.4470 0.05017 + 2026 6 18 61209 0.1632 0.4467 0.05089 + 2026 6 19 61210 0.1646 0.4464 0.05142 + 2026 6 20 61211 0.1660 0.4461 0.05178 + 2026 6 21 61212 0.1674 0.4458 0.05200 + 2026 6 22 61213 0.1688 0.4455 0.05221 + 2026 6 23 61214 0.1702 0.4451 0.05260 + 2026 6 24 61215 0.1716 0.4447 0.05320 + 2026 6 25 61216 0.1730 0.4443 0.05401 + 2026 6 26 61217 0.1743 0.4439 0.05511 + 2026 6 27 61218 0.1757 0.4434 0.05647 + 2026 6 28 61219 0.1770 0.4430 0.05798 + 2026 6 29 61220 0.1783 0.4425 0.05967 + 2026 6 30 61221 0.1797 0.4420 0.06128 + 2026 7 1 61222 0.1810 0.4414 0.06275 + 2026 7 2 61223 0.1823 0.4409 0.06403 + 2026 7 3 61224 0.1836 0.4403 0.06505 + 2026 7 4 61225 0.1848 0.4397 0.06585 + 2026 7 5 61226 0.1861 0.4391 0.06645 + 2026 7 6 61227 0.1873 0.4384 0.06686 + 2026 7 7 61228 0.1886 0.4378 0.06722 + 2026 7 8 61229 0.1898 0.4371 0.06760 + 2026 7 9 61230 0.1910 0.4364 0.06810 + 2026 7 10 61231 0.1921 0.4357 0.06889 + 2026 7 11 61232 0.1933 0.4349 0.06992 + 2026 7 12 61233 0.1945 0.4342 0.07122 + 2026 7 13 61234 0.1956 0.4334 0.07254 + 2026 7 14 61235 0.1967 0.4326 0.07391 + 2026 7 15 61236 0.1978 0.4318 0.07504 + 2026 7 16 61237 0.1989 0.4310 0.07591 + 2026 7 17 61238 0.2000 0.4301 0.07652 + 2026 7 18 61239 0.2010 0.4293 0.07702 + 2026 7 19 61240 0.2021 0.4284 0.07743 + 2026 7 20 61241 0.2031 0.4275 0.07799 + 2026 7 21 61242 0.2041 0.4266 0.07873 + 2026 7 22 61243 0.2050 0.4256 0.07969 + 2026 7 23 61244 0.2060 0.4247 0.08084 + 2026 7 24 61245 0.2069 0.4237 0.08212 + 2026 7 25 61246 0.2078 0.4227 0.08367 + 2026 7 26 61247 0.2087 0.4218 0.08531 + 2026 7 27 61248 0.2096 0.4207 0.08702 + 2026 7 28 61249 0.2105 0.4197 0.08862 + 2026 7 29 61250 0.2113 0.4187 0.09004 + 2026 7 30 61251 0.2121 0.4176 0.09130 + 2026 7 31 61252 0.2129 0.4166 0.09234 + 2026 8 1 61253 0.2136 0.4155 0.09321 + 2026 8 2 61254 0.2144 0.4144 0.09386 + 2026 8 3 61255 0.2151 0.4133 0.09435 + 2026 8 4 61256 0.2158 0.4122 0.09493 + 2026 8 5 61257 0.2165 0.4111 0.09554 + 2026 8 6 61258 0.2171 0.4099 0.09635 + 2026 8 7 61259 0.2177 0.4088 0.09737 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) - 60865 -116.77 0.98 -11.24 0.21 - 60866 -116.93 0.98 -11.18 0.21 - 60867 -116.98 0.98 -10.97 0.21 + 60868 -116.99 0.86 -10.78 0.21 + 60869 -117.02 0.86 -10.71 0.30 + 60870 -117.16 0.86 -10.75 0.30 + 60871 -117.35 0.86 -10.82 0.34 + 60872 -117.56 0.83 -10.83 0.29 + 60873 -117.79 0.83 -10.77 0.29 + 60874 -118.05 0.83 -10.70 0.29 + 60875 -118.31 0.78 -10.66 0.17 + 60876 -118.49 0.83 -10.70 0.16 + 60877 -118.55 0.83 -10.81 0.16 + 60878 -118.54 1.09 -10.92 0.16 + 60879 -118.54 0.94 -10.97 0.15 + 60880 -118.53 0.94 -10.93 0.15 + 60881 -118.44 0.94 -10.81 0.15 + + IERS Celestial Pole Offset Final Series + MJD dpsi deps + (msec. of arc) + 60828 -111.0 -11.3 + 60829 -111.7 -10.9 + 60830 -112.1 -10.8 + 60831 -112.0 -10.8 + 60832 -111.7 -10.8 + 60833 -111.7 -10.8 + 60834 -111.9 -10.9 + 60835 -112.2 -11.2 + 60836 -112.5 -11.5 + 60837 -112.7 -11.7 + 60838 -112.8 -11.7 + 60839 -112.7 -11.5 + 60840 -112.6 -11.3 + 60841 -112.5 -11.3 + 60842 -112.4 -11.3 + 60843 -112.3 -11.3 + 60844 -112.4 -11.2 + 60845 -112.6 -11.1 + 60846 -113.0 -10.9 + 60847 -113.6 -10.7 + 60848 -114.2 -10.7 + 60849 -114.6 -10.9 + 60850 -114.7 -11.2 + 60851 -114.6 -11.3 + 60852 -114.5 -11.4 + 60853 -114.3 -11.3 + 60854 -114.0 -11.2 + 60855 -114.1 -11.0 + 60856 -114.6 -10.6 + 60857 -115.3 -10.4 IAU2000A Celestial Pole Offset Series MJD dX error dY error (msec. of arc) - 60865 0.402 0.390 -0.210 0.213 - 60866 0.393 0.390 -0.229 0.213 - 60867 0.382 0.390 -0.247 0.213 + 60868 0.366 0.342 -0.270 0.206 + 60869 0.360 0.343 -0.284 0.298 + 60870 0.356 0.343 -0.292 0.298 + 60871 0.352 0.343 -0.292 0.342 + 60872 0.347 0.330 -0.282 0.288 + 60873 0.343 0.330 -0.265 0.288 + 60874 0.341 0.330 -0.243 0.288 + 60875 0.342 0.308 -0.222 0.166 + 60876 0.347 0.331 -0.202 0.164 + 60877 0.352 0.331 -0.183 0.164 + 60878 0.357 0.433 -0.166 0.157 + 60879 0.359 0.375 -0.150 0.149 + 60880 0.359 0.375 -0.135 0.149 + 60881 0.358 0.375 -0.120 0.149 + + + IAU2000A Celestial Pole Offset Final Series + MJD dX dY + (msec. of arc) + 60828 0.30 -0.23 + 60829 0.28 -0.26 + 60830 0.28 -0.28 + 60831 0.35 -0.27 + 60832 0.43 -0.24 + 60833 0.45 -0.20 + 60834 0.43 -0.18 + 60835 0.39 -0.16 + 60836 0.34 -0.15 + 60837 0.34 -0.19 + 60838 0.35 -0.25 + 60839 0.37 -0.30 + 60840 0.41 -0.34 + 60841 0.45 -0.35 + 60842 0.50 -0.35 + 60843 0.53 -0.34 + 60844 0.52 -0.32 + 60845 0.49 -0.29 + 60846 0.45 -0.27 + 60847 0.42 -0.25 + 60848 0.41 -0.25 + 60849 0.40 -0.26 + 60850 0.39 -0.27 + 60851 0.39 -0.29 + 60852 0.39 -0.32 + 60853 0.39 -0.33 + 60854 0.38 -0.28 + 60855 0.36 -0.19 + 60856 0.35 -0.10 + 60857 0.34 -0.03 )--"; diff --git a/cxx/mcc_guiding_model.h b/cxx/mcc_guiding_model.h index 0f792bb..2a38e80 100644 --- a/cxx/mcc_guiding_model.h +++ b/cxx/mcc_guiding_model.h @@ -49,7 +49,10 @@ namespace mcc struct MccSimpleGuidingModelCategory : public std::error_category { MccSimpleGuidingModelCategory() : std::error_category() {} - const char* name() const noexcept { return "ADC_GENERIC_DEVICE"; } + const char* name() const noexcept + { + return "ADC_GENERIC_DEVICE"; + } std::string message(int ec) const { @@ -169,13 +172,27 @@ public: } - error_t guiding(guiding_point_t guiding_point) { return _guidingFunc(std::move(guiding_point)); } + error_t guiding(guiding_point_t guiding_point) + { + return _guidingFunc(std::move(guiding_point)); + } - error_t stopGuiding(bool off) { _doCorrection = off; } + error_t stopGuiding(bool off) + { + _doCorrection = off; - bool inGuiding() { return _doCorrection; } + return MccSimpleGuidingModelErrorCode::ERROR_OK; + } - error_t stop() { return MccSimpleGuidingModelErrorCode::ERROR_OK; } + bool inGuiding() + { + return _doCorrection; + } + + error_t stop() + { + return MccSimpleGuidingModelErrorCode::ERROR_OK; + } protected: std::function _guidingFunc{}; @@ -184,7 +201,7 @@ protected: - error_t init(auto* p_telemetry, auto* p_hardware, auto* p_prohibited_zones) + void init(auto* p_telemetry, auto* p_hardware, auto* p_prohibited_zones) { // deduce controls types // deduce controls types diff --git a/cxx/mcc_mount_pz.h b/cxx/mcc_mount_pz.h index fc50e6f..b7b2c6f 100644 --- a/cxx/mcc_mount_pz.h +++ b/cxx/mcc_mount_pz.h @@ -1,8 +1,11 @@ #pragma once -/* MOUNT CONTROL COMPONENTS LIBRARY */ -/* PROHIBITED ZONE IMPLEMENTATION */ +/* MOUNT CONTROL COMPONENTS LIBRARY */ + + +/* PROHIBITED ZONE IMPLEMENTATION */ + #include #include @@ -37,7 +40,8 @@ public: static constexpr MccAltLimitKind altLimitKind = KIND; - typedef MccAngle coord_t; + typedef double coord_t; + // typedef MccAngle coord_t; // floating-point time duration (seconds) typedef std::chrono::duration duration_t; @@ -53,9 +57,10 @@ public: : _altLimit(alt_limit), _latitude(lat), _abs_lat(std::abs(_latitude)), _lat_lim(pi2 - _abs_lat) { _lat_lim = pi2 - _abs_lat; - _altLimit.normalize(); + // _altLimit.normalize(); + _altLimit = MccAngle(_altLimit).normalize(); - using astrom_engine_t = decltype(*astrom_engine); + using astrom_engine_t = std::remove_cvref_t; using astrom_coord_t = typename astrom_engine_t::coord_t; static_assert(std::convertible_to, @@ -212,25 +217,32 @@ public: double cos_ha = (std::sin(_altLimit) - std::sin(dec) * std::sin(_latitude)) / std::cos(dec) / std::cos(_latitude); + if (cos_ha > 1.0) { // no intersection // compute culmination points? return false; } - double cosA = -sin(dec) * std::cos(_latitude) + std::cos(dec) * std::sin(_latitude) * cos_ha; + double cosA = -std::sin(dec) * std::cos(_latitude) + std::cos(dec) * std::sin(_latitude) * cos_ha; cosA /= std::cos(_altLimit); + double sinA = std::cos(dec) * sqrt(1.0 - cos_ha * cos_ha) / cos(_altLimit); + if constexpr (KIND == MccAltLimitKind::MIN_ALT_LIMIT) { // the closest time point is one after upper culmination - az = std::acos(cosA); + az = -std::acos(cosA); + // az = atan2(cosA, sinA); } else if constexpr (KIND == MccAltLimitKind::MAX_ALT_LIMIT) { // the closest time point is one before upper // culmination - az = -std::acos(cosA); + az = std::acos(cosA); + // az = atan2(cosA, sinA); } _coord2coord(MccCoordPairKind::COORDS_KIND_AZALT, az, _altLimit, target.time_point, int_point.coordPairKind, int_point.x, int_point.y); + int_point.x = az; + return true; } @@ -238,7 +250,7 @@ private: coord_t _altLimit, _latitude, _abs_lat, _lat_lim; // wrapper function - std::function + std::function _coord2coord{}; bool doesObjectReachZone(const coord_t& dec_app) @@ -322,7 +334,8 @@ private: time_ang /= mcc_sideral_to_UT1_ratio; // to UT1 time scale - return duration_t{time_ang.seconds()}; + return duration_t{MccAngle(time_ang).seconds()}; + // return duration_t{time_ang.seconds()}; } duration_t compute(traits::mcc_mount_telemetry_data_c auto const& telemetry_data, bool before_upper_culm) diff --git a/cxx/mcc_mount_telemetry.h b/cxx/mcc_mount_telemetry.h index 0a9574b..2267385 100644 --- a/cxx/mcc_mount_telemetry.h +++ b/cxx/mcc_mount_telemetry.h @@ -19,7 +19,10 @@ enum class MccMountTelemetryErrorCode : int { ERROR_OK, ERROR_HARDWARE, ERROR_DA struct MccMountTelemetryCategory : public std::error_category { MccMountTelemetryCategory() : std::error_category() {} - const char* name() const noexcept { return "ADC_GENERIC_DEVICE"; } + const char* name() const noexcept + { + return "ADC_GENERIC_DEVICE"; + } std::string message(int ec) const { @@ -369,10 +372,10 @@ namespace traits template concept mcc_mount_default_telemetry_c = requires { - mcc_astrom_engine_c; - mcc_mount_pec_c; - mcc_mount_hardware_c; - mcc_mount_telemetry_data_c; + requires mcc_astrom_engine_c; + requires mcc_mount_pec_c; + requires mcc_mount_hardware_c; + requires mcc_mount_telemetry_data_c; requires std::derived_from>; diff --git a/cxx/tests/astrom_test.cpp b/cxx/tests/astrom_test.cpp index d40394e..c95dcf6 100644 --- a/cxx/tests/astrom_test.cpp +++ b/cxx/tests/astrom_test.cpp @@ -163,6 +163,8 @@ int main(int argc, char* argv[]) // std::cout << "\n\n\n\n"; + auto as_sgs = [](double v, bool hms = false) { return mcc::MccAngle(v).sexagesimal(hms); }; + using engine_t = mcc::astrom::erfa::MccMountAstromEngineERFA; engine_t::engine_state_t state; state.lon = 41.440732_degs; @@ -171,8 +173,8 @@ int main(int argc, char* argv[]) state.meteo = {10.0, 0.5, 1010.0}; - std::cout << "LON = " << state.lon.sexagesimal() << "\n"; - std::cout << "LAT = " << state.lat.sexagesimal() << "\n\n"; + std::cout << "LON = " << mcc::MccAngle(state.lon).sexagesimal() << "\n"; + std::cout << "LAT = " << mcc::MccAngle(state.lat).sexagesimal() << "\n\n"; engine_t erfa(state); engine_t::juldate_t jd{60861.72}; @@ -181,38 +183,38 @@ int main(int argc, char* argv[]) erfa.greg2jul(now, jd); std::cout << "MJD(" << now << ") = " << jd.mjd << "\n"; - mcc::MccAngle lst; + double lst; erfa.apparentSiderTime(jd, lst, true); - std::cout << "LST(MJD = " << jd.mjd << ") = " << lst.sexagesimal(true) << "\n\n"; + std::cout << "LST(MJD = " << jd.mjd << ") = " << mcc::MccAngle(lst).sexagesimal(true) << "\n\n"; // mcc::MccAngle ra1{"10:00:00", mcc::mcc_hms}, dec1{"68:25:10.43"}, ra_o, dec_o, ha1, az1, alt1; - mcc::MccAngle ra1{"5:00:00", mcc::mcc_hms}, dec1{"38:25:10.43"}, ra_o, dec_o, ha1, az1, alt1; - mcc::MccAngle eor; + mcc::MccAngle ra1{"5:00:00", mcc::mcc_hms}, dec1{"38:25:10.43"}; + double ra_o, dec_o, ha1, az1, alt1, eor; std::cout << "RA = " << ra1.sexagesimal(true) << ", DEC = " << dec1.sexagesimal() << "\n"; auto res = erfa.icrs2obs(ra1, dec1, jd, ra_o, dec_o, ha1, az1, alt1, eor); - std::cout << "eq of origins (from icrs2obs) = " << eor.sexagesimal(true) << "\n"; + std::cout << "eq of origins (from icrs2obs) = " << mcc::MccAngle(eor).sexagesimal(true) << "\n"; std::cout << "ret code (icrs2obs) = " << res.message() << "\n"; - std::cout << "alt = " << alt1.sexagesimal() << "\n"; - std::cout << "az = " << az1.sexagesimal() << "\n"; + std::cout << "alt = " << mcc::MccAngle(alt1).sexagesimal() << "\n"; + std::cout << "az = " << mcc::MccAngle(az1).sexagesimal() << "\n"; - std::cout << "HA_app = " << ha1.sexagesimal(true) << "\n"; - std::cout << "RA_app = " << ra_o.sexagesimal(true) << "\n"; - std::cout << "DEC_app = " << dec_o.sexagesimal() << "\n"; + std::cout << "HA_app = " << mcc::MccAngle(ha1).sexagesimal(true) << "\n"; + std::cout << "RA_app = " << mcc::MccAngle(ra_o).sexagesimal(true) << "\n"; + std::cout << "DEC_app = " << mcc::MccAngle(dec_o).sexagesimal() << "\n"; res = erfa.eqOrigins(jd, eor); - std::cout << "eq of origins (from eqOrigins) = " << eor.sexagesimal(true) << "\n"; - std::cout << "RA_app_comp = " << (lst - ha1 + eor).sexagesimal(true) << "\n"; + std::cout << "eq of origins (from eqOrigins) = " << mcc::MccAngle(eor).sexagesimal(true) << "\n"; + std::cout << "RA_app_comp = " << mcc::MccAngle(lst - ha1 + eor).sexagesimal(true) << "\n"; std::cout << "\n\n\n\n"; - mcc::MccMinAltPZ minalt_pz(10.0_degs, state.lat); - mcc::MccMaxAltPZ maxalt_pz(85.0_degs, state.lat); + mcc::MccMinAltPZ minalt_pz(10.0_degs, state.lat, &erfa); + mcc::MccMaxAltPZ maxalt_pz(85.0_degs, state.lat, &erfa); // tel_data_t tdata{std::chrono::system_clock::now(), ra_o, dec_o, ha1, az1, alt1, 0.0, 0.0, 0.0, 0.0}; mcc::MccMountTelemetryData tdata{.time_point = engine_t::timePointNow(), @@ -247,12 +249,12 @@ int main(int argc, char* argv[]) dec1 = "40:25:10.43"_dms; res = erfa.icrs2obs(ra1, dec1, jd, ra_o, dec_o, ha1, az1, alt1, eor); std::cout << "ret code (icrs2obs) = " << res.message() << "\n"; - std::cout << "alt = " << alt1.sexagesimal() << "\n"; - std::cout << "az = " << az1.sexagesimal() << "\n"; + std::cout << "alt = " << as_sgs(alt1) << "\n"; + std::cout << "az = " << as_sgs(az1) << "\n"; - std::cout << "HA_app = " << ha1.sexagesimal(true) << "\n"; - std::cout << "RA_app = " << ra_o.sexagesimal(true) << "\n"; - std::cout << "DEC_app = " << dec_o.sexagesimal() << "\n"; + std::cout << "HA_app = " << as_sgs(ha1, true) << "\n"; + std::cout << "RA_app = " << as_sgs(ra_o, true) << "\n"; + std::cout << "DEC_app = " << as_sgs(dec_o) << "\n"; // tdata = {std::chrono::system_clock::now(), ra_o, dec_o, ha1, az1, alt1, 0.0, 0.0, 0.0, 0.0}; @@ -265,7 +267,7 @@ int main(int argc, char* argv[]) jd.mjd += 1.0; res = erfa.icrs2obs(ra1, dec1, jd, ra_o, dec_o, ha1, az1, alt1, eor); - std::cout << "RA_app (+24h) = " << ra_o.sexagesimal(true) << "\n"; + std::cout << "RA_app (+24h) = " << as_sgs(ra_o, true) << "\n"; tm = maxalt_pz.timeTo(tdata); if (std::isinf(tm.count())) { @@ -285,10 +287,35 @@ int main(int argc, char* argv[]) std::cout << "(MAXALT) time from zone: " << std::chrono::hh_mm_ss(tm) << " (" << now1 << ")\n"; } + + struct cp_t { + typedef double coord_t; + typedef std::chrono::system_clock::time_point time_point_t; + + mcc::MccCoordPairKind coordPairKind; + std::chrono::system_clock::time_point time_point; + double x, y; + }; + + + cp_t tcp{.coordPairKind = mcc::MccCoordPairKind::COORDS_KIND_RADEC_ICRS, + .time_point = engine_t::timePointNow(), + .x = "17:00:00"_hms, + .y = "40:25:10.43"_dms}, + icp{.coordPairKind = mcc::MccCoordPairKind::COORDS_KIND_AZALT}; + + + // bool ok = minalt_pz.intersectPoint(tcp, icp); + bool ok = maxalt_pz.intersectPoint(tcp, icp); + + std::cout << "\nINTERSECT Az = " << as_sgs(icp.x) << "\n"; + std::cout << "INTERSECT Alt = " << as_sgs(icp.y) << "\n"; + + ra_o = 1.0; dec_o = 2.0; ha1 = ra_o * dec_o; - std::cout << "mult: " << ha1.degrees() << "\n"; + std::cout << "mult: " << mcc::MccAngle(ha1).degrees() << "\n"; return ecode; }