I have the following problem:
I know the center points and radii of three circles. I want to slowly increase each circle's radius until all three circles intersect. They are guaranteed to intersect at some unknown point, $[x_i,y_i]$. I need to implement this algorithmically.
My solution is based on the answer to this question on SO, contributed by Paul Bourke (similar solutions can be found elsewhere): https://stackoverflow.com/questions/3349125/circle-circle-intersection-points. This is, of course, a solution for the intersection of two circles. However, it is so easy to implement that I chose to use this instead of the more complex solution for three circles. Since I know an intersection point does exist, I simply use this solution to determine what/if solution a exists for the intersection of the first and second circle, the first and third circle, and so on, simultaneously with each iteration.
Now, in practice I can only add a small discrete amount to the radius of each circle. So, it may be that they never actually intersect at precisely one point in my model. What I've done to compensate for that is add a threshold to the "check if a solution exists" step. Here's what I mean:
To check if a solution is possible, as per Bourke's solution, we determine whether $d \geq r_0 + r_1$. In my implementation, I've added a small threshold, so instead I'm checking whether $(d-\text{threshold}) > r_0 + r_1$, where the threshold is maybe something like $0.0001$ units. If this statement is false, I then move onto the following steps to compute the intersection point.
Is this modification valid? I've given it some thought, and I'm not entirely sure what implications this modifcation has on the reliability of my solutions. Is this a
The first two circles determine two intersections. To check if the third circle passes through it, it suffices to compute the distance to its center and compare to the expected radius. The condition should be
$$|d-r_3|<\theta$$ where $\theta$ is some tolerance (which depends on the accuracy of your data).