#include #include "../mcc_ccte_erfa.h" #include "../mcc_pzone.h" using namespace mcc::ccte::erfa; int main() { MccCCTE_ERFA::engine_state_t state{.lat = 43.646711_degs, .lon = 41.440732_degs, .elev = 2100.0}; state.meteo = {10.0, 0.5, 1010.0}; MccCCTE_ERFA erfa(state); std::cout << "LAT = " << mcc::MccAngle(state.lat).sexagesimal() << "\n"; std::cout << "LON = " << mcc::MccAngle(state.lon).sexagesimal() << "\n"; auto now = std::chrono::system_clock::now(); mcc::MccCelestialPoint cp{ .pair_kind = mcc::MccCoordPairKind::COORDS_KIND_RADEC_ICRS, .X = "10:20:30.44"_hms, .Y = "20:30:40.55"_dms}; mcc::MccEqtHrzCoords eqhrz; eqhrz.time_point = now; auto ret = erfa.transformCoordinates(cp, &eqhrz); std::cout << "ret = " << ret.message() << "\n"; std::cout << "RA_ICRS = " << mcc::MccAngle(cp.X).sexagesimal(true) << "\n"; std::cout << "DEC_ICRS = " << mcc::MccAngle(cp.Y).sexagesimal() << "\n\n"; std::cout << "time point = " << eqhrz.time_point << "\n"; std::cout << "RA_APP = " << mcc::MccAngle(eqhrz.RA_APP).sexagesimal(true) << "\n"; std::cout << "DEC_APP = " << mcc::MccAngle(eqhrz.DEC_APP).sexagesimal() << "\n"; std::cout << "HA = " << mcc::MccAngle(eqhrz.HA).sexagesimal(true) << "\n"; std::cout << "AZ = " << mcc::MccAngle(eqhrz.AZ).sexagesimal() << "\n"; std::cout << "ZD = " << mcc::MccAngle(eqhrz.ZD).sexagesimal() << "\n"; std::cout << "ALT = " << mcc::MccAngle(eqhrz.ALT).sexagesimal() << "\n"; std::cout << "\n\n"; mcc::MccJulianDay jd; ret = erfa.timepointToJulday(now, &jd); std::cout << "ret = " << ret.message() << "\n"; std::cout << "JD = " << std::setprecision(12) << (double)jd << "\n"; mcc::MccAngle lst, eo; ret = erfa.timepointToAppSideral(now, &lst, true); std::cout << "LST = " << lst.sexagesimal(true) << "\n"; ret = erfa.equationOrigins(now, &eo); std::cout << "EO = " << eo.sexagesimal(true) << "\n"; std::cout << "\n\n"; mcc::MccAltLimitPZ altmin(10.0_degs, state.lat, &erfa); bool inzone; std::cout << "time point = " << eqhrz.time_point << "\n"; ret = altmin.inPZone(eqhrz, &inzone); std::cout << "ret = " << ret.message() << "\n"; std::cout << "ALTMIN: inZone = " << std::boolalpha << inzone << "\n"; std::chrono::duration dsec; ret = altmin.timeToPZone(eqhrz, &dsec); std::cout << "ret = " << ret.message() << "\n"; std::cout << "TIME TO ZONE: " << dsec << " (" << now + std::chrono::duration_cast(dsec) << ")\n"; mcc::MccCelestialPoint icp{.pair_kind = mcc::MccCoordPairKind::COORDS_KIND_AZALT, .time_point = now}; ret = altmin.intersectPZone(eqhrz, &icp); std::cout << "ret = " << ret.message() << "\n"; std::cout << "INTERSEC AZ = " << mcc::MccAngle(icp.X).sexagesimal() << "\n"; std::cout << "INTERSEC ALT = " << mcc::MccAngle(icp.Y).sexagesimal() << "\n"; return 0; }