根据一组坐标自动生成边界“斑点”

根据一组坐标自动生成边界“斑点”

给定一组坐标,我想生成该集合的边界“斑点”。

我最接近的答案是这个(出奇的简单):

\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}

PS. 使用同样的技巧这里

PS2. 我个人没有见过在 TeX 中实现的凸包算法。你能解释一下你所说的无序坐标

相关内容