
Я хотел бы рисовать циклы (или многоугольные пути) с помощью TikZ
. Я предоставляю код, в котором я пытаюсь сделать это с помощью прямоугольных координат и полярных координат. На первом рисунке, я думаю, цикл скрыт вспомогательными линиями. Второй рисунок нарисован не так, как я предполагал.
На обоих рисунках у меня есть пути на сетке. Я хотел сделать линии сетки в четверть толщины сегментов линий в циклах и светло-серыми. Я думаю, что толщина линий по умолчанию составляет TikZ
0,4 пт; поэтому я думал, что спецификация line width=0.1pt
сделает вспомогательные линии в четверть толщины циклов. Это не так. Я забыл, как сделать линии светло-серыми. (Я думал, что вспомогательные линии по умолчанию серые.)
\documentclass{amsart}
\usepackage{tikz}
\usetikzlibrary{intersections,decorations.pathreplacing,positioning}
\begin{document}
\begin{tikzpicture}
\draw (0,0) grid [xstep=0.5, ystep=0.5, line width=0.1pt,gray] (6,6);
\draw[line width=0.5pt] (4,1) -- ++(1,0) -- ++(0,3) -- ++(-2,0) -- cycle;
\end{tikzpicture}
\vskip0.25in
\begin{tikzpicture}
\draw (0,0) grid [xstep=0.5, ystep=0.5, line width=0.1pt,gray] (6,6);
\draw[line width=0.5pt] (1,1.5) -- ++(2:135) -- ++(1:135) -- ++(3:90) -- ++ (1:120) -- cycle;
\end{tikzpicture}
\end{document}
решение1
Параметры рисования необходимо передавать команде, \draw
а не grid
. (РЕДАКТИРОВАТЬ: какQrrbrbirlbel сказал первым.)
Полярные координаты указываются как (angle:distance)
. Но обратите внимание, что угол 135
, скажем, всегда имеет одно и то же направление, поэтому первые два сегмента вашего пути идут в одном направлении:
(1,1.5) -- ++(135:2) -- ++(135:1)
и
(1,1.5) -- ++(135:3)
эквивалентны.
Итак, частично исправленный код выглядит так:
\documentclass{amsart}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw [gray, line width=0.1pt] (0,0) grid [xstep=0.5, ystep=0.5] (6,6);
\draw [line width=0.5pt] (4,1) -- ++(1,0) -- ++(0,3) -- ++(-2,0) -- cycle;
\end{tikzpicture}
\vskip0.25in
\begin{tikzpicture}
\draw [gray, line width=0.1pt] (0,0) grid [xstep=0.5, ystep=0.5] (6,6);
\draw [line width=0.5pt] (1,1.5) -- ++(135:2) -- ++(135:1) -- ++(90:3) -- ++ (120:1) -- cycle;
\end{tikzpicture}
\end{document}
но это, вероятно, не то, что вам нужно:
Крупный план линий:
РЕДАКТИРОВАТЬ
Библиотека shapes.geometric
позволяет вам легко рисовать такие объекты, как правильные многоугольники:
\documentclass[tikz,border=5pt]{standalone}
\usetikzlibrary{shapes.geometric}
\begin{document}
\begin{tikzpicture}
\draw [gray, line width=.1pt] (0,0) grid [xstep=0.5, ystep=0.5] (6,6);
\node [shape=regular polygon, regular polygon sides=5, draw, minimum width=15mm] at (3,3) {};
\end{tikzpicture}
\end{document}
Однако, если это не подходит, вы можете попробовать следующее:
\begin{tikzpicture}
\draw [gray, line width=.1pt] (0,0) grid [xstep=0.5, ystep=0.5] (6,6);
\begin{scope}[shift={(1,1.5)}]
\draw [line width=0.5pt] ++(0:1) -- ++(72:1) -- ++(144:1) -- ++(216:1) -- ++ (288:1) -- cycle;
\end{scope}
\end{tikzpicture}
ИЗМЕНИТЬ ИЗМЕНИТЬ
Или нерегулярно...
\begin{tikzpicture}
\draw [gray, line width=.1pt] (0,0) grid [xstep=0.5, ystep=0.5] (6,6);
\begin{scope}[shift={(3,1.5)}]
\draw [line width=0.5pt] ++(0:2) -- ++(72:1) -- ++(144:3) -- ++(216:2.5) -- ++ (288:.5) -- cycle;
\end{scope}
\end{tikzpicture}