![從一組座標自動產生邊界“blob”](https://rvso.com/image/353219/%E5%BE%9E%E4%B8%80%E7%B5%84%E5%BA%A7%E6%A8%99%E8%87%AA%E5%8B%95%E7%94%A2%E7%94%9F%E9%82%8A%E7%95%8C%E2%80%9Cblob%E2%80%9D.png)
給定一組座標,我想產生該組的邊界“blob”。
我得到的最接近的是這個(令人驚訝的簡單):
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\node (p1) at (0, 0) {A};
\node (p2) at (1, 1) {B};
\node (p3) at (2, 0.5) {C};
\draw plot [smooth cycle,tension=1] coordinates {(p1) (p2) (p3)};
\end{tikzpicture}
\end{document}
其產生:
這有兩個問題:
- 繪圖穿過節點而不是圍繞節點。我可以使用類似的修飾符
.north
在某種程度上修復這個問題,但這非常乏味。 - 我必須以正確的順序指定邊界座標才能產生正確的結果。
我如何使用 TikZ 從一組無序座標計算邊界斑點?
答案1
如果您願意指定順序,有一個非常簡單的方法可以實現它。
\documentclass{standalone}
\usepackage{pgfplots}
\pgfdeclarelayer{background}
\pgfsetlayers{background,main}
\tikzset{
expand bubble/.style={
preaction={draw,line width=10.4pt},
white,fill,draw,line width=10pt,
},
}
\begin{document}
\begin{tikzpicture}
\node (p1) at (0, 0) {A};
\node (p2) at (1, 1) {B};
\node (p3) at (2, 0.5) {C};
\begin{pgfonlayer}{background}
\path[expand bubble]plot [smooth cycle,tension=1] coordinates {(p1) (p2) (p3)};
\end{pgfonlayer}
\end{tikzpicture}
\end{document}
附言。使用同樣的技巧這裡
PS2。我個人還沒有見過 TeX 中實現的凸包演算法。你能澄清一下你的意思嗎無序座標?