请考虑以下 MWE:
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
\pgfplotsset{
axis equal image,
axis lines = center,
label style={font=\tiny},
xlabel = $x$,
ylabel = $y$,
zlabel = $z$,
xticklabel style = {font=\tiny},
yticklabel style = {font=\tiny},
zticklabel style = {font=\tiny},
}
\begin{document}
\begin{center}
\begin{tikzpicture}
\begin{axis} [
xmax=3,
zmax=3,
zmin=-3,
view={130}{20},
%clip=false <- Not working
]
\addplot3[blue!60,samples=50] {3*x-4*y-8} node[below right] {\tiny $\alpha_2$};
\addplot3[red,thick] (1+8*x,6*x,4*x) node[below right] {\tiny $L_1$};
\addplot3[blue!60,samples=50] {3*x-4*y+2} node[below right] {\tiny $\alpha_1$};
\end{axis}
\end{tikzpicture}
\end{center}
\end{document}
我想要这样的东西:
我尝试了一段时间来创建适合图纸的左侧图形,但轴总是比三个图形长。如何修复?
我想添加一个标签来指示平面和线之间的距离。
此外,x
-axis 必须随着 -axis 而改变y
。
没有node labels
显示,当我尝试显示clip=false
时图表就消失了。
最后,samples=50
我认为平面太不必要了(如果我不添加它,它们看起来就被剪掉了)。我们如何才能减少编译时间?
- 直线方程
L_1
:(x,y,z) = (1,0,0) + λ(8,6,4)
- 飞机
α_1
:3x-4y+2=0
- 飞机
α_2
:3x-4y-8=0
谢谢!
答案1
如果我没记错的话,这里有一个概念问题。如果你想画一个由 定义的平面a x + b y + c = 0
,你不能使用\addplot3[blue!60,samples=50] {3*x-4*y+2};
。后者将绘制一个函数z = a x + b y + c
。但是,上面的平面方程告诉你,对于任何满足 方程的x
和,可以是任意的。所以你需要通过在其中找到两个线性独立的向量来绘制平面,然后例如通过绘制由后者的差异定义的形状。既然你似乎喜欢动画,你可能想用 来做。y
z
tikz-3dplot
\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{tikz-3dplot}
\begin{document}
\foreach \X in {130,140,...,480}
{\begin{tikzpicture}[font=\sffamily,declare function={
f1(\x)=(3*\x+2)/4;
f2(\x)=(3*\x-8)/4;
f3(\x)=(3*\x-2)/4;
DeltaX=2;
X1=-6/25;
X2=24/25;
X3=(X1+X2)/2;
}]
\path[use as bounding box] (-4.5,-4) rectangle (4.5,4);
%\node[below right] at (-4.5,4) {\X};
\tdplotsetmaincoords{70}{\X}
\begin{scope}[tdplot_main_coords]
\draw (0,0,0) -- (3,0,0) node[pos=1.1] {$x$};
\draw[-latex] (0,0,0) -- (0,3,0) node[pos=1.1] {$y$};
\draw[-latex] (0,0,0) -- (0,0,3) node[pos=1.1] {$z$};
\ifnum\X<310
\fill[blue,opacity=0.35] ({X2-DeltaX},{f2(X2-DeltaX)},2)
-- ({X2-DeltaX},{f2(X2-DeltaX)},-2)
-- ({X2+DeltaX},{f2(X2+DeltaX)},-2)
-- ({X2+DeltaX},{f2(X2+DeltaX)},2) -- cycle;
\draw[red,thick] ({X3+DeltaX},{(f3(X3+DeltaX)},0)
-- ({X3-DeltaX},{(f3(X3-DeltaX)},0);
\fill[red,opacity=0.35] ({X1-DeltaX},{f1(X1-DeltaX)},2)
-- ({X1-DeltaX},{f1(X1-DeltaX)},-2)
-- ({X1+DeltaX},{f1(X1+DeltaX)},-2)
-- ({X1+DeltaX},{f1(X1+DeltaX)},2) -- cycle;
\else
\fill[red,opacity=0.35] ({X1-DeltaX},{f1(X1-DeltaX)},2)
-- ({X1-DeltaX},{f1(X1-DeltaX)},-2)
-- ({X1+DeltaX},{f1(X1+DeltaX)},-2)
-- ({X1+DeltaX},{f1(X1+DeltaX)},2) -- cycle;
\draw[red,thick] ({X3+DeltaX},{(f3(X3+DeltaX)},0)
-- ({X3-DeltaX},{(f3(X3-DeltaX)},0);
\fill[blue,opacity=0.35] ({X2-DeltaX},{f2(X2-DeltaX)},2)
-- ({X2-DeltaX},{f2(X2-DeltaX)},-2)
-- ({X2+DeltaX},{f2(X2+DeltaX)},-2)
-- ({X2+DeltaX},{f2(X2+DeltaX)},2) -- cycle;
\fi
\end{scope}
\end{tikzpicture}}
\end{document}