Intersection of spheres
geometry/Sphere3d.H

template< class Mat,class V, class W>  VAL< Mat*>  InterSphere(const V & a, const V & b, const V & c, const W & R)
Compute the real points of intersection of 3 spheres of center a, b, c and radius r[0], r[1], r[2]. The result is a matrix of type Mat, which columns are the [1,x,y,z] coordinates of the roots. If there is no solution, the result is a 4× 2 matrix. It can be used as follows:
<B><PRE>
 Vect a(3,"0 0 0"), b(3,"0 1 0"), c(3,"1 0 0") 
 double r[]={3.618010503,2.844292531,3.176476035} 

 Mat B = InterSphere$<$ Mat$>$ (a,b,c,r) 
</PRE></B>
In order to compute these points of intersection, we construct the Bezoutian matrix of the 3 equations of spheres, obtained by hidding the variable z and we solve and a generalized eigenvector problem, using Lapack.



Intersection of torus




Intersection of 3 quadrics




The octagon problem
H. Prieto


The inverse kinematic problem of a serial robot
O. Ruatta