这些函数绘制得正确吗(两个平面和一条线)?

这些函数绘制得正确吗(两个平面和一条线)?

我想绘制2x+2y-z+9=0和通过点和的2x+2y-z-9=0线,但我认为我在平面公式中犯了一个错误,因为我认为这里没有我在 GeoGebra 中看到的图:X=(-1,0,4)+λ(2,2,-1)(-1,0,4)(1,2,3)

不同之处

红色轴为x-轴,绿色轴为y-轴。

我们如何才能制作类似于第二幅图的图形?

\documentclass{article}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amssymb}

\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
\pgfplotsset{soldot/.style={color=black,only marks,mark=*}}
\pgfplotsset{holdot/.style={color=red,fill=white,very thick,only marks,mark=*}}

\begin{document}

\begin{tikzpicture}[declare function={f1(\x,\y)=2*\x+2*\y+9;f2(\x,\y)=2*\x+2*\y-9;}]
\begin{axis}[
    axis on top,
    legend pos=outer north east,
    axis lines = center,
    xticklabel style = {font=\tiny},
    yticklabel style = {font=\tiny},
    zticklabel style = {font=\tiny},
    xlabel = $x$,
    ylabel = $y$,
    zlabel = $z$,
    legend style={cells={align=left}},
    legend cell align={left},
    view={-160}{25},
    clip=false
    ]
    \draw[red,very thick] (-1,0,4) -- (1,2,3);
    \addplot3[surf,mesh/ordering=y varies,shader=interp] {f1(x,y)};
    \addplot3[surf,mesh/ordering=y varies,shader=interp] {f2(x,y)};
    \addplot3[soldot] coordinates {(0,-9/2,0)} node[above right] {\((0,-\frac92,0)\)};
\end{axis}
\end{tikzpicture}

\end{document}

谢谢!

编辑。 塞巴斯蒂亚诺的好建议显示两个z轴的缩放值不同。因此,我从这个 MWE 中删除clip=false并添加了一些zmin=-1,zmax=5内容,但现在图表似乎被“切断”了:

切

我想像view={-160}{25}GeoGebra 一样保留正方形(带有的菱形)。

答案1

现在这更像是一个答案。

  1. 我使用unit vector ratio=1 1 1来防止轴被以不同的方式重新缩放。
  2. 我“手工”剪辑了这张照片。
  3. 这又有点像数学问题了。我对平面使用了不同的参数化。基本观察是,对于给定的zx+y是常数。这表明切换到新变量u=(x+y)/2v=(x-y)/2,并将它们重命名为xy。在新坐标中, 的域v(已重命名y)控制平面的“宽度”,即对于给定的 ,它的延伸距离z。 的域u,即新的 ,x被认为是z-55,如果增加这个域,平面会变得更高。
  4. 在这个新的参数化中,很容易将平面分成两部分,一部分为负z,一部分为正z。所以我先画负的,然后画一个x-y平面,最后画正的。红线是根据同样的逻辑画的。

所以代码变成

\documentclass{article}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amssymb}

\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
\begin{document}

\begin{tikzpicture}
\begin{axis}[width=16cm,
    set layers,colormap/viridis,   
    legend pos=outer north east,
    axis lines = center,
    xticklabel style = {font=\tiny},
    yticklabel style = {font=\tiny},
    zticklabel style = {font=\tiny},
    xlabel = $x$,
    ylabel = $y$,
    zlabel = $z$,ztick={2,4},%zticklabels={},
    legend style={cells={align=left}},
    legend cell align={left},
    view={-160}{25},
    unit vector ratio=1 1 1,xmin=-6,xmax=6,ymin=-6,ymax=6,zmin=-5,zmax=5,
    clip=false
    ]

    \clip ([xshift=1.5cm,yshift=1.5cm]current axis.south west) rectangle 
    ([xshift=-1.5cm,yshift=-1.5cm]current axis.north east);
    \addplot3[surf,mesh/ordering=y varies,shader=interp,
    domain=2:4.5,domain y=-8:8] ({(x+y)/2},{(x-y)/2},{2*x-9});
    \addplot3[surf,mesh/ordering=y varies,shader=interp,
    domain=-7:-4.5,domain y=-8:8] ({(x+y)/2},{(x-y)/2},{2*x+9});
    \addplot3[surf,blue,
    domain=-6:6,domain y=-6:6,opacity=0.5] {0};
    \draw[red,very thick]  (-5/3, -2/3, 13/3) -- (-4-5/3,-4-2/3,2+13/3);
    \addplot3[surf,mesh/ordering=y varies,shader=interp,
    domain=-4.5:-2,domain y=-8:8] ({(x+y)/2},{(x-y)/2},{2*x+9});
    \draw[red,very thick] (-5/3, -2/3, 13/3) -- (7/3, 10/3, 7/3);
    \addplot3[surf,mesh/ordering=y varies,shader=interp,
    domain=4.5:7,domain y=-8:8] ({(x+y)/2},{(x-y)/2},{2*x-9});
    \draw[red,very thick] (7/3, 10/3, 7/3) -- (7/3+4, 10/3+4, 7/3-2);
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

通过在平面方程中插入直线的参数化并求解 lambda,可以找到直线与平面的相交点。

相关内容