Получить север/юго-запад и т. д. для \draw прямоугольника, круга и т. д.

Получить север/юго-запад и т. д. для \draw прямоугольника, круга и т. д.

Предположим, я нарисовал прямоугольник с помощью \drawфункции:

\begin{tikzpicture}
  \draw (0,0) rectangle (1,1);
\endtikzpicture}

Каков правильный способ доступа к "главным сторонам" (север, северо-запад, запад и т. д.) ограничивающего прямоугольника этого пути (обратите внимание, что это может быть также окружность, плавная кривая Безье и т. д.)? В идеале я хочу сделать что-то вроде:

\begin{tikzpicture}
  \draw[name=foo] (0,0) rectangle (1,1);
  \node[left=1cm of foo.east] {bar};
\endtikzpicture}

решение1

Благодаря коту Шредингера вы можете использовать его local bounding boxдля определения и доступа к нужным координатам:

введите описание изображения здесь

Это позволяет рисовать другие объекты (в данном случае круг), а саму ограничивающую рамку оставить нетронутой (нарисовать синим цветом).

Код:

\documentclass{article}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
  \draw (1,1) circle (0.5cm);
  
  \begin{scope}[local bounding box=MyRectangle]
      \draw (0,0) rectangle (1,1);
  \end{scope}
  
  \draw [red, thick] (MyRectangle.south west) -- (MyRectangle.north east);
  
  \draw [blue] (current bounding box.south west) rectangle (current bounding box.north east);
\end{tikzpicture}%
\end{document}

решение2

Вы могли бы просто использовать узел с outer sep=0ptи соответствующим minimum widthи minimum height. Форма по умолчанию — rectangle.

\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
  \path (0,0) node[draw,minimum width=1cm,minimum height=1cm,anchor=south
  west,outer sep=0pt](foo){};
  \draw[dashed,red] (0,0) rectangle (1,1);
  \node[left=1cm of foo.east] {bar};
\end{tikzpicture}
\end{document}

введите описание изображения здесь

Красные черточки нужны только для того, чтобы показать, что пути совпадают. Если это квадрат, вы также можете использовать minimum size. Аналогичные утверждения применимы к кругам и т. д. В shapes.geometricбиблиотеке есть несколько геометрических фигур, а также есть другие shapesбиблиотеки.

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