The problem came up doing one of my small robot experiments, the basic idea, is that each little robot has the ability to approximate the distance, from themselves to an object, however the approximate I'm getting is way too rough, and I'm hoping to calculate something more accurate.
So:
Input: A list of vertex (v_1, v_2, ... v_n)
, a vertex v_*
(robots)
Output: The coordinates for the unknown vertex v_*
(object)
Each vertex v_1
to v_n
's coordinates are well known (supplied by calling getX()
and getY()
on the vertex), and its possible to get the approximate range to v_*
by calling; getApproximateDistance(v_*)
, function getApproximateDistance()
returns two variables variables, that is; minDistance
and maxDistance
. - The actual distance lies in between these.
So what I've been trying to do to obtain the coordinates for v_*
, is to use trilateration, however I can't seem to find a formula for doing trilateration with limits (lower and upperbound), so that's really what I'm looking for (not really good enough at math, to figure it out myself).
Note: is triangulation the way to go instead?
Note: I would possibly love to know a way to do, performance/accuracy trade-offs.
An example of data:
[Vertex . `getX()` . `getY()` . `minDistance` . `maxDistance`] [`v_1` . 2 . 2 . 0.5 . 1 ] [`v_2` . 1 . 2 . 0.3 . 1 ] [`v_3` . 1.5 . 1 . 0.3 . 0.5]
Picture to show data:
It's obvious that the approximate for v_1
can be better, than [0.5; 1]
, as the figure that the above data creates is small cut of a annulus (limited by v_3
), however how would I calculate that, and possibly find the approximate within that figure (this figure is possibly concave)?