66 lines
1.8 KiB
C++
66 lines
1.8 KiB
C++
/*
|
|
* This file is part of the Owl Positioning System (OwlPS) project.
|
|
* It is subject to the copyright notice and license terms in the
|
|
* COPYRIGHT.t2t file found in the top-level directory of this
|
|
* distribution and at
|
|
* http://code.lm7.fr/p/owlps/source/tree/master/COPYRIGHT.t2t
|
|
* No part of the OwlPS Project, including this file, may be copied,
|
|
* modified, propagated, or distributed except according to the terms
|
|
* contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be
|
|
* distributed along with this file, either separately or by replacing
|
|
* this notice by the COPYRIGHT.t2t file's contents.
|
|
*/
|
|
|
|
|
|
#ifndef _OWLPS_POSITIONING_TRILATERATIONALGORITHM_HH_
|
|
#define _OWLPS_POSITIONING_TRILATERATIONALGORITHM_HH_
|
|
|
|
#include "positioningalgorithm.hh"
|
|
#include "trilaterationmethod.hh"
|
|
|
|
/// Super-class of trilateration-based positioning algorithms
|
|
class TrilaterationAlgorithm: public virtual PositioningAlgorithm
|
|
{
|
|
protected:
|
|
const Request *request ;
|
|
|
|
std::unordered_map<CapturePoint*, float> cp_distances ;
|
|
TrilaterationMethod *trilateration_method ;
|
|
|
|
/** @name Operations */
|
|
//@{
|
|
double make_constant_term(const Measurement &measurement) ;
|
|
void compute_cp_distance_circles() ;
|
|
Point3D trilaterate() ;
|
|
Point3D trilaterate_2d(float z) ;
|
|
//@}
|
|
|
|
public:
|
|
TrilaterationAlgorithm(void) ;
|
|
|
|
virtual ~TrilaterationAlgorithm(void) ;
|
|
|
|
/** @name Operations */
|
|
//@{
|
|
Result compute(const Request &_request) ;
|
|
virtual float estimate_distance(const Measurement &measurement) = 0 ;
|
|
//@}
|
|
} ;
|
|
|
|
|
|
|
|
inline Point3D TrilaterationAlgorithm::trilaterate()
|
|
{
|
|
return trilateration_method->trilaterate(cp_distances) ;
|
|
}
|
|
|
|
|
|
inline Point3D TrilaterationAlgorithm::trilaterate_2d(float z)
|
|
{
|
|
return trilateration_method->trilaterate_2d(cp_distances, z) ;
|
|
}
|
|
|
|
|
|
|
|
#endif // _OWLPS_POSITIONING_TRILATERATIONALGORITHM_HH_
|