
측면 수에 따라 모양의 정점 좌표를 표시하는 모양 그리기 템플릿이 있습니다. 그러나 (a1)-(a2) 등을 입력해야 하는 측면이 많은 모양의 경우 다소 지루해 지므로 foreach 루프를 사용해 보았습니다. 같은 것
\draw
\foreach \s in {0,1,...,\m}
{
{(a\s)--
}
};
하지만 이것은 작동하지 않으며 내가 볼 때 나는 그것을 기대하지 않지만 그것에 대해 다른 방법을 모릅니다.
내 코드는 다음과 같습니다.
,tex
\begin{tikzpicture}
\pgfmathsetmacro{\n}{15};
\pgfmathsetmacro{\angle}{360/\n};
\pgfmathsetmacro{\initialangle}{90+(\angle/2)(1-Mod(\n,2))};
\pgfmathsetmacro{\m}{\n-1};
\foreach \s in {0,1,...,\m}
{
\pgfmathsetmacro{\r}{\angle\s};
\coordinate (a\s) at (\initialangle+\r:3);
\draw (a\s) circle (0.1) node[above]{a\s};
}
\end{tikzpicture}
답변1
환영! 이런 걸 원하시나요?
\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}
\pgfmathtruncatemacro{\n}{15};
\pgfmathsetmacro{\angle}{360/\n};
\pgfmathsetmacro{\initialangle}{90+(\angle/2)(1-Mod(\n,2))};
\pgfmathtruncatemacro{\m}{\n-1};
\foreach \s in {0,1,...,\m}
{
\pgfmathsetmacro{\r}{\angle*\s};
\coordinate (a\s) at (\initialangle+\r:3);
\draw (a\s) circle[radius=0.1] node[above]{a\s};
}
\draw (a0)
foreach \s in {1,...,\m}{-- (a\s)} -- cycle;
\end{tikzpicture}
\end{document}
여기서는 0번째 좌표를 다르게 처리하고 유리한 \pgfmathsetmacro
쪽으로 변경하고 \pgfmathtruncatemacro
곱셈 기호 *
와 를 추가했습니다 -- cycle
.
좀 더 화려하게 만들고 싶을 수도 있습니다.
\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}
\pgfmathtruncatemacro{\n}{15};
\pgfmathsetmacro{\angle}{360/\n};
\pgfmathsetmacro{\initialangle}{90+(\angle/2)(1-Mod(\n,2))};
\pgfmathtruncatemacro{\m}{\n-1};
\path foreach \s in {0,1,...,\m}
{
({\initialangle+\angle*\s}:3)
node[circle,inner sep=0.5mm,draw,label={[circle,anchor={180+\initialangle+\angle*\s}]$a_{\s}$}]
(a\s) {}
};
\draw foreach \s [remember=\s as \lasts (initially \m)]
in {0,1,...,\m} { (a\lasts)-- (a\s)};
\end{tikzpicture}
\end{document}
물론 그래프 그리기 라이브러리(예: pgfmanual v3.1.5의 274페이지 상단에 있는 예제 참조), 체인(pgfmanual v3.1.5의 604페이지에 있는 예제 참조)을 포함하여 이를 수행하는 더 많은 방법이 있습니다. 또는연결이 원을 따르도록 놔두기.