使用 TikZ 在圆圈内绘制线条

使用 TikZ 在圆圈内绘制线条

我正在尝试在任意大小的圆内绘制一些线条。我想从一条穿过圆心的垂直线开始,然后添加其他线条,如下所示:

在此处输入图片描述

我希望能够控制线条之间的间距 L 以及从中心绘制的线条数量(在示例中,中心线两侧各有两条线条)。红色标记仅供参考,最终版本中不需要它。

使用 TikZ 对此进行编码的最佳方法是什么?

平均能量损失

\documentclass[margin=5pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw (0,0) circle (1cm); % The choice of 1cm was arbitrary, what is the best way to scale this diagram?
\draw (0,-1) -- (0,1);
\draw (3,0) circle (1cm);
\draw (3,-1) -- (3,1);
\end{tikzpicture}
\end{document}

答案1

使用剪辑?我在scope这里使用来限制剪辑。

\documentclass[margin=5pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
    \begin{scope} 
        \draw  [clip] (0,0) circle (1cm);
        \draw (0,-1) -- (0,1); % first (center) line 
            \foreach \x in {1,...,4} {% 4 lines per side 
                \draw (\x/10, -1) -- (\x/10,1); % positive x position 0.1, 0.2...
                \draw (-\x/10, -1) -- (-\x/10,1); % and negative ones 
        }
    \end{scope}
\end{tikzpicture}
\end{document}

在此处输入图片描述

(请注意,中心看似较大的线是 PDF 查看器的混叠问题)。

使用范围可以让你很容易地操作事物:

\documentclass[margin=5pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
    \begin{scope}
        \draw  [clip] (0,0) circle (1cm);
        \draw (0,-1) -- (0,1); % first diagonal
            \foreach \x in {1,...,4} {% 4 lines 
                \draw (\x/10, -1) -- (\x/10,1);
                \draw (-\x/10, -1) -- (-\x/10,1);
        }
    \end{scope}
    \begin{scope}[xshift=2cm, scale=0.5, rotate=45]
        \draw  [clip] (0,0) circle (1cm);
        \draw (0,-1) -- (0,1); % first diagonal
            \foreach \x in {1,...,4} {% 4 lines 
                \draw (\x/10, -1) -- (\x/10,1);
                \draw (-\x/10, -1) -- (-\x/10,1);
        }
    \end{scope}
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

为了好玩,这里有一种vlines使用path picturegrid画线条的风格。

\documentclass[tikz,border=7pt]{standalone}
\tikzset{
  vlines/.style={
    path picture={
      \draw[xstep=#1, ystep=100cm, shift={(path picture bounding box.south west)} ]
      (path picture bounding box.south west) grid (path picture bounding box.north east);
    }
  }
}
\begin{document}
  \begin{tikzpicture}
    \draw[vlines=2mm] (0,0) circle (1);
  \end{tikzpicture}
\end{document}

在此处输入图片描述

笔记 :可以ystep=100cm设置为高度,path picture bounding box但这是另一个故事;)

答案3

使用最新版本的 TikZ/PGF,最佳方式应该是grid[ystep=0,xstep=\L]clip单位圆内。请注意,网格始终穿过中心。您可以通过\L水平间距(即线数)和[scale=2]缩放整个图片来完全控制。

在此处输入图片描述

\documentclass[tikz,border=2mm]{standalone}
\begin{document}
\begin{tikzpicture}[scale=2] 
\def\L{1.5mm}
\draw[clip] (0,0) circle(1);
\draw (-1,-1) grid[ystep=0,xstep=\L] (1,1);
\draw[red] (0,-1)--(0,1); % for checking grid go through the center, should be removed
\end{tikzpicture}
\end{document}

相关内容