Автоматическое создание ограничивающего «капли» из набора координат

Автоматическое создание ограничивающего «капли» из набора координат

Имея набор координат, я хочу сгенерировать ограничивающий «блоб» этого набора.

Самое близкое, что я нашел, это (на удивление просто):

\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. Можете ли вы пояснить, что вы имели в виду поднеупорядоченные координаты?

Связанный контент