/* * This file is part of the Owl Positioning System (OwlPS). * OwlPS is a project of the University of Franche-Comté * (Université de Franche-Comté), France. */ #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::tr1::unordered_map ap_distances ; TrilaterationMethod *trilateration_method ; /** @name Operations */ //@{ double make_constant_term(const Measurement &measurement) ; void compute_ap_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(ap_distances) ; } inline Point3D TrilaterationAlgorithm::trilaterate_2d(float z) { return trilateration_method->trilaterate_2d(ap_distances, z) ; } #endif // _OWLPS_POSITIONING_TRILATERATIONALGORITHM_HH_