I need to compute the intersection(s) between two circular arcs. Each arc is specified by its endpoints and their height. The height is the perpendicular distance from the chord connecting the endpoints to the middle of the arc. I use this representation because it is numerically robust for very slightly bent arcs, as well as straight line segments, for which the height is zero. In these cases, representing an arc using the center of its circle could lead to the center being far far away from the endpoints of the arc, and hence, numerically unstable.
My question at the highest level is how I would go about computing the intersection points, given that the centers of the circles of the arcs cannot necessarily be computed robustly. At a lower level, I am wondering if there is a parameterization of an arc using only the information I have stated above (which does not include the circle center). Of course, keep in mind numerical robustness is my principal concern here; otherwise I would just do the naive thing and compute the circle center for all non-linear arcs and hope for the best.
Edit: Formula for computing center of circle of arcs:
Suppose the chord length is $2t$, and the height is $h$. The distance from the chord to the circle center is $c$, so that $r=h+c$. Then it follows that $c=(t^2-h^2)/2h$, which breaks down when $h$ is very small. Computing the location of the circle center is some simple vector arithmetic using the chord vector and its perpendicular.
This is an interesting conundrum, and what I will suggest is just one possible approach, by no means a definitive answer. Perhaps what you could do is compute Bézier curve segment approximating your arcs, and then compute the intersection between Bézier segments. To compute the Bézier segment for an arc, you need the tangent vector at one endpoint (the tangent at the other endpoint is obtained by symmetry). So this approach reduces to finding a tangent angle at one endpoint.
Let the angle subtended by an arc at the circle center be $\theta$. If the arc's chord length is $c$ and its height $h$, then, if I've calculated correctly, $$\frac{\theta}{2} = \cos^{-1} \left( \frac{c^2 - 4h^2}{c^2+4h^2} \right) \;.$$ This avoids calculating the circle radius $r = (c^2 + 4h^2)/(8h)$. Now from $\theta$ you could compute the needed tangent angle, and from there a Bézier segment.
I have not analyzed this to see if it is indeed robust.