![在 tikz-3dplot 中绘制曲线(不一定是圆弧)](https://linux22.com/image/391244/%E5%9C%A8%20tikz-3dplot%20%E4%B8%AD%E7%BB%98%E5%88%B6%E6%9B%B2%E7%BA%BF%EF%BC%88%E4%B8%8D%E4%B8%80%E5%AE%9A%E6%98%AF%E5%9C%86%E5%BC%A7%EF%BC%89.png)
我正在尝试绘制一条曲线tikz-3dplot
那不是圆弧。我希望它由控制点指定,类似于tikz
。(0,0) to [controls=+(45:1) and +(135:1)] (1,0)
我知道我可以用 绘制圆弧,\tdplotdrawpolytopearc
但我在文档中找不到有关如何绘制任何其他类型曲线的任何信息。如果我使用与 2D 曲线相同的语法,似乎会选择一个控制点作用的默认平面(似乎是 xy 平面)。也许有办法选择那个平面(并为每个点更改它)?
以下是我所拥有的 MWE 和输出:
\documentclass[tikz]{standalone}
\usepackage{tikz,tikz-3dplot}
\begin{document}
\tdplotsetmaincoords{75}{130}
\begin{tikzpicture}[tdplot_main_coords]
% Shape and boundary
\draw[blue] (0,0,0)--(-1,1,0);
\fill[green,fill opacity=.8] (0,0,0)--(0,1,0)--(-1,1,0)--(-1,1,1)--(0,0,1);
\draw[blue] (0,0,0)--(0,1,0)--(-1,1,0)--(-1,1,1)--(0,1,1)--(0,0,1)--(0,0,0);
\draw[blue] (0,0,1)--(-1,1,1) (0,1,0)--(0,1,1);
% Natural guess how to draw curve
\draw[red] (0,0,0) to [controls=+(45:1) and +(135:1)] (0,1,0);
% Closest documented way how to draw curve
\tdplotdefinepoints(0,.5,-.3)(0,-.5,.3)(0,1.5,.3)
\tdplotdrawpolytopearc{.583}{}{}
\end{tikzpicture}
\end{document}
我想在这个棱柱的“面”上画一条曲线,它朝左,就像黑色曲线一样,但在端点处“强度”更大(像正弦曲线一样)。失败的尝试是红色曲线,它似乎位于棱柱“底部”面的平面上。
所以,我的问题是:如何在 3D 中绘制不是圆弧的曲线?
答案1
确实,的手册tikz-3dplot
对此并不太明确。但是,恕我直言,的主要功能tikz-3dplot
是安装 3D 坐标系的正交投影。除此之外,您还可以使用标准 Ti钾Z 命令。
特别是,您可以使用参数图来绘制任何您想要的东西。
\documentclass[tikz]{standalone}
\usepackage{tikz,tikz-3dplot}
\begin{document}
\tdplotsetmaincoords{75}{130}
\begin{tikzpicture}[tdplot_main_coords]
% Shape and boundary
\draw[blue] (0,0,0)--(-1,1,0);
\fill[green,fill opacity=.8] (0,0,0)--(0,1,0)--(-1,1,0)--(-1,1,1)--(0,0,1);
\draw[blue] (0,0,0)--(0,1,0)--(-1,1,0)--(-1,1,1)--(0,1,1)--(0,0,1)--(0,0,0);
\draw[blue] (0,0,1)--(-1,1,1) (0,1,0)--(0,1,1);
\draw plot[variable=\x,domain=0:1] (0,\x,{0.3*sin(\x*180)});
\end{tikzpicture}
\end{document}
但是,在您的示例中,您似乎正在寻找一种在其中一个面上绘制普通曲线的方法。为此,您只需使用该3d
库并在与相应面重合的平面上绘制曲线即可。
\documentclass[tikz]{standalone}
\usepackage{tikz,tikz-3dplot}
\usetikzlibrary{3d}
\begin{document}
\tdplotsetmaincoords{75}{130}
\begin{tikzpicture}[tdplot_main_coords]
% Shape and boundary
\draw[blue] (0,0,0)--(-1,1,0);
\fill[green,fill opacity=.8] (0,0,0)--(0,1,0)--(-1,1,0)--(-1,1,1)--(0,0,1);
\draw[blue] (0,0,0)--(0,1,0)--(-1,1,0)--(-1,1,1)--(0,1,1)--(0,0,1)--(0,0,0);
\draw[blue] (0,0,1)--(-1,1,1) (0,1,0)--(0,1,1);
\begin{scope}[canvas is yz plane at x=0]
\draw[red] (0,0) to [controls=+(45:1) and +(135:1)] (1,0);
\end{scope}
%\draw plot[variable=\x,domain=0:1] (0,\x,{0.3*sin(\x*180)});
\end{tikzpicture}
\end{document}
这些预测不仅适用于 Ti钾Z 命令,甚至带有外部图形。
\documentclass[tikz]{standalone}
\usepackage{tikz,tikz-3dplot}
\usetikzlibrary{3d}
\begin{document}
\tdplotsetmaincoords{75}{130}
\begin{tikzpicture}[tdplot_main_coords]
% Shape and boundary
\draw[blue] (0,0,0)--(-1,1,0);
\fill[green,fill opacity=.8] (0,0,0)--(0,1,0)--(-1,1,0)--(-1,1,1)--(0,0,1);
\draw[blue] (0,0,0)--(0,1,0)--(-1,1,0)--(-1,1,1)--(0,1,1)--(0,0,1)--(0,0,0);
\draw[blue] (0,0,1)--(-1,1,1) (0,1,0)--(0,1,1);
\begin{scope}[canvas is xz plane at y=1,transform shape]
\node at (-0.5,0.5) {\includegraphics[width=0.9cm]{example-image-duck}};
\end{scope}
%\draw plot[variable=\x,domain=0:1] (0,\x,{0.3*sin(\x*180)});
\end{tikzpicture}
\end{document}