Zeichnen einer Kurve (nicht unbedingt eines Bogens) in tikz-3dplot

Zeichnen einer Kurve (nicht unbedingt eines Bogens) in tikz-3dplot

Ich versuche eine Kurve zu zeichnen intikz-3dplotdas ist kein Kreisbogen. Ich möchte, dass er durch Kontrollpunkte angegeben wird, ähnlich wie tikzbei (0,0) to [controls=+(45:1) and +(135:1)] (1,0). Ich weiß, dass ich mit einen Kreisbogen zeichnen kann \tdplotdrawpolytopearc, aber ich konnte in der Dokumentation nichts darüber finden, wie man andere Kurventypen zeichnet. Wenn ich dieselbe Syntax wie für 2D-Kurven verwende, scheint eine Standardebene gewählt zu werden, in der die Kontrollpunkte wirken (scheint die xy-Ebene zu sein). Vielleicht gibt es eine Möglichkeit, diese Ebene zu wählen (und sie für jeden Punkt zu ändern)?

Hier ist ein MWE und eine Ausgabe für das, was ich habe:

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

Bildbeschreibung hier eingeben

Ich möchte auf der nach links gerichteten „Fläche“ dieses Prismas eine Kurve zeichnen, wie die schwarze Kurve, aber mit mehr „Stärke“ an den Endpunkten (wie eine Sinuskurve). Der fehlgeschlagene Versuch ist die rote Kurve, die in der Ebene der „unteren“ Fläche des Prismas zu liegen scheint.

Meine Frage ist also:Wie kann ich in 3D eine Kurve zeichnen, die kein Kreisbogen ist?

Antwort1

Es stimmt, dass das Handbuch von tikz-3dplotdiesbezüglich nicht allzu explizit ist. Meiner Meinung nach besteht die Hauptfunktion von jedoch tikz-3dplotdarin, eine orthonormale Projektion eines 3D-Koordinatensystems zu installieren. Abgesehen davon können Sie den Standard-Ti verwenden.kZ-Befehle.

Insbesondere können Sie parametrische Diagramme verwenden, um alles zu zeichnen, was Sie möchten.

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

Bildbeschreibung hier eingeben

In Ihrem Beispiel scheinen Sie jedoch nach einer Möglichkeit zu suchen, eine gewöhnliche Kurve auf eine der Flächen zu zeichnen. Dazu müssen Sie nur die 3dBibliothek verwenden und die Kurve in der Ebene zeichnen, die mit der entsprechenden Fläche zusammenfällt.

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

Bildbeschreibung hier eingeben

Diese Projektionen funktionieren nicht nur mit TikZ-Befehle aber auch mit externer Grafik.

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

Bildbeschreibung hier eingeben

verwandte Informationen