6 x0**2 + x1**2 + x2**2 - 1; x0*x3 + x1*x4 + x2*x5; x3**2 + x4**2 + x5**2 - 0.3; x3**2 + x4**2 - 2*x2*x4 + x2**2 + x5**2 + 2*x1*x5 + x1**2 - 0.25; x3**2 + 1.73205080756888*x2*x3 + 0.75*x2**2 + x4**2 - x2*x4 + 0.25*x2**2 + x5**2 - 1.73205080756888*x0*x5 + x1*x5 + 0.75*x0**2 - 0.86602540378444*x0*x1 + 0.25*x1**2 - 0.25; x3**2 - 1.63299316185545*x1*x3 + 0.57735026918963*x2*x3 + 0.66666666666667*x1**2 - 0.47140452079103*x1*x2 + 0.08333333333333*x2**2 + x4**2 + 1.63299316185545*x0*x4 - x2*x4 + 0.66666666666667*x0**2 - 0.81649658092773*x0*x2 + 0.25*x2**2 + x5**2 - 0.57735026918963*x0*x5 + x1*x5 + 0.08333333333333*x0**2 - 0.28867513459481*x0*x1 + 0.25*x1**2 - 0.25; TITLE : 12 real lines tangent to four given spheres. REFERENCES : Original formulation as polynomial system : Cassiano Durand (crbd@cs.purdue.edu, http://www.cs.purdue.edu/people/crbd). Positioning of the centers of the spheres at the vertices of a tetrahedron, with suggestion to enlarge radii : Thorsten Theobald. (theobald@mathematik.tu-muenchen.de, http://www-m9.mathematik.tu-muenchen.de/~theobald/) Frank Sottile: "From Enumerative Geometry to Solving Systems of Polynomial Equations". In "Computations in Algebraic Geometry with Macaulay 2", edited by David Eisenbud, Daniel R. Grayson, Michael Stillman, and Bernd Sturmfels, Volume 8 of Algorithms and Computation in Mathematics, pages 101-129, Springer-Verlag, 2002. Frank Sottile and Thorsten Theobald: "Lines tangents to 2n - 2 spheres in R^n". Trans. Amer. Math. Soc., 354:4815--4829, 2002. DESCRIPTION : c1 = (0, 0, 0) c2 = (1, 0, 0); c3 = (1/2, sqrt(3)/2, 0) c4 = (1/2, sqrt(3)/6, sqrt(6)/3); Tangent vector t = (x0,x1,x2) and moment vector m = (x3,x4,x5). The first equation is ||t||=1, the second m.t = 0, the other equations are ||m + c_i x t ||^2 - r^2 = 0. The radius of the first sphere is enlarged so that r^2 = 0.3. The radii of the other spheres are 0.5. Some constants that are approximated : sqrt(3) = 1.73205080756888 sqrt(3)/2 = 0.86602540378444 sqrt(3)/3 = 0.57735026918963 sqrt(3)/6 = 0.28867513459481 sqrt(6)/3 = 0.81649658092773 sqrt(6)*2/3 = 1.63299316185545 sqrt(6)*sqrt(3)/9 = 0.47140452079103 1/12 = 0.08333333333333 2/3 = 0.66666666666667 Because (t,p) and (-t,-p) represent the same line, there are 12 tangent lines. THE SOLUTIONS : 24 6 =========================================================== solution 1 : t : 1.00000000000000E+00 0.00000000000000E+00 m : 1 the solution for t : x0 : -1.43102286084844E-01 1.79276319039945E-62 x1 : -6.40171251688474E-01 -1.79276319039945E-62 x2 : -7.54786396425442E-01 1.33697593860298E-62 x3 : 1.69934603999895E-01 -1.42813338896227E-62 x4 : -4.12550523019043E-01 1.06350358752510E-62 x5 : 3.17685845325398E-01 1.33697593860298E-62 == err : 1.547E-15 = rco : 2.573E-02 = res : 1.704E-16 == solution 2 : t : 1.00000000000000E+00 0.00000000000000E+00 m : 1 the solution for t : x0 : -6.25955709777127E-01 1.23464623112765E-57 x1 : 1.96155410755113E-01 1.75240110224570E-57 x2 : -7.54786396425443E-01 -7.56718657787915E-58 x3 : 2.72311931279100E-01 -1.99136488891557E-58 x4 : -3.53442945555486E-01 -3.98272977783113E-58 x5 : -3.17685845325391E-01 -3.98272977783113E-58 == err : 1.334E-15 = rco : 6.301E-02 = res : 2.290E-16 == solution 3 : t : 1.00000000000000E+00 0.00000000000000E+00 m : 1 the solution for t : x0 : -3.80665581868995E-01 -4.66726145839586E-61 x1 : 5.11993743627026E-01 -7.77876909732643E-61 x2 : -7.70036441518921E-01 4.86173068582902E-61 x3 : 2.27441105124784E-01 5.83407682299482E-62 x4 : -3.55691615760317E-01 6.80642296016062E-61 x5 : -3.48932684306632E-01 -3.50044609379689E-61 == err : 1.923E-15 = rco : 2.817E-02 = res : 4.094E-16 == solution 4 : t : 1.00000000000000E+00 0.00000000000000E+00 m : 1 the solution for t : x0 : -6.71265049771219E-01 2.58279442684667E-63 x1 : 6.79771424646732E-01 3.95015618223608E-63 x2 : -2.95489497595760E-01 1.06350358752510E-63 x3 : 2.73861116201760E-01 7.14040156441371E-64 x4 : 6.62646433320782E-02 -3.79822709830392E-65 x5 : -4.69690415142569E-01 3.98813845321912E-64 == err : 1.350E-15 = rco : 3.103E-02 = res : 2.429E-16 == solution 5 : t : 1.00000000000000E+00 0.00000000000000E+00 m : 1 the solution for t : x0 : -3.80665581869013E-01 5.22839756023991E-62 x1 : -5.55332738202709E-01 1.21543267145725E-63 x2 : 7.39391144564639E-01 3.52475474722604E-62 x3 : -2.27441105124789E-01 8.28013507430254E-63 x4 : 4.47540761587898E-01 -9.87539045559019E-64 x5 : 2.19038376584879E-01 1.29139721342333E-62 == err : 1.380E-15 = rco : 3.043E-02 = res : 1.596E-16 == solution 6 : t : 1.00000000000000E+00 0.00000000000000E+00 m : 1 the solution for t : x0 : -8.72633177299453E-01 -5.74226793183870E-53 x1 : -2.18976395263573E-01 2.08809742975953E-53 x2 : 4.36532560290333E-01 1.14845358636774E-52 x3 : -2.25263630757588E-01 -3.65417050207917E-53 x4 : 4.44494751511597E-01 2.61012178719941E-53 x5 : -2.27333922977968E-01 -5.22024357439882E-53 == err : 2.148E-15 = rco : 2.780E-02 = res : 3.747E-16 == solution 7 : t : 1.00000000000000E+00 0.00000000000000E+00 m : 1 the solution for t : x0 : -6.71265049771223E-01 -1.05590713332849E-62 x1 : -5.19996951435873E-02 -2.70433769399239E-62 x2 : 7.39391144564642E-01 -1.21543267145725E-62 x3 : -2.73861116201760E-01 2.50682988488059E-63 x4 : 4.20740155696822E-01 5.16558885369333E-63 x5 : -2.19038376584882E-01 5.61698206620287E-63 == err : 1.663E-15 = rco : 2.706E-02 = res : 3.123E-16 == solution 8 : t : 1.00000000000000E+00 0.00000000000000E+00 m : 1 the solution for t : x0 : -1.43102286084821E-01 2.61128113008394E-64 x1 : -9.25009856242540E-01 4.67359974986615E-66 x2 : -3.51963778777665E-01 -1.18694596821997E-65 x3 : -1.69934603999891E-01 1.54302975868597E-65 x4 : -1.62000246349090E-01 -2.72997572690594E-65 x5 : 4.94851644986893E-01 -1.57270340789147E-65 == err : 4.420E-15 = rco : 2.810E-02 = res : 4.337E-16 == solution 9 : t : 1.00000000000000E+00 0.00000000000000E+00 m : 1 the solution for t : x0 : -8.72633177299466E-01 1.70160574004016E-62 x1 : 3.38574713032152E-01 3.00819586185670E-62 x2 : -3.51963778777639E-01 -9.95135499755627E-63 x3 : 2.25263630757580E-01 7.86233009348911E-63 x4 : 6.61675608714289E-02 -9.83740818460715E-63 x5 : -4.94851644986898E-01 2.35490080094843E-63 == err : 1.559E-15 = rco : 2.743E-02 = res : 1.596E-16 == solution 10 : t : 1.00000000000000E+00 0.00000000000000E+00 m : 1 the solution for t : x0 : -2.53066797625170E-01 2.12700717505019E-62 x1 : 9.21218298097868E-01 1.29139721342333E-63 x2 : 2.95489497595785E-01 9.72346137165803E-63 x3 : 1.94317422599166E-01 -2.43086534291451E-63 x4 : 2.04038362073452E-01 2.46884761389755E-63 x5 : -4.69690415142570E-01 5.50742929254068E-64 == err : 2.351E-15 = rco : 2.633E-02 = res : 1.908E-16 == solution 11 : t : 1.00000000000000E+00 0.00000000000000E+00 m : 1 the solution for t : x0 : -6.25955709777125E-01 0.00000000000000E+00 x1 : -6.46234302094660E-01 -4.27300548559191E-64 x2 : 4.36532560290345E-01 -5.69734064745588E-64 x3 : -2.72311931279100E-01 -2.84867032372794E-65 x4 : 4.17331402540592E-01 -1.70920219423676E-64 x5 : 2.27333922977959E-01 3.94066061449032E-64 == err : 1.636E-15 = rco : 3.234E-02 = res : 1.596E-16 == solution 12 : t : 1.00000000000000E+00 0.00000000000000E+00 m : 1 the solution for t : x0 : -2.53066797625191E-01 -2.73472351077882E-63 x1 : 5.85662936058455E-01 -8.73592232609901E-64 x2 : 7.70036441518920E-01 5.31751793762549E-64 x3 : -1.94317422599172E-01 -2.65875896881274E-64 x4 : 3.74815582783031E-01 6.07716335728627E-64 x5 : -3.48932684306632E-01 3.41840438847353E-64 == err : 2.018E-15 = rco : 2.710E-02 = res : 1.110E-16 == solution 13 : t : 1.00000000000000E+00 0.00000000000000E+00 m : 1 the solution for t : x0 : 2.53066797625191E-01 -5.92523427335411E-63 x1 : -5.85662936058455E-01 -3.07656394962617E-63 x2 : -7.70036441518920E-01 9.49556774575980E-64 x3 : 1.94317422599172E-01 -9.80417369749699E-64 x4 : -3.74815582783031E-01 -1.89911354915196E-65 x5 : 3.48932684306632E-01 6.17211903474387E-64 == err : 1.483E-15 = rco : 2.710E-02 = res : 1.110E-16 == solution 14 : t : 1.00000000000000E+00 0.00000000000000E+00 m : 1 the solution for t : x0 : 6.25955709777125E-01 -4.08309413067671E-64 x1 : 6.46234302094660E-01 4.93769522779510E-64 x2 : -4.36532560290345E-01 3.41840438847353E-64 x3 : 2.72311931279100E-01 -4.74778387287990E-66 x4 : -4.17331402540592E-01 2.84867032372794E-64 x5 : -2.27333922977959E-01 -4.74778387287990E-64 == err : 1.636E-15 = rco : 3.234E-02 = res : 1.596E-16 == solution 15 : t : 1.00000000000000E+00 0.00000000000000E+00 m : 1 the solution for t : x0 : 2.53066797625170E-01 -1.15466103788439E-62 x1 : -9.21218298097868E-01 -9.11574503592941E-64 x2 : -2.95489497595785E-01 -4.25401435010039E-63 x3 : -1.94317422599166E-01 -1.51929083932157E-64 x4 : -2.04038362073452E-01 -3.00059940766010E-63 x5 : 4.69690415142570E-01 -3.01959054315162E-63 == err : 2.351E-15 = rco : 2.633E-02 = res : 1.908E-16 == solution 16 : t : 1.00000000000000E+00 0.00000000000000E+00 m : 1 the solution for t : x0 : 8.72633177299466E-01 2.84867032372794E-64 x1 : -3.38574713032152E-01 6.07716335728627E-64 x2 : 3.51963778777639E-01 1.29139721342333E-63 x3 : -2.25263630757580E-01 -1.06350358752510E-63 x4 : -6.61675608714289E-02 8.35609961626862E-64 x5 : 4.94851644986898E-01 -2.39058931669106E-64 == err : 1.559E-15 = rco : 2.743E-02 = res : 1.596E-16 == solution 17 : t : 1.00000000000000E+00 0.00000000000000E+00 m : 1 the solution for t : x0 : 1.43102286084821E-01 -1.19881542790217E-64 x1 : 9.25009856242540E-01 5.93472984109987E-67 x2 : 3.51963778777665E-01 5.93472984109987E-66 x3 : 1.69934603999891E-01 -4.30267913479741E-66 x4 : 1.62000246349090E-01 1.51335610948047E-65 x5 : -4.94851644986893E-01 6.89912344027860E-66 == err : 4.420E-15 = rco : 2.810E-02 = res : 4.337E-16 == solution 18 : t : 1.00000000000000E+00 0.00000000000000E+00 m : 1 the solution for t : x0 : 6.71265049771223E-01 1.82314900718588E-62 x1 : 5.19996951435873E-02 3.72545613959992E-62 x2 : -7.39391144564642E-01 1.70160574004016E-62 x3 : 2.73861116201760E-01 -4.02612072420215E-63 x4 : -4.20740155696822E-01 -7.44452511267568E-63 x5 : 2.19038376584882E-01 -7.14066694481137E-63 == err : 1.663E-15 = rco : 2.706E-02 = res : 3.123E-16 == solution 19 : t : 1.00000000000000E+00 0.00000000000000E+00 m : 1 the solution for t : x0 : 8.72633177299453E-01 3.65417050207917E-52 x1 : 2.18976395263573E-01 3.96738511654310E-52 x2 : -4.36532560290333E-01 4.38500460249501E-52 x3 : 2.25263630757588E-01 1.07014993275176E-52 x4 : -4.44494751511597E-01 -6.75369012437847E-53 x5 : 2.27333922977968E-01 -3.65417050207917E-53 == err : 5.548E-15 = rco : 2.780E-02 = res : 2.151E-16 == solution 20 : t : 1.00000000000000E+00 0.00000000000000E+00 m : 1 the solution for t : x0 : 3.80665581869013E-01 -8.14339889876360E-62 x1 : 5.55332738202709E-01 -1.45851920574871E-62 x2 : -7.39391144564640E-01 -6.80642296016062E-62 x3 : 2.27441105124789E-01 -1.85353482397231E-62 x4 : -4.47540761587898E-01 -9.72346137165803E-63 x5 : -2.19038376584879E-01 -3.03858167864314E-63 == err : 1.516E-15 = rco : 3.043E-02 = res : 2.498E-16 == solution 21 : t : 1.00000000000000E+00 0.00000000000000E+00 m : 1 the solution for t : x0 : 6.71265049771219E-01 -4.25401435010039E-63 x1 : -6.79771424646732E-01 -6.68487969301490E-63 x2 : 2.95489497595760E-01 -3.34243984650745E-63 x3 : -2.73861116201760E-01 -9.49556774575980E-64 x4 : -6.62646433320782E-02 -7.59645419660784E-64 x5 : 4.69690415142569E-01 -7.97627690643823E-64 == err : 1.350E-15 = rco : 3.103E-02 = res : 2.429E-16 == solution 22 : t : 1.00000000000000E+00 0.00000000000000E+00 m : 1 the solution for t : x0 : 3.80665581868995E-01 8.75111523449223E-62 x1 : -5.11993743627026E-01 1.06958075088238E-61 x2 : 7.70036441518921E-01 -4.61864415153757E-62 x3 : -2.27441105124784E-01 -1.70160574004016E-62 x4 : 3.55691615760317E-01 -6.56333642586917E-62 x5 : 3.48932684306632E-01 3.70706964794463E-62 == err : 1.923E-15 = rco : 2.817E-02 = res : 4.094E-16 == solution 23 : t : 1.00000000000000E+00 0.00000000000000E+00 m : 1 the solution for t : x0 : 6.25955709777127E-01 6.37236764452981E-58 x1 : -1.96155410755113E-01 -1.21074985246066E-56 x2 : 7.54786396425443E-01 -3.14635652448659E-57 x3 : -2.72311931279100E-01 1.61300556002161E-57 x4 : 3.53442945555486E-01 -4.73944843561905E-57 x5 : 3.17685845325391E-01 6.05374926230332E-57 == err : 1.334E-15 = rco : 6.301E-02 = res : 2.290E-16 == solution 24 : t : 1.00000000000000E+00 0.00000000000000E+00 m : 1 the solution for t : x0 : 1.43102286084844E-01 2.43086534291451E-63 x1 : 6.40171251688474E-01 -2.35490080094843E-63 x2 : 7.54786396425442E-01 3.89318277576152E-64 x3 : -1.69934603999895E-01 -4.38318463518646E-64 x4 : 4.12550523019043E-01 1.40534402637245E-63 x5 : -3.17685845325398E-01 3.03858167864314E-63 == err : 1.547E-15 = rco : 2.573E-02 = res : 1.704E-16 ==