如何逐步缩短 TikZ 的 `foreach` 命令生成的行?

如何逐步缩短 TikZ 的 `foreach` 命令生成的行?

我正在尝试绘制集合论累积层次结构的初始部分。我生成了以下 MWE:

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[thick, scale=2.0]
        \draw[ultra thick] (0,0) -- (1,2);
        \draw[ultra thick] (0,0) -- (-1,2);
        \foreach \y in {.3, .6,...,2}
        \draw (-1,\y) -- (1,\y);
\end{tikzpicture}
\end{document}

生成了如下图片:

在此处输入图片描述

水平线的垂直间距是正确的,但是我该如何缩短它们以便它们结束于线V而不是延伸到线之外?

编辑:接受的答案完美地回答了提出的问题。但是,cfr 的答案提供了更通用的解决方案,因此可能更受欢迎。

答案1

解决方案是解两个线性方程。

\documentclass[border=6pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[thick, scale=2.0, auto]
        \draw[ultra thick] (0,0) -- (1,2);
        \draw[ultra thick] (0,0) -- (-1,2);
        \foreach \y in {.3, .6,...,2}
        \draw (-1/2*\y,\y) -- (1/2*\y,\y);
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

严格来说,这并没有回答问题,因为它不在循环内起作用,而是作为循环的约束。但是,效果是一样的。

您可以使用\clip将线条剪裁到所需区域,而不必担心指定它们应该有多长。尽管在这种情况下确定它们应该有多长相对简单,但情况并非总是如此。因此,剪裁是一种普遍有用的技术,可以应用于更复杂的情况。

\documentclass[margin=10pt,tikz,multi]{standalone}
\begin{document}
\begin{tikzpicture}[thick, scale=2.0]
  \draw[ultra thick] (-1,2) -- (0,0) -- (1,2);
  \clip (-1,2) -- (0,0) -- (1,2) -- cycle;
  \foreach \y in {.3, .6,...,2} \draw (-1,\y) -- (1,\y);
\end{tikzpicture}
\end{document}

剪裁线

相关内容