13 #include "det/Detector.h"
18 using namespace RdAirplane;
22 using namespace boost;
23 using namespace ROOT::Math;
26 const vector<const TimeStamp*>& pTimes,
27 const vector<const UTMPoint*>& pCoordinates,
30 _earliestTime_(**pTimes.begin()),
31 _latesTime_(**pTimes.rbegin()) {
33 vector<double> latitudes;
34 vector<double> longitudes;
35 vector<double> altitudes;
66 return pTime > _earliestTime_ && pTime < _latesTime_;
71 info <<
"Interpolating from: " << (_earliestTime_) <<
" till " << (_latesTime_);
82 return Detector::GetInstance().GetReferenceCoordinateSystem();
91 for(vector<const TimeStamp*>::const_iterator iter = pTimes.begin(); iter!=pTimes.end(); ++iter) {
98 const vector<const UTMPoint*>& pCoordinates,
99 vector<double>* p_OUT_latitudes,
100 vector<double>* p_OUT_longitudes,
101 vector<double>* p_OUT_altitudes) {
102 for(vector<const UTMPoint*>::const_iterator iter = pCoordinates.begin(); iter!=pCoordinates.end(); ++iter) {
105 p_OUT_latitudes->push_back(geodeticCoordinates.get<0>());
106 p_OUT_longitudes->push_back(geodeticCoordinates.get<1>());
107 p_OUT_altitudes->push_back(geodeticCoordinates.get<2>());
112 const vector<const UTMPoint*>& pCoordinates,
113 vector<double>* p_OUT_xs,
114 vector<double>* p_OUT_ys,
115 vector<double>* p_OUT_zs) {
116 for(vector<const UTMPoint*>::const_iterator iter = pCoordinates.begin(); iter!=pCoordinates.end(); ++iter) {
126 double xB = *pX.begin();
127 double xE = *pX.end();
129 double yB = *pY.begin();
130 double yE = *pY.end();
132 double slope = yD/xD;
133 return tuple<double, double>(yB-xB*slope,slope);
static utl::CoordinateSystemPtr _coordinateSystem()
static double _timeFromTimeStamp(const utl::TimeStamp &pTime)
Class to hold and convert a point in geodetic coordinates.
utl::Vector getDerivative(const utl::TimeStamp &pTime) const
A TimeStamp holds GPS second and nanosecond for some event.
static boost::tuple< double, double > _verySimpleLinearFit(const std::vector< double > &pX, const std::vector< double > &pY)
boost::shared_ptr< const CoordinateTransformer > CoordinateSystemPtr
Shared pointer for coordinate systems.
virtual ~Interpolator3D()
double GetX(const CoordinateSystemPtr &coordinateSystem) const
utl::Point getCoordinates(const utl::TimeStamp &pTime) const
bool isTimeInInterpolatedRange(const utl::TimeStamp &pTime) const
static void _getCoordinates(const std::vector< const utl::UTMPoint * > &pCoordinates, std::vector< double > *p_OUT_xs, std::vector< double > *p_OUT_ys, std::vector< double > *p_OUT_zs)
static void _getGeodeticCoordinates(const std::vector< const utl::UTMPoint * > &pCoordinates, std::vector< double > *p_OUT_latitudes, std::vector< double > *p_OUT_longitudes, std::vector< double > *p_OUT_altitudes)
std::string getInformation() const
ROOT::Math::Interpolator * _interpolatorZ_
double GetY(const CoordinateSystemPtr &coordinateSystem) const
double ApproximatedGPSTimeStampFromTimestamp(const utl::TimeStamp &pTimeStamp)
ROOT::Math::Interpolator * _interpolatorX_
static std::vector< double > _timesFromTimeStamps(const std::vector< const utl::TimeStamp * > &pTimes)
double GetZ(const CoordinateSystemPtr &coordinateSystem) const
Interpolator3D(const std::vector< const utl::TimeStamp * > &pTimes, const std::vector< const utl::UTMPoint * > &pCoordinates, Flight *pFlight)
Point GetPoint(const CoordinateSystemPtr &theCS=CoordinateSystemPtr()) const
Get a cartesian point from an UTMPoint.
boost::tuple< double, double, double > GetGeodeticCoordinates() const
Get geodetic latitude, longitude, height.
ROOT::Math::Interpolator * _interpolatorY_