我正在尝试在任意大小的圆内绘制一些线条。我想从一条穿过圆心的垂直线开始,然后添加其他线条,如下所示:
我希望能够控制线条之间的间距 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 picture
和grid
画线条的风格。
\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}