I know CGA can be used to do trilateration (see Wikipedia::True-range_multilateration) easily. This is simply finding the point pp2 in https://enkimute.github.io/ganja.js/examples/coffeeshop.html#cga2d_points_and_circles. (By the way, trilateration is not triangulation. This is the case where we know the radii but not the direction.)
But I’m interested in what I would call higher-order trilateration problems. See my image for an explanation of - what I’m calling - Second-Order Trilateration.
How I’ve solved this in the past is to set up an optimization - minimum least squares error for the 6 variables (x and y of Q, R, and S). But I’d love to know if the optimization can be avoided. What do you think?
I should point out that doing this in 3D is a separate (but interesting!) issue.
hmm, no other responses. Well, after thinking through the equations a bit - I’m thinking this nonlinear problem is still nonlinear under CGA. Whether or not it is an easier nonlinear problem is unclear.
Out of curiosity, what’s the context where you can learn all of these radii but not the positions?
Edit: You can at the very least cut your problem from 6 unknowns down to 3 unknowns (orientations of vectors Q–A, R–B, S–C expressed terms of angle measure or half-tangent).
one application is in various uses of sonar. Say, for example, with drone data, but that’s all I’m going to say about that.
Another is kinematics where the known lengths are fixed distances between joints.
You’re right about the variable reduction! in fact, you could even do it in two variables since the triangle (QRS) can be predefined. and you only need the angle of AQ and the horizontal and QS and the horizontal (or angle AQS). In terms of solving ease, my intuition tells me angles are harder to solve that coordinates though, but nonlinear programming can be hard to predict.
my intuition tells me angles are harder to solve than coordinates though
The standard approach in kinematics of linkages is to use half-tangents of angles (one dimensional stereographic projection). Then you get some rational equations which can be thrown into computer solvers. Disclaimer: I am not an expert about this.