使用 Tikz 构建螺旋状弧层

使用 Tikz 构建螺旋状弧层

我想使用 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}

在此处输入图片描述

相关内容