CITE THIS NOTEBOOK: Isogonal conjugate and locus of center of inellipse in a regular triangle by Shenghui Yang. Wolfram Community FEB 20 2023.
This an epic geometric problem combining the beauty of Euclidean geometry and powerful numerical computation in WL. Given a equilateral triangle, we want to find all ellipse with fixed eccentricity that touches all three sides. This problems uses the a theorem about pedal triangle that helps us to find the possible center of the ellipse bases on an initial seeding point (as one of the foci) and its isogonal conjugate.
A general fact: the center of all inellipse are bounded in the medial triangle for arbitrary triangle https://mathworld.wolfram.com/Inellipse.html
In[]:=
vert={0,0},{2,0},1.3,
3.2
;​​ref=Triangle@vert;
In[]:=
pt=RandomPoint[ref,5000];
In[]:=
ic=Parallelize
[◼]
IsogonalConjugate
[ref,#]&/@pt;
In[]:=
Graphics​​{Transparent,EdgeForm[Thick],ref},​​{Orange,PointSize[Tiny],Point[MapThread[Midpoint[{#1,#2}]&,{pt,ic}]]},​​Transparent,EdgeForm[{Thick,Dashed,Blue}],
[◼]
SubTriangle
[ref,"Medial"]​​
Out[]=
Our numerical discussion will focus on two constraints:
1. The reference triangle is equilateral
2. The eccentricity of the inellipse is fixed

Find inellipse given one of the foci using isogonal conjugation

Say we choose
P
0
inside any reference triangle (yes, this theorem holds for arbitrary triangle, not limiting to the regular case)
In[]:=
p0={0.8,0.28};
Find its pedal triangle and that of its isogonal conjugate:
In[]:=
pedal1=
[◼]
TrianglePointData
[vert,p0,"Pedal"];
In[]:=
isoConj=
[◼]
IsogonalConjugate
[vert,p0];
In[]:=
pedal2=
[◼]
TrianglePointData
[vert,isoConj,"Pedal"];
Blue: P0, its pedal triangle and the circumcircle of the pedal triangle
Red: Q, the isogonal conjugate of P0 and its pedal triangle
Out[]=
It is amazing that the two pedal triangles shares the same circumcircle in blue.
The center of the blue circle is O, which is the midpoint of the blue and red point:
In[]:=
cricen=Midpoint[{p0,isoConj}]
Out[]=
{1.07749,0.609171}
In[]:=
TriangleConstruct[pedal1,"Circumcenter"][[1]]
Out[]=
{1.07749,0.609171}
Now use P0(blue point) as the center of homothety and apply to all points scaling transformation
In[]:=
stM=ScalingTransform[{2,2},p0];​​st=GeometricTransformation[#,stM]&;
Now the transformed blue circle has its center sitting at the original Q:
In[]:=
Graphics​​
,st/@
,​​{Dashed,Blue,Arrow[{p0,#}]&/@(stM/@pedal1[[1]])},​​{Dashed,Arrowheads[0.04],Red,Arrow[{isoConj,stM@isoConj}]},​​{Dashed,Arrowheads[0.04],Arrow[{cricen,stM@cricen}]},​​
​​//Framed
Out[]=
For P to
P
i
’s, the doubling homothety transformation is same as reflection of
P
about each side as mirror. We can also describe this action as point reflection of
P
about
P
’s foot on each side. The reflection is important because we can determine one ellipse by two foci and one tangent line. The tangent of ellipse deflects the light beam coming from one focus to the other.
Another key point here is to realize that the transformation sends the origin O to O1.O1 coincide with Q. By homothety, now Q becomes the center of circle (
P
1
P
2
P
3
). Connect
Q
P
i
’s We shall have three points as the intersections between these segments and the sides of original triangle. The inellipse that we are interested in touches the reference triangle exact at the three points.
Together with the two arguments above, we claim length of
Q
P
i
are exactly the value of major axis of the inellipse. We can easily compute the eccentricity of the inellipse by taking the ratio of
QP/
QP
1
.
In the next section, we are going to use the result above to find a quick way of generating a family of inellipse of an equilateral triangle given the reciprocal of eccentricity.

Inellipse with given eccentricity in an equilateral triangle

Use the above facts to create a function that finds the eccentricity at one given point:
In[]:=
ratioFunction[p_]:=Withic=
[◼]
IsogonalConjugate
[{0,0},{2.,0},1.,
3
,p],​​EuclideanDistance[p,ic*{1,-1}]EuclideanDistance[p,ic]
Regardless of the short form, Isogonal conjugate is a very expensive function to run repeatedly. So it is convenient to tabulate some lattice points in the region and interpolate the surface of mapping:
In[]:=
data=Flatten[Table[{x,y},ratioFunction[x,Min[y,x*
3
]],{x,Subdivide[0.001,0.999,30]},y,Subdivide[0.001,0.999*
3
,40]],1];
The Min function used here is to create a rectangular grid and make the region outside of the equilateral triangle trivial. Use Interpolation function to approximate the relation between the given point and eccentricity:
In[]:=
interpolation=Interpolation[data,InterpolationOrder->3]
Out[]=
InterpolatingFunction
Domain: {{0.001,0.999},{0.001,1.73}}
Output: scalar

Because contour plot Use the interpolation function is much fast than the raw expression for contour generation
ContourPlotinterpolation[x,y],{x,0.01,0.99},y,0.01,0.99*
3
,RegionFunction->
3
#1>#2&,

Out[]=

Computation

Given eccentricity
e=1.05
:
In[]:=
invEcc=1.05;
Find the tangent ellipse with the given parameter with different orientation:
In[]:=
sol=h/.Table[FindRoot[ratioFunction[{t,h}]==invEcc,h,t*
3
,0.01,t*
3
,Method"Secant"],{t,Subdivide[0.142,.999,500]}];
In[]:=
pts=With[{r=Subdivide[0.142,.999,500]},Transpose[{r~Join~Reverse[2-r],sol~Join~Reverse[sol]}]];
In[]:=
ic=ParallelMap
[◼]
IsogonalConjugate
[{0,0},{2.,0},1.,
3
,#]&,pts;
In[]:=
inellipseCenters=MapThread[Midpoint[{#1,#2}]&,{pts,ic}];
Create animation the trajectory of the center of inellipses:
There are some artifacts affecting the color mapping at the boundary because there are overlapping conditions. The color mapping close to the middle are more accurate.

Summary

◼
  • Use a pair of circumcenters of of isogonal conjugate pedal triangles to find the centers of inellipses.
  • ◼
  • The proof of the relation of pedal triangles and inellipse using homothety centered at the circumcenter of one of the pedal triangle
  • ◼
  • Use FindRoot to numerically find candidates given eccentricity
  • ◼
  • The locus of the center of the inellipses with fixed eccentricity are of high order