Рисуем крестики в тикз

Рисуем крестики в тикз

Если я сделаю

\draw (1,1) circle (1pt)

tikz нарисуйте маленький круг 1ptдиаметром (1,1).

Как я могу определить путь crossтаким образом, чтобы

\draw (1,1) cross (1pt)

рисует маленький крестик с диаметром 1pt(размер которого можно изменять, как и у круга)?

решение1

crossэквивалент команды circleне существует в, TiKZно вы можете использовать cross outузел из shapes.miscбиблиотеки. Этот тип узла добавляет кроссоверный текст узла, но его легко адаптировать для выполнения того, что вам нужно.

\tikzset{cross/.style={cross out, draw, 
         minimum size=2*(#1-\pgflinewidth), 
         inner sep=0pt, outer sep=0pt}}

Поскольку circle (1pt)рисует круг с радиусом = 1 пункт, его общий размер будет 2 пункта, то crossразмер узла определяется с помощью minimum size=2*(#1-\pgflinewidth)и , innerа outerразделения фиксируются на 0pt.

Если угол пересечения вам не подходит, вы можете изменить его с помощью rotateопции. Далее у вас есть несколько примеров. Я также разместил circlesих поверх, чтобы показать, что круг и кресты имеют одинаковый размер.

\documentclass[tikz, border=2mm]{standalone}
\usetikzlibrary{shapes.misc}

\tikzset{cross/.style={cross out, draw=black, minimum size=2*(#1-\pgflinewidth), inner sep=0pt, outer sep=0pt},
%default radius will be 1pt. 
cross/.default={1pt}}

\begin{document}
\begin{tikzpicture}[]

\draw (0,0) circle (1pt);

\draw (.5,0) node[cross,rotate=10] {};
\draw (.5,0) circle (1pt);

\draw (0,.5) circle (1pt);
\draw (0,.5) node[cross,red] {};

\draw (.5,.5) node[cross,rotate=30] {};

\draw (0.25,.25) circle (2pt);
\draw (0.25,.25) node[cross=2pt,rotate=45,green]{};
\end{tikzpicture}
\end{document}

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

решение2

Альтернативное решение с использованием pic:

\documentclass[]{standalone}

\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}

\tikzset{
    cross/.pic = {
    \draw[rotate = 45] (-#1,0) -- (#1,0);
    \draw[rotate = 45] (0,-#1) -- (0, #1);
    }
}

\begin{document}



\begin{tikzpicture}

    \draw (0,0) circle (1pt);

    \path (.5,0) pic[rotate = 10] {cross=1pt};
    \draw (.5,0) circle (1pt);

    \draw (0,.5) circle (1pt);
    \path (0,.5) pic[red] {cross=1pt};

    \draw (.5,.5) pic[rotate = 30] {cross=1pt};

    \draw (0.25,.25) circle (2pt);
    \draw (0.25,.25) pic[rotate=45,green] {cross=2pt};
\end{tikzpicture}

\end{document}

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

решение3

Вы можете написать «x» в соответствующей позиции:

\draw (1,1) node {x};

Затем вы можете настроить размер, используя размеры шрифта следующим образом:

\draw (1,1) node {\Huge x};

Центр «x» на самом деле расположен точно в заданных координатах.

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