From 3aae38c409a0c6a3288bb2347b6cc9876053f704 Mon Sep 17 00:00:00 2001 From: Matteo Cypriani Date: Mon, 9 May 2011 16:21:36 +0200 Subject: [PATCH] [Positioning] Add Request::ss_square_distance() --- owlps-positioning/src/referencepoint.cc | 3 +++ owlps-positioning/src/request.cc | 18 ++++++++++++++++++ owlps-positioning/src/request.hh | 9 +++++++++ 3 files changed, 30 insertions(+) diff --git a/owlps-positioning/src/referencepoint.cc b/owlps-positioning/src/referencepoint.cc index f02725f..2b6d667 100644 --- a/owlps-positioning/src/referencepoint.cc +++ b/owlps-positioning/src/referencepoint.cc @@ -52,6 +52,9 @@ get_all_measurements() const /** * Before to compute the distance, all the measurements containted in * #requests are put together, as if it was one big request. + * + * Note: to compute the distance between two requests, one should use + * Request::ss_square_distance(). */ float ReferencePoint::ss_square_distance(const Request &source) const { diff --git a/owlps-positioning/src/request.cc b/owlps-positioning/src/request.cc index ef3afdc..ccffeb0 100644 --- a/owlps-positioning/src/request.cc +++ b/owlps-positioning/src/request.cc @@ -58,6 +58,24 @@ void Request::clear() +/* *** Operations *** */ + + +float Request::ss_square_distance(const Request &source) const +{ + unordered_map + source_measurements(source.measurements), + my_measurements(measurements) ; + + PosUtil::complete_with_dummy_measurements( + my_measurements, source_measurements) ; + + return PosUtil::ss_square_distance( + my_measurements, source_measurements) ; +} + + + /* *** Operators *** */ diff --git a/owlps-positioning/src/request.hh b/owlps-positioning/src/request.hh index f057162..8fd6fb4 100644 --- a/owlps-positioning/src/request.hh +++ b/owlps-positioning/src/request.hh @@ -30,7 +30,10 @@ protected: /// standard positioning request) Point3D *real_position ; + /** @name Write accessors */ + //@{ void clear_real_position(void) ; + //@} public: Request(const Mobile *_mobile = NULL, @@ -83,6 +86,12 @@ public: void clear(void) ; //@} + /** @name Operations */ + //@{ + /// Compute the distance between two Request + float ss_square_distance(const Request &source) const ; + //@} + /** @name Operators */ //@{ const Request& operator=(const Request &source) ;