How do I trisect an angle using tkz-euclide?

Using the \tkzDefLine[bisector](A,B,C) command in tkz-euclide, you can bisect an angle. How can I cut an angle in three or more equal parts?

• Off-topic: just to inform (for those who don't know): this is one of those 3 classical problems. The construction with compass and ruler (without measures) is not possible. en.wikipedia.org/wiki/Angle_trisection Aug 26, 2015 at 6:34

3 Answers

To trisect an angle, try something like this:

\begin{tikzpicture}[scale=1]
\tkzDefPoint(6,0){A}
\tkzDefPoint(0,1){B}
\tkzDefPoint(1,4){C}
\tkzDrawSegments(A,B B,C)

% Get the angle and define two new points that lie on the trisectors.
\tkzFindAngle(A,B,C) \tkzGetAngle{at}
\tkzDefPointBy[rotation=center B angle 1*\at/3](A) \tkzGetPoint{T1}
\tkzDefPointBy[rotation=center B angle 2*\at/3](A) \tkzGetPoint{T2}

% Draw the trisectors.
\tkzSetUpLine[color=blue!70]
\tkzDrawLine[add=0 and 0](B,T1)
\tkzDrawLine[add=0 and 0](B,T2)
\end{tikzpicture}

The resulting image:

Extending this procedure, you can n-sect an angle: just adapt 1*\at/3 to be k*\at/n for k from 1 to n-1.

Possibly overkill, but you could adapt Morley's theorem, and use trilinear coordinates that form the equilateral triangle whose vertices can be used to describe the trisectors. Unfortunately, the conversion from trilinear coordinates to tkzEuclide's barycentric coordinate system involves some fiddling.

\documentclass[tikz,border=5]{standalone}
\usepackage{tkz-euclide}
\usetkzobj{all}
\def\tkzfiddle#1{%
\pgfmathparse{#1<0?#1+360:#1}\let#1=\pgfmathresult%
\pgfmathparse{#1>180?180-#1:#1}\let#1=\pgfmathresult%
}
\begin{document}
\begin{tikzpicture}

\tkzDefPoint(0,0){A}
\tkzDefPoint(35:4){B}
\tkzDefPoint(105:4){C}

\tkzFindAngle(B,A,C) \tkzGetAngle{A}
\tkzFindAngle(C,B,A) \tkzGetAngle{B}
\tkzFindAngle(A,C,B) \tkzGetAngle{C}
\tkzCalcLength(A,B) \tkzGetLength{c}
\tkzCalcLength(B,C) \tkzGetLength{a}
\tkzCalcLength(C,A) \tkzGetLength{b}

\tkzfiddle\A\tkzfiddle\B\tkzfiddle\C
\pgfmathparse{max(\a,\b,\c)}\let\n=\pgfmathresult
\pgfmathparse{\a/\n}\let\a=\pgfmathresult
\pgfmathparse{\b/\n}\let\b=\pgfmathresult
\pgfmathparse{\c/\n}\let\c=\pgfmathresult

\tkzDefBarycentricPoint(A=\a*1,B={\b*2*cos(\C/3)},C={\b*2*cos(\B/3)})
\tkzGetPoint{A'}
\tkzDefBarycentricPoint(A={\a*2*cos(\C/3)},B=\b*1,C={\c*2*cos(\A/3)})
\tkzGetPoint{B'}
\tkzDefBarycentricPoint(A={\a*2*cos(\B/3)},B={\b*2*cos(\A/3)},C=\c*1)
\tkzGetPoint{C'}

\tkzDrawPolygon(A,B,C)
\tkzDrawPolygon[red](A,B',C')
\tkzDrawPolygon[green](B,C',A')
\tkzDrawPolygon[blue](C,B',A')
\tkzDrawPoints(A,B,C,A',B',C')
\foreach \label/\anchor in {A/below left, B/right, C/above,
A'/above right, B'/left, C'/below right}%
{\tkzLabelPoints[\anchor](\label)}
\end{tikzpicture}
\end{document}

• Amusingly, I needed this to construct a graphic in a proof of... Morley's theorem :)
– Lynn
Aug 26, 2015 at 15:24

tkz-euclide is useful! However, I try to use it as little as possible (I am lazy to remember more commands). I change something from Lynn's code (see above)

\documentclass[tikz,border=2mm]{standalone}
\usepackage{tkz-euclide}
\usetkzobj{all}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\coordinate (A) at (4,0);
\coordinate (B) at (0,1.5);
\coordinate (C) at (2,5);
\draw (A) node[below]{A}--
(B) node[left]{B}--
(C) node[left]{C};

\tkzFindAngle(A,B,C) \tkzGetAngle{at}

\coordinate (T1) at ($(B)!3cm!\at/3:(A)$);
\coordinate (T2) at ($(B)!3cm!2*\at/3:(A)$);

\draw[blue] (B)--(T1);
\draw[red] (B)--(T2);
\end{tikzpicture}
\end{document}