这是我的代码,正如您所见,它非常简单。
但我知道如果适当使用,可以更容易地编写它\for
。
不幸的是,我仍在学习,似乎无法让它与 一起工作arc
。我主要关心的是 的起源arc
,它应该以某种方式传播……
\documentclass[letterpaper, 12pt]{article}
\usepackage{tikz}
\begin{document}
\begin{center}
\begin{tikzpicture}[yscale=-1]
\foreach \a in {0, 5,...,45}
\draw[Azure4] (\a:6.7) -- (\a:7);
\draw[very thick] (7,0) arc (0:45:7cm);
\foreach \a in {90, 95,...,135}
\draw[Azure4] (\a:6.7) -- (\a:7);
\draw[very thick] (0,7) arc (90:135:7cm);
\foreach \a in {180, 185,...,225}
\draw[Azure4] (\a:6.7) -- (\a:7);
\draw[very thick] (-7,0) arc (180:225:7cm);
\foreach \a in {270, 275,...,315}
\draw[Azure4] (\a:6.7) -- (\a:7);
\draw[very thick] (0,-7) arc (270:315:7cm);
\foreach \a in {45, 50,...,90}
\draw[Azure4] (\a:4.7) -- (\a:5);
\draw[very thick] (0,5) arc (90:45:5cm);
\foreach \a in {135, 140,...,180}
\draw[Azure4] (\a:4.7) -- (\a:5);
\draw[very thick] (-5,0) arc (180:135:5cm);
\foreach \a in {225, 230,...,270}
\draw[Azure4] (\a:4.7) -- (\a:5);
\draw[very thick] (0,-5) arc (270:225:5cm);
\foreach \a in {315, 320,...,359}
\draw[Azure4] (\a:4.7) -- (\a:5);
\draw[very thick] (5,0) arc (360:315:5cm);
%Main rays
\foreach \a in {0, 45,...,359}
\draw[very thick] (\a:0) -- (\a:7);
%Main rays
\foreach \a in {0, 90,...,359}
\draw[very thick] (0, 0) -- (\a:7);
%Central point
\draw[fill=black] (0,0) circle(0.7mm);
\end{tikzpicture}
\end{center}
\end{document}
所以我已经可以简化一些东西,但我仍然无法简化部分arc
。
\documentclass[letterpaper, 12pt]{article}
\usepackage{tikz}
\begin{document}
\begin{center}
\begin{tikzpicture}[yscale=-1]
\foreach \a in {0, 5,...,45, 90, 95,...,135, 180, 185,...,225, 270, 275,...,315}
\draw[Azure4] (\a:6.7) -- (\a:7);
\draw[very thick] (7,0) arc (0:45:7cm);
\draw[very thick] (0,7) arc (90:135:7cm);
\draw[very thick] (-7,0) arc (180:225:7cm);
\draw[very thick] (0,-7) arc (270:315:7cm);
\foreach \a in {45, 50,...,90, 135, 140,...,180, 225, 230,...,270, 315, 320,...,359}
\draw[Azure4] (\a:4.7) -- (\a:5);
\draw[very thick] (0,5) arc (90:45:5cm);
\draw[very thick] (-5,0) arc (180:135:5cm);
\draw[very thick] (0,-5) arc (270:225:5cm);
\draw[very thick] (5,0) arc (360:315:5cm);
%Main rays
\foreach \a in {0, 45,...,359}
\draw[very thick] (\a:0) -- (\a:7);
%Main rays
\foreach \a in {0, 90,...,359}
\draw[very thick] (0, 0) -- (\a:7);
%Central point
\draw[fill=black] (0,0) circle(0.7mm);
\end{tikzpicture}
\end{center}
\end{document}
主要是因为起源,我知道它去哪里,但不知道如何在循环中实现它for
。不过我可以做必要的数学运算(beginAngle:endAngle:5cm)
... :)
答案1
正如中心一样(0,0)
,这里有一个简单的解决方案:
\documentclass{standalone}
\usepackage{tikz}
\colorlet{tickcol}{cyan!50!blue}
\begin{document}
\begin{tikzpicture}[yscale=-1]
\foreach \as/\ae/\radius/\fillcol in {
0/45/7/orange,
45/90/5/violet,
90/135/7/cyan,
135/180/5/blue,
180/225/7/green,
225/270/5/red,
270/315/7/magenta,
315/360/5/lime%
}{
% sector
\draw[very thick,fill=\fillcol!50]
(0,0) -- (\as:\radius) arc (\as:\ae:\radius) -- cycle;
\pgfmathsetmacro\nextas{\as+5}
% ticks
\foreach \a in {\as,\nextas,...,\ae} {
\draw[draw=tickcol] (\a:\radius) -- (\a:\radius-.3);
}
}
% center
\draw[fill=red] (0,0) circle(1mm);
\end{tikzpicture}
\end{document}
答案2
答案3
这是我想出的代码。
如果有人有更好、更清晰的例子,请随意在下面发布,因为我愿意接受任何(相同或)更好的答案。(而不是我自己的)
我会暂时接受这个,因为它是我所寻找的一个工作示例。但由于我仍在学习,所以如果您能想到的一切,我将不胜感激。
\begin{center}
\begin{tikzpicture}[yscale=-1]
% center c1
\coordinate (c1) at (0,0);
%---- Large -------%
\foreach \a in {0, 5,...,45, 90, 95,...,135, 180, 185,...,225, 270, 275,...,315}
\draw[Azure4] (\a:6.7) -- (\a:7);
\foreach \b in {0,90,...,359}
\draw[very thick] ($(c1) + (\b:7cm)$) arc (\b:\b+45:7cm) ;
%---- Small -------%
\foreach \a in {45, 50,...,90, 135, 140,...,180, 225, 230,...,270, 315, 320,...,359}
\draw[Azure4] (\a:4.7) -- (\a:5);
\foreach \b in {0,90,...,359}
\draw[very thick] ($(c1) + (\b:5cm)$) arc (\b:\b-45:5cm) ;
\end{tikzpicture}
\end{center}
得益于此邮政,以及 Paul Gaborit 的回答,我设法让它\for
循环工作。
我认为,主要思想是固定原点,然后使其转动。我认为这($(c1) + (\b:5cm)$)
是“旋转”原点的方法。
但我仍然不确定它究竟是如何工作的。
(其余部分只要你玩一下就很明显了)
注意:其余所有代码均相同(勾选和全部)