Function Repository Resource:

SubTriangle

Source Notebook

Construct special triangles of a triangle

Contributed by: Minh Trinh Xuan

ResourceFunction["SubTriangle"][tri, special]

returns the triangle identified by special fom the triangle tri.

Details

For a triangle ABC, various special triangles are defined:
AAOAanti-altimedial orthic axes triangle. Ref: X15015
Anticomplementarytriangle with ABC as medial triangle.
BCIcenters of three tangent circles of equal size.
Brocard1coincident points for lines through Brocard points.
Brocard2see references.
Brocard3isogonal conjugate of "Brocard1".
Circummedialcircumcevian triangle of the centroid.
CircumcircleMidArcmid-arc points of the circumcircle.
Circumorthiccircumcevian triangle of the orthocenter.
Contacttangency points of incircle.
Euler1midpoints to the orthocenter.
EulerGergonneSoddyright triangle formed by named lines.
Excentralcenters of excircles, also called the excenters.
Extangentstriangle tangent to the excircles.
Extouch1tangency points of excircles.
Feuerbach9-point circle tangency points with excircles.
HalfAltitudemidpoints of altitudes.
Incentralcevians of incenter.
Intangentsthe points of pairwise intersection of the three intangents
Kosnitathe circumcenters of the triangles BOC, COA, AOB
Malfatti1the vertices are the centers of the Malfatti circles
Medialmidpoints, or cevians of the centroid.
Neuberg1centers of Neuberg circles.
Neuberg2reflections of "Neuberg1".
Orthiccevians of orthocenter.
Symmedialcevians of symmedian point.
Tangentialtriangle whose incircle is the circumcircle of ABC.
Trinhcircumcenter reflection of Kosnita triangle. Ref: X7688

Examples

Basic Examples (2) 

Find and show the anticomplementary triangle:

In[1]:=
tri = Triangle[{{1, 2}, {2, -1}, {-3, 0}}];
anti = ResourceFunction["SubTriangle"][tri, "Anticomplementary"]
Out[2]=
In[3]:=
Graphics[{EdgeForm[Black], White, tri, EdgeForm[Green], Opacity[0], anti}]
Out[3]=

Find and show the first Brocard triangle:

In[4]:=
tri = Triangle[{{1, 2}, {2, -1}, {-3, 0}}];
bro1 = ResourceFunction["SubTriangle"][tri, "Brocard1"]
Out[5]=
In[6]:=
Graphics[{EdgeForm[Black], White, tri, EdgeForm[Green], Opacity[0], bro1}]
Out[6]=

Scope (3) 

Find and show the tangential triangle:

In[7]:=
tri = Triangle[{{2, 1}, {-1, 2}, {0, -3}}];
tan = ResourceFunction["SubTriangle"][tri, "Tangential"]
Out[8]=

The circumcircle of the triangle is the incircle of the tangential triangle:

In[9]:=
Graphics[{EdgeForm[Black], White, tri, EdgeForm[Green], Opacity[0], tan, Red, Opacity[1], Circumsphere[tri[[1]]]}]
Out[9]=

Find the half-altitude triangle:

In[10]:=
tri = Triangle[{{1, 2}, {2, -1}, {-3, 0}}];
half = ResourceFunction["SubTriangle"][tri, "HalfAltitude"]
Out[11]=

The half-altitude triangle is formed by the midpoints of the altitudes:

In[12]:=
Graphics[{EdgeForm[Black], White, tri, EdgeForm[Green], Opacity[0], half, Red, Opacity[1], Line /@ Transpose[{tri[[1]], ResourceFunction["SubTriangle"][tri, "Orthic"][[1]]}]}]
Out[12]=

Find and show the orthic triangle of the symmedial triangle:

In[13]:=
tri = Triangle[{{1, 2}, {2, -1}, {-3, 0}}];
sym = ResourceFunction["SubTriangle"][tri, "Symmedial"]
Out[14]=
In[15]:=
orth = ResourceFunction["SubTriangle"][sym, "Orthic"]
Out[15]=
In[16]:=
Graphics[{EdgeForm[Black], White, tri, EdgeForm[Green], Opacity[0], sym, EdgeForm[Red], Opacity[0], orth}]
Out[16]=

Possible Issues (1) 

Special triangles do not always exist:

In[17]:=
tri = Triangle[CirclePoints[3]];
Graphics[{EdgeForm[Black], White, tri, Opacity[0], Tooltip[{EdgeForm[Hue[RandomReal[{0, 1}]]], ResourceFunction["SubTriangle"][tri, #]}, #] & /@ {"AAOA", "Brocard1", "Brocard2", "Brocard3", "EulerGergonneSoddy"}}]
Out[18]=

Neat Examples (2) 

Show all triangles with Tooltip:

In[19]:=
tri = Triangle[{{2, 1}, {-1, 2}, {2, -3}}];
Graphics[{EdgeForm[Black], White, tri, Opacity[0], Tooltip[{EdgeForm[Hue[RandomReal[{0, 1}]]], ResourceFunction["SubTriangle"][tri, #]}, #] & /@ {"AAOA", "Anticomplementary", "BCI", "Brocard1", "Brocard2", "Brocard3", "Circummedial", "CircumcircleMidArc", "Circumorthic", "Contact", "Euler1", "EulerGergonneSoddy", "Excentral", "Extangents", "Extouch1", "Feuerbach", "HalfAltitude", "Incentral", "Intangents", "Kosnita", "Malfatti1", "Medial", "Neuberg1", "Neuberg2", "Orthic", "Symmedial", "Tangential", "Trinh"}}]
Out[20]=

Show all triangles in a Manipulate:

In[21]:=
Manipulate[
 Graphics[{PointSize[0.03], Blue, Point /@ {AA, BB, CC}, {LightBlue, EdgeForm[{Thick, Blue}], Triangle[{AA, BB, CC}]}, {EdgeForm[Green], Opacity[0], Tooltip[ResourceFunction["SubTriangle"][
        Triangle[{AA, BB, CC}], #], #] & /@ {"AAOA", "Anticomplementary", "BCI", "Brocard1", "Brocard2", "Brocard3", "Circummedial", "CircumcircleMidArc", "Circumorthic", "Contact",
       "Euler1", "EulerGergonneSoddy", "Excentral", "Extangents", "Extouch1", "Feuerbach", "HalfAltitude", "Incentral", "Intangents", "Kosnita", "Malfatti1", "Medial", "Neuberg1", "Neuberg2", "Orthic", "Symmedial", "Tangential", "Trinh"}}}, ImageSize -> {400, 220}, PlotRange -> {{-5.5, 5.5}, {-3.5, 3.5}}], {{AA, {1.5, 2.5}}, {-5.25, -3.25}, {5.25, 3.25}, Locator, Appearance -> None}, {{BB, {-3.5, -2}}, {-5.25, -3.25}, {5.25, 3.25}, Locator, Appearance -> None},
 {{CC, {3., -1.5}}, {-5.25, -3.25}, {5.25, 3.25}, Locator, Appearance -> None}, SaveDefinitions -> True]
Out[21]=

Find the Trinh and Kosnita triangles:

In[22]:=
tri = Triangle[{{2, 1}, {-1, 2}, {2, -3}}];
{trinh, kos} = {ResourceFunction["SubTriangle"][tri, "Trinh"], ResourceFunction["SubTriangle"][tri, "Kosnita"]}
Out[23]=

The Kosnita and Trinh triangles are symmetric around the circumcenter (in red):

In[24]:=
circ = Circumsphere /@ Subsets[Append[tri[[1]], Circumsphere[tri][[1]]], {3}]; Graphics[{EdgeForm[Black], White, tri, EdgeForm[Green], Opacity[0], trinh, kos, Red, Opacity[1], circ[[1]], Cyan, Drop[circ, 1]}]
Out[24]=

Version History

  • 1.0.0 – 07 October 2022

Related Resources

License Information