用极坐标很容易
\documentclass[border=1cm]{standalone}
\usepackage{tkz-euclide}
\begin{document}
\begin{tikzpicture}[font=\small]
\tkzDefPoint(0,0){B}
\tkzDefShiftPoint[B](60:2){A}
\tkzDefShiftPoint[B](0:2){C}
\tkzDefShiftPoint[B](60:5){E}
\tkzDefShiftPoint[B](0:3){D}
\tkzDrawPolygon[thick](A,B,C)
\tkzDrawSegments[thick](C,D A,E E,C E,D)
\tkzLabelPoints[below](B,C,D)
\tkzLabelPoints[above](E)
\tkzLabelPoints[above left](A)
\end{tikzpicture}
\end{document}
若 BD 已知,则 AE 的长就是 BD - BC.
若 BD 未知,则先定义 AE 的长,比如为 x, 则 BD 就是 2+x (BC = 2).
此外,如果对极坐标定义点觉得麻烦,可以自定义一个命令:
\newcommand{\myPolarPoints}[2]{%
\foreach \ang/\r/\name in {#2}{%
\tkzDefShiftPoint[#1](\ang:\r){\name}%
}
}这样就可以用类似直角坐标的方法批量定义点:
\documentclass[border=1cm]{standalone}
\usepackage{tkz-euclide}
\newcommand{\myPolarPoints}[2]{%
\foreach \ang/\r/\name in {#2}{%
\tkzDefShiftPoint[#1](\ang:\r){\name}%
}
}
\begin{document}
\begin{tikzpicture}[font=\small]
\tkzDefPoint(0,0){B}
\myPolarPoints{B}{60/2/A,0/2/C,60/5/E,0/3/D}
\tkzDrawPolygon[thick](A,B,C)
\tkzDrawSegments[thick](C,D A,E E,C E,D)
\tkzLabelPoints[below](B,C,D)
\tkzLabelPoints[above](E)
\tkzLabelPoints[above left](A)
\end{tikzpicture}
\end{document}














问 延长线段长度的作图方法