Dibujar una curva (no necesariamente un arco) en tikz-3dplot

Dibujar una curva (no necesariamente un arco) en tikz-3dplot

Estoy tratando de dibujar una curva entikz-3dplotese no es el arco de un círculo. Me gustaría que se especifique mediante puntos de control, de forma similar a como tikzlo ha hecho (0,0) to [controls=+(45:1) and +(135:1)] (1,0). Sé que puedo dibujar un arco de círculo con \tdplotdrawpolytopearc, pero no pude encontrar nada en la documentación sobre cómo dibujar ningún otro tipo de curva. Si uso la misma sintaxis que para las curvas 2D, parece que se elige un plano predeterminado en el que actúan los puntos de control (parece el plano xy). ¿Quizás haya una manera de elegir ese avión (y cambiarlo para cada punto)?

Aquí hay un MWE y un resultado de lo que tengo:

\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}

ingrese la descripción de la imagen aquí

Me gustaría dibujar una curva en la "cara" de este prisma que mira hacia la izquierda, como la curva negra, pero con más "fuerza" en los puntos finales (como una curva sinusoidal). El intento fallido es la curva roja que parece estar en el plano de la cara "inferior" del prisma.

Entonces, mi pregunta es:¿Cómo puedo dibujar una curva en 3D que no sea un arco de círculo?

Respuesta1

Es cierto que el manual de tikz-3dplotno es demasiado explícito al respecto. Sin embargo, en mi humilde opinión, la característica principal tikz-3dplotes instalar una proyección ortonormal de un sistema de coordenadas 3D. Aparte de eso, puedes usar el Ti estándarkComandos Z.

En particular, puedes utilizar gráficos paramétricos para dibujar lo que quieras.

\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}

ingrese la descripción de la imagen aquí

Sin embargo, en tu ejemplo pareces estar buscando una forma de dibujar una curva ordinaria en una de las caras. Para ello sólo necesitas utilizar la 3dbiblioteca y dibujar la curva en el plano que coincide con la cara correspondiente.

\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}

ingrese la descripción de la imagen aquí

Estas proyecciones funcionan no sólo con TikComandos Z pero incluso con gráfica externa.

\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}

ingrese la descripción de la imagen aquí

información relacionada