使用正弦波在 tikz 中以 3D 形式绘制平面

使用正弦波在 tikz 中以 3D 形式绘制平面

我正在尝试绘制一个前缘具有正弦波的平面。

使用来自的代码这个例子我可以用类似的东西来画它

\documentclass{standalone}

\usepackage{tikz}
\usepackage{tikz-3dplot}
\begin{document}

\tdplotsetmaincoords{70}{70}
\begin{tikzpicture}[scale=3,tdplot_main_coords]
    \filldraw[draw=red,fill=red!20
    ]          (0,0,-0.5)
            -- (0,1,-0.5)
            -- (0,1,1)
            -- (0,0,1)
            -- (0,{0.1*sin(deg(4*pi*0.975)},0.975)
            -- ...lots more points....
            -- (0,{0.1*sin(deg(4*pi*-0.475)},-0.475)
            -- cycle;
    \draw[thick,->] (0,-0.2,0) -- (0,1.2,0) node[anchor=north west]{$x$};
    \draw[thick,->] (0,0,-0.5) -- (0,0,1.2) node[anchor=south]{$z$};
    \draw[thick,->] (-0.5,0,0) -- (1.2,0,0) node[anchor=north east]{$y$};
\end{tikzpicture}

\end{document}

我手动指定正弦曲线上的所有点。一定有更好的方法可以做到这一点,例如

--[domain=1:-0.5] (0,{0.1*sin(deg(4*pi*x)},x)

我附上了迄今为止手动操作的结果。我希望能够改变正弦波,这就是为什么我想要一种更好的方法。

在此处输入图片描述

答案1

你几乎明白了。查看代码:

\documentclass[tikz, border=5mm]{standalone}

\usepackage{tikz-3dplot}

\tdplotsetmaincoords{70}{70}

\begin{document}
  \begin{tikzpicture}[tdplot_main_coords]
    \draw [red, fill=red!20, domain=-.5:1, samples=100] plot (0,{.1*sin(deg(4*pi*\x))},\x) -- (0,1,1) -- (0,1,-.5) -- cycle;

    \begin{scope}[->, shorten >= 2mm]
        \draw (-.5,0,0) -- (2,0,0) node {$y$};
        \draw (0,-.5,0) -- (0,2,0) node {$x$};
        \draw (0,0,-.5) -- (0,0,2) node {$z$};
    \end{scope}
  \end{tikzpicture}
\end{document}

渲染图像

答案2

如果使用实际函数而不是一步一步手动绘制它会更容易。

输出

在此处输入图片描述

代码

\documentclass[margin=10pt]{standalone}
\usepackage{tikz}
\usepackage{tikz-3dplot}
\begin{document}

\tdplotsetmaincoords{70}{70}
\begin{tikzpicture}[scale=3,tdplot_main_coords]

\fill[draw=red, fill=red!20, variable=\z,domain=-.5:1,samples=200] 
    (0,0,-.5) plot (0,{sin(\z*pi r*4)/10},\z)
    -- (0,1,1)
    -- (0,1,-0.5)
    -- cycle;

\draw[thick,->] (0,-0.2,0) -- (0,1.2,0) node[anchor=north west]{$x$};
\draw[thick,->] (0,0,-0.5) -- (0,0,1.2) node[anchor=south]{$z$};
\draw[thick,->] (-0.5,0,0) -- (1.2,0,0) node[anchor=north east]{$y$};
\end{tikzpicture}
\end{document}

相关内容