MathGroup Archive 1996

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Triangulation Problem

  • Subject: [mg3015] Re: Triangulation Problem
  • From: rusin at washington.math.niu.edu (Dave Rusin)
  • Date: 22 Jan 1996 06:32:52 -0600
  • Approved: usenet@wri.com
  • Distribution: local
  • Newsgroups: wri.mathgroup
  • Organization: NIU Mathematical Sciences
  • Sender: mj at wri.com

In article <4diafm$84a at dragonfly.wri.com>, david hoare <techie at io.org> wrote:
>
>I am looking for the trigonometric / algebreic  formulae one would use
>to triangulate an unknown position, knowing 3 fixed points and the
>respective distances to the unknown point. (make sence?)
>Oh - in 3 dimensional space. 

So you want to know what point is of distance  D1  from point P1, and likewise
of distances  D2  and  D3  from P2  and  P3  respectively.
Think geometrically!

The set of all points meeting the first condition is a sphere of radius  D1
centered at  P1. The set of points meeting the first two conditions is
then the intersection of two such spheres, which is clearly a
circle, perpendicular to the line segment joining  P1  and  P2, and of some
radius  r,  where I can compute  r  knowing the distance  D12  between 
P1  and  P2. (You'll have to draw your own picture since I failed my
kidergarten ASCII-art class): if  x  is the distance from  P1  to the
center of this circle, and thus  D12-x the distance from there to  P2,
we need  r^2+x^2=D1^2  and  r^2+(D12-x)^2=D2^2, forcing 
	x = [D12^2+D1^2-D2^2]/(2 D12)
and thus  r = sqrt(D1^2-x^2) is known.

At this point I think it's easiest to parameterize the circle: Let
v0 = (P2 - P1)/ D12  be the unit vector from P1 to P2. If  v  is any
vector at all not parallel to  v0, then the cross-products
v1 = v0 x v  and  v2 = v1 x v0  are perpendicular to each other and
to  v0.  Scale  v1  and  v2  to make them also of unit length.
Then the circle described in the previous paragraph is the set of points
	P = r cos(t) v1 + r sin(t) v2 + (P1 + x v0)

Now apply your third condition: you want  dist(P, P3) = D3. If the vector
from  P1  to  P3  is decomposed in the current coordinate system as
a v1+ b v2 + c v0, then that means you need
	D3^2 = (r cos(t)-a)^2 + (r sin(t)-b)^2 + (x-c)^2.
This is a relatively simple trigonometric equation to solve; once the
smoke clears it looks like
	A cos(t) + B sin(t) = C.
I usually solve such equations by dividing by sqrt(A^2+B^2). Choosing an
angle  u  so that  sin(u) = A/sqrt(A^2+B^2) and  cos(u)= B/sqrt(A^2+B^2),
we have just the equation
	sin(t+u) = C/sqrt(A^2+B^2).
Take arcsines and subtract  u  to discover  t; plug back into the
parameterization of the circle to find your point.

Alternatively you can replace the trig of the previous paragraph with
some algebra by parameterizing the unit circle as the set of points
of the form  ( (1-t^2)/(1+t^2), (2t)/(1+t^2) ), instead of the usual
(cos(t), sin(t)). I don't think this is particularly easier, unless you
have an aversion to trig functions and their inverses.


>And actually, the reverse operations would be handy too...ie: given a
>known central point, AND 3 other fixed points, how to find the lengths
>of the lines required to meet at that first point, in 3D.

The lengths of these lines are simply given by the distance formula
(Pythagorean theorem).

dave


  • Prev by Date: Re: Legend on graph with several plots: HOW??
  • Next by Date: Re: Re: Re: NIntegrate
  • Previous by thread: Re: Triangulation Problem
  • Next by thread: Re: Triangulation Problem