Circumcircle

Author

Eric W. Weisstein
August 10, 2010

This notebook downloaded from http://mathworld.wolfram.com/notebooks/PlaneGeometry/Circumcircle.nb.

For more information, see Eric's MathWorld entry http://mathworld.wolfram.com/Circumcircle.html.

©2010 Wolfram Research, Inc. except for portions noted otherwise

Diagram

V5

CircumcircleDiagram[v_List]:=Module[{},
tri=Triangle[v];
vert[i_]:=Vertices[tri][[i]];
foot[i_]:=Foot[PerpendicularBisectors[tri][[i]]];
pts={
TarryPoint,"T",SteinerPoint,"S",
Circumcenter,"O",
vert[1],"A",vert[2],"B",vert[3],"C"
};
redpts={foot[1],"(Subscript[M, A])",foot[2],"(Subscript[M, B])",foot[3],"(Subscript[M, C])"};

{
ClosedLine[v],
EqualSideTicksAboutMidpoints[tri,.05],
Circumcircle[tri],
{
Red,
PerpendicularBisectors[tri],
PointLabels[tri,redpts,.03],
PerpSquare[{#,PerpendicularLine[Circumcenter[tri],#]},.08,3]&/@Sides[tri]
},
{Green,Line[Coordinates/@{TarryPoint[tri],SteinerPoint[tri]}]},
{Blue,Line[{Coordinates@Circumcenter[tri],#}]&/@Vertices[tri]},
PointLabels[tri,pts,.03]
}
]

Show[Graphics[CircumcircleDiagram[{{0.,-.5},{1.3,1.7},{3.,-.4}}]],AspectRatio->Automatic]

V6

CircumcircleDiagram[v_List]:=Module[{tri=Triangle[v]},
{
ClosedLine[v],
EqualSideTicksAboutMidpoints[tri,.05],
Circumcircle[tri],
{
Red,
PerpendicularBisectors[tri],
PointLabels[Transpose[{
Subscript["M",#]&/@{"A","B","C"},
#[[1,2]]&/@PerpendicularBisectors[tri],
{LabelOffset->{.16,.14},LabelOffset->{-.14,.12},LabelOffset->{.02,-.16}}
}]],
PerpSquare[{#,PerpendicularLine[Circumcenter[tri],#]},.08,2]&/@Sides[tri]
},
{Green,
Line[Coordinates/@{TarryPoint[tri],SteinerPoint[tri]}],
PointLabels[{{"T",TarryPoint[tri][[1]],LabelOffset->{-.1,-.13}},{"S",SteinerPoint[tri][[1]],LabelOffset->.12}}]
},
{Blue,Line[{Coordinates@Circumcenter[tri],#}]&/@Vertices[tri]},
PointLabels[Transpose[{{"A","B","C","O"},Append[Vertices[tri],Circumcenter[tri][[1]]],{LabelOffset->-.12,LabelOffset->{.12,-.12},LabelOffset->{0,.14},LabelOffset->{.1,-.14}}}]]
(*
MyPointLabels/@{
{Circumcenter[tri],"O"},
Sequence@@Transpose[{VertexPoints[tri],{"A","B","C"}}]
}
*)
}
]
Graphics[CircumcircleDiagram[{{0.,-.5},{3.,-.4},{1.3,1.7}}]]

Three-Point Cartesian

(m=Join[{{x^2+y^2,x,y,1}},
Table[{x[i]^2+y[i]^2,x[i],y[i],1},{i,3}]
])/.a_[n_]:>Subscript[a,n]//MatrixForm//TraditionalForm

ma=Transpose[Rest[Transpose[Rest[m]]]];

MatrixForm[ma]

Equal@@Prepend[Det[ma],Coefficient[Expand[Det[m]],#^2]&/@{x,y}]

mb=Coefficient[Expand[Det[m]],#]&/@{x ,y};

mb2=Table[Transpose[Drop[Transpose[Rest[m]],{i+1}]],{i,2}];

MatrixForm/@mb2

mb[[1]]+Det[mb2[[1]]]

mb[[2]]-Det[mb2[[2]]]

mc=-Transpose[Drop[Transpose[Rest[m]],-1]];

mc//MatrixForm

SameQ@@{Det[mc],CoefficientList[Expand[Det[m]],{x,y}][[1,1]]}

Expand[Det[m]-(Det[ma](x^2+y^2)+mb[[1]] x+mb[[2]]y+Det[mc])]

Check

CircumcircleMatrix[l_List,{xx_,yy_}]:=Module[{i},
Join[{{xx^2+yy^2,xx,yy,1}},Table[{x[i]^2+y[i]^2,x[i],y[i],1},{i,3}]]/.Flatten[Table[Thread[{x[i],y[i]}->l[[i]]],{i,3}]]
]

CircumcircleConstants[l_List]:=Module[
{
m=Rest[CircumcircleMatrix[l,{xx,yy}]],
i
},
{
Det[Transpose[Rest[Transpose[m]]]],
Table[(-1)^(i+1) Det[Transpose[Drop[Transpose[m],{i+1}]]],{i,2}],
Det[Transpose[Drop[Transpose[m],-1]]]
}
]

pts={{0,0},{1,0},{4,6}};

{aa,bb,cc}=CircumcircleConstants[pts]

{Circle[bb/(2aa),Sqrt[bb.bb-4aa cc]/(2aa)],
Circumcircle[pts]}

And@@Table[pts=Table[Random[Real,{-5,5}],{3},{2}];
{aa,bb,cc}=CircumcircleConstants[pts];
Circle[bb/(2aa),Sqrt[bb.bb+4aa cc]/(2Abs[aa])]==
Circumcircle[pts],
{100}]

Equation

CircleFunction[Circumcircle]

CircleEquation[Circumcircle]

FullSimplify[DistanceTrilinears[CircleEquation[Circumcenter,Circumradius[]]],TriangleQ[]]

Center

CircleCenter[Circumcircle]

Trilinears[Circumcenter]

IncidentCenters[KimberlingCenters,α-Cos[A]]

CenterName/@%

Circle Function

IncidentCenters[KimberlingCenters,CyclicTrilinears[CircleFunction[Circumcircle]]]

CircleFunction[Circumcircle]

Radius

Together//@DistanceTrilinears[CircleRadius[Circumcircle]]

Simplify[%,a>0&&b>0&&c>0]

Circumradius[]

Incident Centers

(ctrs=IncidentCenters[KimberlingCenters,Circumcircle])//Timing

First/@ctrs

Length[ctrs]

{#,CenterName[#]}&/@ctrs//TableForm

Other diagram

Reflections[v_List,pt_]:=Module[{i},
	Point/@Table[2Perpendicular[pt,v[[{i,addn[i,1,3]}]]][[1]]-pt,{i,3}]
]

tri={{0.,-.5},{.7,1.7},{3.,-.4}};
ang=-1.6;
pt=Circumcenter[tri][[1]]+Circumradius[tri]{Cos[ang],Sin[ang]};
r=Reflections[tri,pt];
pts={pt,"P",r[[1]],"(Subscript[P, C])",r[[2]],"(Subscript[P, A])",r[[3]],"(Subscript[P, B])",
		Orthocenter,"H",tri[[1]],"A",tri[[2]],"B",tri[[3]],"C"
};

Show[Graphics[{
Triangle[tri],
PointLabels[tri,pts,.02],
Circumcircle[tri],
Reflections[tri,pt],
{
Dashing[{.02,.02}],
Table[Line[{pt,r[[i]]} /. Point->Identity],{i,3}]
},
{
Thickness[.008],
Line[LongestLine[r /. Point->Identity]]
}
}],AspectRatio->Automatic]

Orthogonality

Check

Print[Together//@DistanceTrilinears[First[OrthogonalQ[#,Circumcircle]]]//Timing]&/@{ParryCircle,StevanovicCircle}

Figure

<<Graphics`Colors`

circs={ParryCircle,StevanovicCircle,Circumcircle};
centers={"(Subscript[X, 351])","(Subscript[X, 650])","O"};
colors={Red,Orange,Yellow,Green,Blue,Indigo,Violet,Black};

t=Triangle[{{0,0},{1,0},{.0,.7}}];

Show[Graphics[{
Most@Transpose[{Take[colors,Length[circs]],Through[circs[t]]}],
{Thickness[.01],colors[[-1]],circs[[-1]][t]},
PointLabels[Join[
Transpose[{CircleCenter[#[t]]&/@circs,centers,Append[Take[colors,Length[circs]-1],colors[[-1]]]}]
],LabelOffset->.04
]
}],AspectRatio->Automatic]