我想使用 tikz 构造围绕 12 个整数等级圆的弧折叠层,每个弧具有四分之一圆的恒定长度,并且第一个弧从 90 度开始,连续的弧从前一个弧的前面 30 度开始,直到第 12 个弧,就像这样:
我曾尝试构建12-integer-graded circle
在下面的代码中:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[scale=3]
%
% Independent parameters
\pgfmathsetmacro\dth{360/12} % angular increment
\def\angleOffset{90} % starting angle
\def\dialR{1} % dial radius
\def\dialLabelOffset{-.1} % label radial offset
%
% Dependent parameters
\pgfmathsetmacro\angleTip{-11.99*\dth+\angleOffset} % tip angle
\pgfmathsetmacro\dialLabelR{\dialR+\dialLabelOffset} % label radius
%
% draw arc
\draw[thick,-]
(\angleOffset:\dialR) arc (\angleOffset:\angleTip:\dialR);
%
% write labels
\foreach
[
var=\k,
var=\dialLabel,
evaluate=\k as \th using -\k*\dth+\angleOffset,
]
in {0/12,1/1,2/2,3/3,4/4,5/5,6/6,7/7,8/8,9/9,10/10,11/11,12/12}%
{
\draw (\th:\dialLabelR) node {\dialLabel};
}
\end{tikzpicture}
\end{document}
我根据以下答案修改了上述代码这里
笔记
我需要一个易于理解的 latex 代码,以便像我这样的外行人可以修改它以供使用。因为我可能想要删除一个圆弧、重新排列它们,或者删除分级圆,所以让每个圆弧的代码彼此独立。
答案1
这是一个解决方案:
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\tikzset{declare function={hourstoangle(\h) = 90-(\h)*360/12;}}
\def\dialR{3cm} % dial radius
% dial
\draw (0,0) circle[radius=\dialR];
% hour tips
\foreach \num in {1,...,12}{
\draw ({hourstoangle(\num)}:\dialR)-- ++({hourstoangle(\num)}:-1mm);
}
% hour labels
\foreach \num in {1,...,12}{
\draw ({hourstoangle(\num)}:\dialR-5mm) node{\num};
}
% arcs
\foreach \num in {0,...,12}{
\pgfmathsetmacro\dist{\dialR+2mm+2mm*\num}
\draw
% two tips
({hourstoangle(\num)}:\dist pt-1mm) -- ({hourstoangle(\num)}:\dist pt+1mm)
({hourstoangle(\num+3)}:\dist pt-1mm) -- ({hourstoangle(\num+3)}:\dist pt+1mm)
% one arc
({hourstoangle(\num)}:\dist pt)
arc[start angle={hourstoangle(\num)},end angle={hourstoangle(\num+3)},radius=\dist pt];
}
\end{tikzpicture}
\end{document}