在 tikz 中绘制“虚线” yz 平面

在 tikz 中绘制“虚线” yz 平面

我正在尝试用 tikz 绘制我的第一幅图,我需要以下方面的一些帮助。我想绘制一组“表面”,它由所有与 yz 平面平行的平面以及 yz 平面上的所有单个点组成。我画了平面,但很难画出点。所以我需要用点填充 yz 平面。你能帮我填补这个空白吗?

下面我给出了我目前的代码:

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\coordinate (O) at (0, 0, 0);
\draw[line width=0.3mm,->] (0,0,0) -- (4,0,0) node[anchor=north east]{$y$};     
\draw[line width=0.3mm,->] (0,0,0) -- (0,4,0) node[anchor=north east]{$z$};     
\draw[line width=0.3mm,->] (0,0,0) -- (0,0,7) node[anchor=east]{$x$};
\filldraw[color=blue!10!white,opacity=0.8] (0, 0, 2) -- (0, 3.5, 2) -- (2, 3.5, 2) --   (2, 0, 2) -- cycle;
\draw  (0, 0, 2) -- (0, 3.5, 2) -- (2, 3.5, 2) --   (2, 0, 2) -- cycle;
\filldraw[color=blue!10!white,opacity=0.8] (0, 0, 2.5) -- (0, 3.5, 2.5) -- (2, 3.5, 2.5) --   (2, 0, 2.5) -- cycle;
\draw  (0, 0, 2.5) -- (0, 3.5, 2.5) -- (2, 3.5, 2.5) --   (2, 0, 2.5) -- cycle;
\filldraw[color=blue!10!white,opacity=0.8] (0, 0, 3) -- (0, 3.5, 3) -- (2, 3.5, 3) --   (2, 0, 3) -- cycle;
\draw  (0, 0, 3) -- (0, 3.5, 3) -- (2, 3.5, 3) --   (2, 0, 3) -- cycle;
\filldraw[color=blue!10!white,opacity=0.8] (0, 0, 3.5) -- (0, 3.5, 3.5) -- (2, 3.5, 3.5) --   (2, 0, 3.5) -- cycle;
\draw  (0, 0, 3.5) -- (0, 3.5, 3.5) -- (2, 3.5, 3.5) --   (2, 0, 3.5) -- cycle;
\filldraw[color=blue!10!white,opacity=0.8] (0, 0, 4) -- (0, 3.5, 4) -- (2, 3.5, 4) --   (2, 0, 4) -- cycle;
\draw  (0, 0, 4) -- (0, 3.5, 4) -- (2, 3.5, 4) --   (2, 0, 4) -- cycle;
\filldraw[color=blue!10!white,opacity=0.8] (0, 0, 4.5) -- (0, 3.5, 4.5) -- (2, 3.5, 4.5) --   (2, 0, 4.5) -- cycle;
\draw  (0, 0, 4.5) -- (0, 3.5, 4.5) -- (2, 3.5, 4.5) --   (2, 0, 4.5) -- cycle;
\filldraw[color=blue!10!white,opacity=0.8] (0, 0, 5) -- (0, 3.5, 5) -- (2, 3.5, 5) --   (2, 0, 5) -- cycle;
\draw  (0, 0, 5) -- (0, 3.5, 5) -- (2, 3.5, 5) --   (2, 0, 5) -- cycle;
\filldraw[color=blue!10!white,opacity=0.8] (0, 0, 5.5) -- (0, 3.5, 5.5) -- (2, 3.5, 5.5) --   (2, 0, 5.5) -- cycle;
\draw  (0, 0, 5.5) -- (0, 3.5, 5.5) -- (2, 3.5, 5.5) --   (2, 0, 5.5) -- cycle;
\end{tikzpicture}
\end{document}

提前致谢!

答案1

我使用 tikzlibrary和选项创建了一个\plane冗余命令来缩短代码,并在 x=0 处添加了一个虚线平面。patternspattern=dots

注意:我用\draw[fill=<color>]一个命令绘制黑色边框和填充。此外,您还可以使用它rectangle在两点之间绘制一个矩形。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{patterns}

\begin{document}

\newcommand{\plane}[2][fill=blue!10!white]{
    \draw[opacity=0.8,#1] (0, 0, #2) rectangle (2, 3.5, #2);
}

\begin{tikzpicture}
    \coordinate (O) at (0, 0, 0);
    \draw[line width=0.3mm,->] (O) --++ (4,0,0) node[anchor=north east]{$y$};     
    \draw[line width=0.3mm,->] (O) --++ (0,4,0) node[anchor=north east]{$z$};     
    \draw[line width=0.3mm,->] (O) --++ (0,0,7) node[anchor=east]{$x$};

    \plane[draw=none,pattern=dots]{0};

    \foreach \x in {2,2.5,...,5.5}
        \plane{\x};
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案2

让我将我的评论转换为答案......有些类似于右手回答:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{patterns}

\usepackage[active,tightpage]{preview}% only for test
\PreviewEnvironment{tikzpicture}
    \setlength\PreviewBorder{1em}


\begin{document}
    \begin{tikzpicture}[L/.append style={line width=0.3mm,->}]
\coordinate (O) at (0, 0, 0);
\draw[L] (O) --++ (4,0,0) node[below left] {$y$};
\draw[L] (O) --++ (0,4,0) node[below left] {$z$};
\draw[L] (O) --++ (0,0,7) node[left]       {$x$};
%
\fill[pattern=dots] (O) |- (2, 3.5, 0) |- cycle;
%
\foreach \x in {2,2.5,...,5.5}
    \draw[fill=blue!10!white,opacity=0.6] (0,0,\x) |- (2,3.5,\x) |- cycle;
    \end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容