我正在尝试用 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 处添加了一个虚线平面。patterns
pattern=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}