Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2013

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Apollonius' circle tactation

  • To: mathgroup at smc.vnet.net
  • Subject: [mg129635] Re: Apollonius' circle tactation
  • From: "Alexander Elkins" <alexander_elkins at hotmail.com>
  • Date: Thu, 31 Jan 2013 20:48:21 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • Delivered-to: l-mathgroup@wolfram.com
  • Delivered-to: mathgroup-newout@smc.vnet.net
  • Delivered-to: mathgroup-newsend@smc.vnet.net
  • References: <ke7uhb$4i2$1@smc.vnet.net>

If four mutually tangent circles have curvature ki (for i=1,...,4),
Descartes' theorem says:
(k1+k2+k3+k4)^2==2*(k1^2+k2^2+k3^2+k4^2).
The curvature ki is just the reciprocal of the radius ri.
Frederick Soddy rediscovered Descartes' theorem back in the 1920's.

Solve(k1+k2+k3+k4)^2==2(k1^2+k2^2+k3^2+k4^2),k4] gives:
{{k4->k1+k2+k3-2*Sqrt[k1*k2+k1*k3+k2*k3]},
 {k4->k1+k2+k3+2*Sqrt[k1*k2+k1*k3+k2*k3]}}

%/.{k1->1/a,k2->1/b,k3->1/c,k4->1/r}/.s:Sqrt[_]:>Together[s] gives:
{{1/r->1/a+1/b+1/c-2*Sqrt[(a+b+c)/(a*b*c)]},
 {1/r->1/a+1/b+1/c+2*Sqrt[(a+b+c)/(a*b*c)]}}

With i as Sqrt[(a*b*c)/(a+b+c)], the radius of the in-circle of the triangle
formed by the centers of the touching circles with radii of a, b and c, the
inner Soddy circle, touching all three circles on the inside, is given by
the reciprocal of 1/a+1/b+1/c+2/i. Note that the reciprocal of
1/a+1/b+1/c-2/i gives the radius of the outer Soddy circle which touches the
all three circles so as to enclose them. There are actually up to eight
different possible circles which touch all three circles, enclosing or not
enclosing any combination of the three circles. See
mathworld.wolfram.com/ApolloniusProblem.html for the general case of circles
touching any combination of circles, lines (infinite radius circles) and
points (zero radius circles). Here is a drawing you can manipulate showing
both the inner (Cyan) and outer (Magenta) Soddy circles:

Manipulate[With[{i=Sqrt[(a*b*c)/(a+b+c)]},
With[{r=(1/a+1/b+1/c+2/i)^-1,r2=(1/a+1/b+1/c-2/i)^-1},
With[{d=Darker[#,1/5]&,pts={{0,0},{a,0},{a+c,0},
{a+c,0}+{(a-c)/(a+c)*b-c,(2*Sqrt[a*b*c*(a+b+c)])/(a+c)}*c/(b+c),
{a+(a-c)/(a+c)*b,(2*Sqrt[a*b*c*(a+b+c)])/(a+c)},{a+(a-c)/(a+c)*b,
(2*Sqrt[a*b*c*(a+b+c)])/(a+c)}*a/(a+b),{a,i},{a+(a-c)/(a+c)*r,
(2*Sqrt[a*r*c*(a+r+c)])/(a+c)},{a+(a-c)/(a+c)*r2,
(2*Sqrt[a*r2*c*(a+r2+c)])/(a+c)}}},
Graphics[{{d@Red,Dashed,Circle[pts[[1]],a],
d@Green,Circle[pts[[3]],c],d@Blue,Circle[pts[[5]],b],
d@Yellow,Circle[pts[[7]],i],PointSize[0.02],d@Cyan,
Circle[pts[[8]],Abs@r],Tooltip@Point@pts[[8]],d@Magenta,
Circle[pts[[9]],Abs@r2],Tooltip@Point@pts[[9]]},{#1,#2[pts[[#3]]],
Text[#4,Mean[pts[[#3]]],{0,-1},-Subtract@@pts[[#3]]]}&@@@{
{d@Red,Line,{1,6},"a"},{d@Red,Line,{1,2},"a"},{d@Green,Line,
{3,2},"c"},{d@Green,Line,{3,4},"c"},{d@Blue,Line,{5,4},"b"},
{d@Blue,Line,{5,6},"b"},{d@Yellow,Line,{7,2},"i"},
{d@Yellow,Line,{7,4},"i"},{d@Yellow,Line,{7,6},"i"}}},
BaseStyle->{24,Italic}]]]],{{a,14},1,15},{{b,6},1,15},{{c,7},1,15}]

Hope this helps...

"Dr. Heinz Schumann" <schumannph at web.de> wrote in message
news:ke7uhb$4i2$1 at smc.vnet.net...

> Dear Colleagues,
> does exist a veritable and short Mathematica solution of the problem to
calculate the midpoint coordinates and the radius of a third (fourth) circle
tangent to two (three) given circles already mutual tangent.
> Best
> Heinz Schumann
>







  • Prev by Date: Re: Mathematica and Lisp
  • Previous by thread: Re: Apollonius' circle tactation
  • Next by thread: List manipulation question - 2013