5

I'm trying to write a function that solves the three point resection problem using Tienstra method. I gathered a lot of papers and books about this problem, and each one of them states:

If the unknown point P lies on a circle defined by the three known control points then the solution is indeterminate or not uniquely possible. There are, theoretically, an infinite number of solutions for the observed angles. If the geometry is close to this, then the solution is weak.

Currently my function solves all of the examples found in these books, but I don't know how to check if 4 points are concyclic at the beginning of the function (in order to throw exception).

I hope that you can understand the problem. At the beginning I only have 3 known points and I need to determine fourth point. So I cannot check if 4 points are on the same circle because there are no 4 known points to begin with. I would also like to mention that solution in this special case is sometimes NaN but mostly it is some "random" number.

Are there any methods to catch this kind of an error?

Example:

Let's use a square with these points:

A (0,0)
B (0,1)
C (1,1)
D (1,0)

Imagine that I measured angles from "unknown" point A.

If I put those angles and points B, C, D into my function, than I should expect my result to be (0,0). But because these points are concycllic I am bound to get wrong result, something like (1.615,1.615).

I need to tell the end-user that this answer is wrong because points are concyclic. I just don't see any way to tell if result is correct or not.

0

2 Answers 2

3

Let's start by providing some missing details (because I doubt most readers know what the Tienstra resection problem is).

There are three control points A, B, C, visible from an unknown point P. Angles at P between points A, B, C are observed, via theodolite or sextant, as α, β, γ. Angles at the corners of the triangle ABC are calculated, via simple COGO, as A, B, C. Tienstra provides a solution for calculating the coordinates at P.

The following image is from engineeringsurveyor.com:

enter image description here

The closer P is to the center of the triangle, the stronger is the solution. The closer it is to being on the "danger circle" (or being concyclic as you say) the less reliable (or even impossible) is the solution.

Now to ponder the actual answer to your question:

It looks like critical parts of this numerical methods problem involve the cotangent function:

enter image description here

Whenever any of the 6 angles α, β, γ, A, B, C approach multiples of π (or 180°), the relevant cotangent value approaches +/– infinity, so that's one thing to check for. Another check would be whenever any of these get close to being true:

α = A, β = B, γ = C, or, of course:

α = A +/– π, β = B +/– π, γ = C +/– π

4
  • I've never tried to program the solution, so i can't say definitively, but i think the above is along the right track.
    – Martin F
    Commented Oct 4, 2014 at 19:15
  • This is an excellent answer. We tested if α = A or β = B or γ = C on many examples and it worked flawlessly. This is exactly what we needed. Thank you. Commented Oct 5, 2014 at 19:30
  • @ZoranPetrović - Presumably, you're checking for near equality, too. Also, note i added some +/- pi to the checks...
    – Martin F
    Commented Oct 5, 2014 at 21:45
  • I can't thank you enough. We still need to test what to consider "near enough" in order to determine if results are valid. If you have any suggestion I would really appreciate it. Your solution should be in every geomatics book. Commented Oct 8, 2014 at 11:38
0

If you want to know how to tell if four points lie on a circle, you will find the answer in the middle of the text at www.threepointresection.com. This site gives a solution to the three point resection and Hansen's problem as well.

1
  • Welcome to GIS SE. As a new user please take the Tour. As web links can disappear without warning, please edit your answer to include the required process and use your link as reference.
    – Midavalo
    Commented Oct 2, 2016 at 21:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.