我想制作一幅由三个平面在以下线性系统的一个点相交而成的图片:2x-y = 0 -x+2y-z=-1 -3y+4z=4
但是,我偶然发现了以下问题,
- 第一个和第三个图给了我一条线而不是一个平面,因为在命令中,我将 z 坐标设置为 0,我希望它是任何实数,因此给了我一个平面。
- 轴看起来像是在平面后面,我希望它穿过平面,就像 geogebra 的 3D 图形一样。
我该如何解决这些问题?这些是我使用的命令:
\begin{tikzpicture}
\begin{axis}[
view={45}{25},
axis lines=middle,
width=10cm,height=10cm,
xmin=-10,xmax=10,ymin=-10,ymax=10,zmin=-10,zmax=10,
xlabel={$x$},ylabel={$y$},zlabel={$z$}
]
\addplot3[surf, fill=red
, semitransparent, faceted color=red, samples=0]({x}, {2*x}, {0});
\addplot3[surf, fill=red
, semitransparent, faceted color=blue, samples=0]({0}, {y}, {(4+3*y)/4});
\addplot3[surf, fill=red
, semitransparent, faceted color=red, samples=0]{1-x^1+2(y^1)};
\node [below left] at (axis cs:0,0,0) {$O$};
\filldraw[ball color=black] (axis cs: 0,0,1) circle (0.07cm);
\end{axis}
\end{tikzpicture}
答案1
PGFPlots 没有超出图本身的 z 缓冲区。这意味着最后一个图将完全位于前景中。要在 PGFPlots 中绘制此图,您需要解决三个平面和轴在给定区域中的顺序。 -然后制作\clip
并按正确顺序绘制该区域中的表面。
简而言之,这将是大量的手动工作,将依赖于view
。
这里三架飞机相互叠合:
\documentclass[tikz, border=1cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
view={45}{25},
xmin=-10, xmax=10,
ymin=-10, ymax=10,
zmin=-10, zmax=10,
axis lines=middle, axis equal=true,
width=10cm, height=10cm,
xlabel={$x$}, ylabel={$y$}, zlabel={$z$},
]
%Plane1: 2x-y=0
\addplot3[
surf, fill=red, faceted color=red, semitransparent,
domain=-10:10, samples=20,
y domain=0:10, samples y=10,
variable=s, variable y=t,
]({s}, {0.5*s}, {t});
%Plane2: -x+2y-z=-1
\addplot3[
surf, fill=green, faceted color=green, semitransparent,
domain=-10:10, samples=10,
y domain=0:10, samples y=10,
]{1-x+2*y};
%Plane3: -3y+4z=4
\addplot3[
surf, fill=blue, faceted color=blue, semitransparent,
domain=-10:10, samples=10,
y domain=0:10, samples y=10,
]{(4+3*y)/4};
\end{axis}
\end{tikzpicture}
\end{document}