Files
mcc/tests/mcc_pzone_test.cpp
Timur A. Fatkhullin a686731c0a ...
2026-01-30 22:20:42 +03:00

71 lines
2.2 KiB
C++

#include <iostream>
#include <mcc_coordinate.h>
#include <mcc_pzone.h>
#include <mcc_pzone_container.h>
using namespace mcc::impl;
typedef MccAltLimitPZ<MccAltLimitKind::MIN_ALT_LIMIT> pz_minalt_t;
typedef MccAltLimitPZ<MccAltLimitKind::MAX_ALT_LIMIT> pz_maxalt_t;
static MccSkyPoint::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};
int main()
{
MccSkyPoint::cctEngine.setStateERFA(saoras);
pz_minalt_t MinAltPZ(10.0_degs, 43.646711_degs);
pz_maxalt_t MaxAltPZ(85.0_degs, 43.646711_degs);
MccPZoneContainer cont;
cont.addPZone(MinAltPZ);
auto sz = cont.addPZone(MaxAltPZ);
std::cout << sz << " pzones were added\n";
MccSkyPoint sp;
MccAngleAZ az = 125.1_degs;
MccAngleZD zd = 4.2_degs;
sp.from(MccSkyAZZD{az, zd});
std::vector<bool> inzone;
bool flag;
std::cout << "Sky point AZ-ZD: [" << az.degrees() << ", " << zd.degrees() << "]\n";
auto err = cont.inPZone(sp, &flag, &inzone);
if (!err) {
std::cout << "Check 'in zone' flag: common flag = " << std::boolalpha << flag << " :\n";
for (int i = 0; i < sz; ++i) {
std::cout << "\t" << i + 1 << "-th pzone: " << std::boolalpha << inzone[i] << "\n";
}
} else {
std::cout << "ERR: " << err.message() << "\n";
}
std::cout << "\n\n";
// inzone.clear();
zd = 82.4356_degs;
sp.from(MccSkyAZZD{az, zd});
std::cout << "Sky point AZ-ZD: [" << az.degrees() << ", " << zd.degrees() << "]\n";
err = cont.inPZone(sp, &flag, &inzone);
if (!err) {
std::cout << "Check 'in zone' flag: common flag = " << std::boolalpha << flag << " :\n";
for (int i = 0; i < sz; ++i) {
std::cout << "\t" << i + 1 << "-th pzone: " << std::boolalpha << inzone[i] << "\n";
}
} else {
std::cout << "ERR: " << err.message() << "\n";
}
return 0;
}