Diagram

Ceva, Kiepert, and Jacobi

Equal-angle, three-angle, and incircle-ray configurations for one concurrence criterion

The Kiepert, Jacobi, and Kariya configurations, with the paired angles and concurrent lines used in the trigonometric-Ceva proof.

Methods Ceva's theorem · Trigonometric Ceva · Sine rule · External triangles

Drawing tool: tkz-euclideSource available

Completed figures

Triangle ABC with three similarly oriented similar isosceles triangles constructed externally, and the lines AX, BY, CZ meeting at K.
Figure 1. Equal base angles produce Kiepert’s three concurrent lines.
Triangle ABC with three external points X, Y, Z, paired angles alpha, beta, gamma, and the lines AX, BY, CZ meeting at J.
Figure 2. Jacobi’s paired angle conditions give the concurrence of AX, BY, CZ.
Triangle ABC with incircle center I and contact points D, E, F; points X, Y, Z lie beyond the contact points with IX, IY, IZ equal, and the dashed lines AX, BY, CZ meet at one point.
Figure 3. Kariya’s construction realizes Jacobi’s paired-angle conditions.

Complete source

Kiepert’s theorem
% Figure for a Classical Theorem Note
% Article: From Ceva to Kiepert and Jacobi
% Figure: Kiepert's equal-angle configuration
% Site: Elementary Geometry
% Website: https://elementarygeometry.org/
% Drawing tool: tkz-euclide
% Output format: SVG
% Standard plate: 5:4
% Last verified: 2026-09-04
% Accent target: none
% Parameter: theta = 26 degrees
%
% Editable source for public/diagrams/kiepert-equal-angle-configuration.svg.
% Prepared for the web edition of this note.
% The production site serves the committed SVG and does not compile TeX.
\documentclass[tikz,border=8pt]{standalone}
\usepackage{tkz-euclide}

\definecolor{egNavy}{HTML}{17243D}
\definecolor{egGray}{HTML}{777671}
\definecolor{egRust}{HTML}{92513F}
\newcommand{\egUseStandardPlateAt}[1]{%
  \pgfresetboundingbox
  \path[use as bounding box]
    ([xshift=-102pt,yshift=-80pt]#1)
    rectangle
    ([xshift=102pt,yshift=80pt]#1);%
}
\newcommand{\egUseStandardPlate}{%
  \coordinate (egPlateCenter) at (current bounding box.center);%
  \egUseStandardPlateAt{egPlateCenter}%
}
\tikzset{
  eg figure/.style={line cap=round,line join=round,every node/.append style={font=\normalsize,text=egNavy}},
  eg main/.style={draw=egNavy,line width=0.75pt},
  eg support/.style={draw=egGray,line width=0.52pt},
  eg support dashed/.style={draw=egGray,line width=0.52pt,dash pattern=on 3pt off 3pt},
  eg accent/.style={draw=egRust,line width=0.75pt},
  eg mark/.style={draw=egNavy,line width=0.50pt}
}

\begin{document}
\begin{tikzpicture}[eg figure,scale=1.0]
  % Canonical ABC seed shared by the site's triangle figures, followed by a
  % uniform similarity chosen to fill the standard plate without scaling text.
  \tkzDefPoint(0,0){S0}
  \tkzDefPoint(-0.5,4.2){A0}
  \tkzDefPoint(-3,0){B0}
  \tkzDefPoint(3,0){C0}
  \tkzDefPointBy[homothety=center S0 ratio 0.8](A0)\tkzGetPoint{A}
  \tkzDefPointBy[homothety=center S0 ratio 0.8](B0)\tkzGetPoint{B}
  \tkzDefPointBy[homothety=center S0 ratio 0.8](C0)\tkzGetPoint{C}

  \def\KiepertAngle{26}

  % Each outer vertex is the exact intersection of the two rays making the
  % same angle theta with its side. ABC is counterclockwise, so the indicated
  % signed rotations send the rays to the exterior of the triangle.
  \tkzDefPointBy[rotation=center B angle -\KiepertAngle](C)\tkzGetPoint{Bx}
  \tkzDefPointBy[rotation=center C angle \KiepertAngle](B)\tkzGetPoint{Cx}
  \tkzInterLL(B,Bx)(C,Cx)\tkzGetPoint{X}

  \tkzDefPointBy[rotation=center C angle -\KiepertAngle](A)\tkzGetPoint{Cy}
  \tkzDefPointBy[rotation=center A angle \KiepertAngle](C)\tkzGetPoint{Ay}
  \tkzInterLL(C,Cy)(A,Ay)\tkzGetPoint{Y}

  \tkzDefPointBy[rotation=center A angle -\KiepertAngle](B)\tkzGetPoint{Az}
  \tkzDefPointBy[rotation=center B angle \KiepertAngle](A)\tkzGetPoint{Bz}
  \tkzInterLL(A,Az)(B,Bz)\tkzGetPoint{Z}

  % Two cevians define K; Kiepert's theorem places it on the third.
  \tkzInterLL(A,X)(B,Y)\tkzGetPoint{K}

  \tkzDrawSegments[eg support](B,X X,C C,Y Y,A A,Z Z,B)
  \tkzDrawSegments[eg support dashed](A,X B,Y C,Z)
  \tkzDrawSegments[eg main](A,B B,C C,A)

  % The six equal base angles of the three similar outward triangles.
  \tkzMarkAngle[eg mark,size=0.3](X,B,C)
  \tkzMarkAngle[eg mark,size=0.3](B,C,X)
  \tkzMarkAngle[eg mark,size=0.3](Y,C,A)
  \tkzMarkAngle[eg mark,size=0.3](C,A,Y)
  \tkzMarkAngle[eg mark,size=0.3](Z,A,B)
  \tkzMarkAngle[eg mark,size=0.3](A,B,Z)
  \tkzLabelAngle[pos=0.6](X,B,C){$\theta$}
  \tkzLabelAngle[pos=0.6](Y,C,A){$\theta$}
  \tkzLabelAngle[pos=0.6](Z,A,B){$\theta$}

  \tkzDrawPoints[color=egNavy,fill=egNavy,size=1.6](A,B,C,X,Y,Z,K)

  \tkzLabelPoints[above](A)
  \tkzLabelPoints[below left](B)
  \tkzLabelPoints[below right](C)
  \tkzLabelPoints[below](X)
  \tkzLabelPoints[above right](Y)
  \tkzLabelPoints[above left](Z)
  \tkzLabelPoints[below right,yshift=-4pt](K)

  \egUseStandardPlate
\end{tikzpicture}
\end{document}
Jacobi’s theorem
% Figure for a Classical Theorem Note
% Article: From Ceva to Kiepert and Jacobi
% Figure: Jacobi's three-angle configuration
% Site: Elementary Geometry
% Website: https://elementarygeometry.org/
% Drawing tool: tkz-euclide
% Output format: SVG
% Standard plate: 5:4
% Last verified: 2026-09-04
% Accent target: none
% Parameters: alpha = 22 degrees, beta = 27 degrees, gamma = 32 degrees
%
% Editable source for public/diagrams/jacobi-three-angle-configuration.svg.
% The production site serves the committed SVG and does not compile TeX.
\documentclass[tikz,border=8pt]{standalone}
\usepackage{tkz-euclide}

\definecolor{egNavy}{HTML}{17243D}
\definecolor{egGray}{HTML}{777671}
\definecolor{egRust}{HTML}{92513F}
\newcommand{\egUseStandardPlateAt}[1]{%
  \pgfresetboundingbox
  \path[use as bounding box]
    ([xshift=-102pt,yshift=-80pt]#1)
    rectangle
    ([xshift=102pt,yshift=80pt]#1);%
}
\newcommand{\egUseStandardPlate}{%
  \coordinate (egPlateCenter) at (current bounding box.center);%
  \egUseStandardPlateAt{egPlateCenter}%
}
\tikzset{
  eg figure/.style={line cap=round,line join=round,every node/.append style={font=\normalsize,text=egNavy}},
  eg main/.style={draw=egNavy,line width=0.75pt},
  eg support/.style={draw=egGray,line width=0.52pt},
  eg support dashed/.style={draw=egGray,line width=0.52pt,dash pattern=on 3pt off 3pt},
  eg accent/.style={draw=egRust,line width=0.75pt},
  eg mark/.style={draw=egNavy,line width=0.50pt}
}

\begin{document}
\begin{tikzpicture}[eg figure,scale=1.0]
  % A uniform similarity of the canonical ABC used by the site's triangle
  % figures leaves room for the three external vertices and all six angles.
  \tkzDefPoint(0,0){O}
  \tkzDefPoint(-0.5,4.2){A0}
  \tkzDefPoint(-3,0){B0}
  \tkzDefPoint(3,0){C0}
  \tkzDefPointBy[homothety=center O ratio 0.8](A0)\tkzGetPoint{A}
  \tkzDefPointBy[homothety=center O ratio 0.8](B0)\tkzGetPoint{B}
  \tkzDefPointBy[homothety=center O ratio 0.8](C0)\tkzGetPoint{C}

  % ABC is counterclockwise. For each oriented side BC, CA, and AB, the
  % first ray is rotated clockwise into the exterior and the ray from the
  % other endpoint is rotated counterclockwise from the reversed side.
  \tkzDefPointBy[rotation=center B angle -27](C)\tkzGetPoint{Bx}
  \tkzDefPointBy[rotation=center C angle 32](B)\tkzGetPoint{Cx}
  \tkzInterLL(B,Bx)(C,Cx)\tkzGetPoint{X}

  \tkzDefPointBy[rotation=center C angle -32](A)\tkzGetPoint{Cy}
  \tkzDefPointBy[rotation=center A angle 22](C)\tkzGetPoint{Ay}
  \tkzInterLL(C,Cy)(A,Ay)\tkzGetPoint{Y}

  \tkzDefPointBy[rotation=center A angle -22](B)\tkzGetPoint{Az}
  \tkzDefPointBy[rotation=center B angle 27](A)\tkzGetPoint{Bz}
  \tkzInterLL(A,Az)(B,Bz)\tkzGetPoint{Z}

  \tkzInterLL(A,X)(B,Y)\tkzGetPoint{J}

  \tkzDrawSegments[eg support](A,Z Z,B B,X X,C C,Y Y,A)
  \tkzDrawSegments[eg support dashed](A,X B,Y C,Z)
  \tkzDrawSegments[eg main](A,B B,C C,A)

  \tkzMarkAngle[eg mark,size=0.28](Z,A,B)
  \tkzMarkAngle[eg mark,size=0.28](C,A,Y)
  \tkzMarkAngle[eg mark,size=0.28](A,B,Z)
  \tkzMarkAngle[eg mark,size=0.28](X,B,C)
  \tkzMarkAngle[eg mark,size=0.28](Y,C,A)
  \tkzMarkAngle[eg mark,size=0.28](B,C,X)

  \tkzLabelAngle[pos=0.5](Z,A,B){$\alpha$}
  \tkzLabelAngle[pos=0.5](C,A,Y){$\alpha$}
  \tkzLabelAngle[pos=0.5](A,B,Z){$\beta$}
  \tkzLabelAngle[pos=0.5](X,B,C){$\beta$}
  \tkzLabelAngle[pos=0.5](Y,C,A){$\gamma$}
  \tkzLabelAngle[pos=0.5](B,C,X){$\gamma$}

  \tkzDrawPoints[color=egNavy,fill=egNavy,size=1.6](A,B,C,X,Y,Z,J)

  \tkzLabelPoints[above](A)
  \tkzLabelPoints[below left](B)
  \tkzLabelPoints[below right](C)
  \tkzLabelPoints[below](X)
  \tkzLabelPoints[above right](Y)
  \tkzLabelPoints[above left](Z)
  \tkzLabelPoints[above right, yshift=2pt](J)

  \egUseStandardPlate
\end{tikzpicture}
\end{document}
Kariya’s theorem
% Figure for a Classical Theorem Note
% Article: From Ceva to Kiepert and Jacobi
% Figure: Kariya's incircle-ray configuration
% Site: Elementary Geometry
% Website: https://elementarygeometry.org/
% Drawing tool: tkz-euclide
% Output format: SVG
% Standard plate: 5:4
% Last verified: 2026-09-06
% Accent target: none
% Parameter: IX = IY = IZ = 2r, where r is the inradius
%
% Editable source for public/diagrams/kariya-incircle-configuration.svg.
% Prepared for the web edition of this note.
% The production site serves the committed SVG and does not compile TeX.
\documentclass[tikz,border=8pt]{standalone}
\usepackage{tkz-euclide}

\definecolor{egNavy}{HTML}{17243D}
\definecolor{egGray}{HTML}{777671}
\definecolor{egRust}{HTML}{92513F}
\newcommand{\egUseStandardPlateAt}[1]{%
  \pgfresetboundingbox
  \path[use as bounding box]
    ([xshift=-102pt,yshift=-80pt]#1)
    rectangle
    ([xshift=102pt,yshift=80pt]#1);%
}
\newcommand{\egUseStandardPlate}{%
  \coordinate (egPlateCenter) at (current bounding box.center);%
  \egUseStandardPlateAt{egPlateCenter}%
}
\tikzset{
  eg figure/.style={line cap=round,line join=round,every node/.append style={font=\normalsize,text=egNavy}},
  eg main/.style={draw=egNavy,line width=0.75pt},
  eg support/.style={draw=egGray,line width=0.52pt},
  eg support dashed/.style={draw=egGray,line width=0.52pt,dash pattern=on 3pt off 3pt},
  eg accent/.style={draw=egRust,line width=0.75pt},
  eg mark/.style={draw=egNavy,line width=0.50pt}
}

\begin{document}
\begin{tikzpicture}[eg figure,scale=1.0]
  % The same canonical ABC seed and similarity used in the Kiepert and Jacobi
  % figures leave room for the three points beyond the contact points.
  \tkzDefPoint(0,0){S0}
  \tkzDefPoint(-0.5,4.2){A0}
  \tkzDefPoint(-3,0){B0}
  \tkzDefPoint(3,0){C0}
  \tkzDefPointBy[homothety=center S0 ratio 0.8](A0)\tkzGetPoint{A}
  \tkzDefPointBy[homothety=center S0 ratio 0.8](B0)\tkzGetPoint{B}
  \tkzDefPointBy[homothety=center S0 ratio 0.8](C0)\tkzGetPoint{C}

  \tkzDefTriangleCenter[in](A,B,C)\tkzGetPoint{I}
  \tkzDefPointBy[projection=onto B--C](I)\tkzGetPoint{D}
  \tkzDefPointBy[projection=onto C--A](I)\tkzGetPoint{E}
  \tkzDefPointBy[projection=onto A--B](I)\tkzGetPoint{F}

  % Because ID = IE = IF, the common homothety ratio gives IX = IY = IZ.
  % Ratio 2 places D, E, F midway along IX, IY, IZ and keeps the outward
  % configuration optically aligned with the preceding two figures.
  \tkzDefPointBy[homothety=center I ratio 2](D)\tkzGetPoint{X}
  \tkzDefPointBy[homothety=center I ratio 2](E)\tkzGetPoint{Y}
  \tkzDefPointBy[homothety=center I ratio 2](F)\tkzGetPoint{Z}

  % Two lines define the concurrence point; Kariya's theorem places it on CZ.
  \tkzInterLL(A,X)(B,Y)\tkzGetPoint{P}

  \tkzDrawCircle[eg support](I,D)
  \tkzDrawSegments[eg support](I,X I,Y I,Z)
  \tkzDrawSegments[eg support dashed](A,X B,Y C,Z)
  \tkzDrawSegments[eg main](A,B B,C C,A)

  \tkzMarkRightAngle[eg mark,size=0.18](I,D,C)
  \tkzMarkRightAngle[eg mark,size=0.18](I,E,A)
  \tkzMarkRightAngle[eg mark,size=0.18](I,F,A)
  \tkzMarkSegments[color=egNavy,line width=0.50pt,mark=|,size=3pt,pos=0.35](I,X I,Y I,Z)

  \tkzDrawPoints[color=egNavy,fill=egNavy,size=1.6](A,B,C,D,E,F,I,X,Y,Z,P)

  \tkzLabelPoints[above](A)
  \tkzLabelPoints[below left](B)
  \tkzLabelPoints[below right](C)
  \tkzLabelPoints[above right](D)
  \tkzLabelPoints[below right](E)
  \tkzLabelPoints[below left](F)
  \tkzLabelPoints[right,yshift=-3pt](I)
  \tkzLabelPoints[below](X)
  \tkzLabelPoints[above right](Y)
  \tkzLabelPoints[above left](Z)

  \egUseStandardPlate
\end{tikzpicture}
\end{document}

Read the article