一个基于tkz-euclide的可能方案,有大量瑕疵:
- "质心"可以最好地近似「N个点的"最小覆盖圆"的圆心」吗?
- 图中使用
\tkzAutoLabelPoints来调整dist也并不完美,点A,B,C,F偏远;点D与E偏近 \tkzDefBarycentricPoint(A=1,B=1,C=1,D=1,E=1,F=1)语法冗杂,而\tkzCentroid(A,B,C)仅支持三个点- 暂时没有做封装...
\documentclass[tikz,border=5mm]{standalone}
\usepackage{tkz-euclide}
\begin{document}
\begin{tikzpicture}
\tkzDefPoints{-1/-1/A, 1/-2/B, 3/0/C, 2/4/D, 0/5/E,-3/2/F}
\tkzDrawPolygons[thick](A,...,F)
% \tkzLabelPoints(A,...,F) % No!
% \tkzCentroid(A,B,C) %怎么只支持三个点呢..真可惜
\tkzDefBarycentricPoint(A=1,B=1,C=1,D=1,E=1,F=1)
\tkzGetPoint{centroid}
\tkzDrawPoint(centroid)
\tkzAutoLabelPoints[center = centroid,dist= .12](A,...,F)
\end{tikzpicture}
\end{document}
抛砖引玉了~ 期待@u817 老师提供更general方案的补充
Edited:
使用\path和pos..对位置的控制相对好一些了,但是却不能很好的融入tkz-euclide的框架里...
这里的各个label和点的距离是「路径(centeroid--\x)的长度*0.1」,因为不好找到精准的最小覆盖圆(因为多点情况下这不存在),长度不相等,这是利用pos的瑕疵...
\documentclass[tikz,border=5mm]{standalone}
\usepackage{tkz-euclide}
\begin{document}
\begin{tikzpicture}
\tkzDefPoints{-1/-1/A, 1/-2/B, 3/0/C, 2/4/D, 0/5/E,-3/2/F}
\tkzDrawPolygons[thick](A,...,F)
% \tkzLabelPoints(A,...,F) % No!
% \tkzCentroid(A,B,C) %怎么只支持三个点呢..真可惜
\tkzDefBarycentricPoint(A=1,B=1,C=1,D=1,E=1,F=1)
\tkzGetPoint{centroid}
\tkzDrawPoint(centroid)
% \tkzAutoLabelPoints[center = centroid,dist= .12](A,...,F)
\foreach \x in {A,...,F}{
\path (centroid) -- (\x) node [text=magenta,pos=1.1] {\x};
}
\end{tikzpicture}
\end{document}























问 是否可以实现对一些可构成(凸)多边形的点实现自动智能在其外侧添加标签?