mirror of
https://github.com/SatDump/SatDump
synced 2026-08-13 17:47:30 -04:00
47 lines
No EOL
1.6 KiB
C++
47 lines
No EOL
1.6 KiB
C++
#pragma once
|
|
|
|
#include "common/geodetic/geodetic_coordinates.h"
|
|
#include "libs/predict/predict.h"
|
|
#include "tle.h"
|
|
#include "interpolator.h"
|
|
|
|
namespace satdump
|
|
{
|
|
class SatelliteTracker
|
|
{
|
|
private:
|
|
predict_orbital_elements_t *satellite_object = nullptr;
|
|
predict_position satellite_orbit;
|
|
|
|
LinearInterpolator *interp_x = nullptr;
|
|
LinearInterpolator *interp_y = nullptr;
|
|
LinearInterpolator *interp_z = nullptr;
|
|
LinearInterpolator *interp_vx = nullptr;
|
|
LinearInterpolator *interp_vy = nullptr;
|
|
LinearInterpolator *interp_vz = nullptr;
|
|
|
|
public:
|
|
SatelliteTracker(TLE tle); // From TLE
|
|
SatelliteTracker(nlohmann::json ephem); // From Ephemeris
|
|
~SatelliteTracker();
|
|
|
|
geodetic::geodetic_coords_t get_sat_position_at(double utc_time);
|
|
predict_position get_sat_position_at_raw(double utc_time);
|
|
|
|
// TODOREWORK. This is bad but will get re-rewritten so...
|
|
predict_observation get_observed_position(double utc_time, double gs_lat, double gs_lon, double gs_alt)
|
|
{
|
|
predict_observation observation_pos;
|
|
predict_position satellite_orbit2;
|
|
|
|
predict_observer_t *observer_station = predict_create_observer("Main", gs_lat * DEG_TO_RAD, gs_lon * DEG_TO_RAD, gs_alt);
|
|
|
|
predict_orbit(satellite_object, &satellite_orbit2, predict_to_julian_double(utc_time));
|
|
predict_observe_orbit(observer_station, &satellite_orbit2, &observation_pos);
|
|
|
|
predict_destroy_observer(observer_station);
|
|
|
|
return observation_pos;
|
|
}
|
|
};
|
|
} // namespace satdump
|