Wie erhält man in Asymptote Punkte auf einer 3D-Kurve (um eine 3D-Animation zu erstellen)?

Wie erhält man in Asymptote Punkte auf einer 3D-Kurve (um eine 3D-Animation zu erstellen)?

Ich möchte eine 3D-Animation in Asymptote erstellen: die kleine blaue Kugel, die sich entlang der 3D-zyklischen Kurve bewegt (die ich „orbit8“ genannt habe). Ich habe gehört, dass Kurven in Asymptote parametrisiert sind. Ich weiß jedoch nicht, wie ich die Positionen der Punkte entlang der Umlaufbahn ermitteln kann.

Könnten Sie mir bitte helfen!

Mein MWE ist wie folgt.

\documentclass{standalone}
\usepackage{asymptote}
\begin{document}
\begin{asy}
import three;
currentprojection=obliqueX;
unitsize(1cm);
draw(O--4 * X,Arrow3); 
draw(O--4 * Y,Arrow3); 
draw(-1*Z--4 * Z,Arrow3); 
label("$x$", 4 * X, NW);
label("$y$", 4 * Y, SE);
label("$z$", 4 * Z, E);
real a=.4;
triple U=(-a,-a,1),L=(a,a,1);
path3 orbit8=
(0,1,2)..(0,2,1)..(0,1,0)..U..(1,0,2)..(2,0,1)..(1,0,0)..L..cycle;
draw(orbit8,1bp+black);
dot(L,8bp+.8blue);
dot(U,5bp+.8red);
draw((0,0,2)--(0,0,4),6bp+green,Arrow3()); 
\end{asy}
\end{document}

Antwort1

Sie können verwenden, point(orbit8,t)wo teine Zeit ist. Ich empfehledieses tolle Tutorialsowie das asypictureBPaket vom Autor des Tutorials. Auf diese Weise erhalten Sie die Ausgabe mit pdflatex -shell-escape <file>, wobei Folgendes fileenthalten sein könnte:

\documentclass[border=3.14mm]{standalone}
\usepackage{asypictureB}
\begin{document}
\begin{asypicture}{name=asyani}
import three;
currentprojection=obliqueX;
unitsize(1cm);
draw(O--4 * X,Arrow3); 
draw(O--4 * Y,Arrow3); 
draw(-1*Z--4 * Z,Arrow3); 
label("$x$", 4 * X, NW);
label("$y$", 4 * Y, SE);
label("$z$", 4 * Z, E);
real a=.4;
triple U=(-a,-a,1),L=(a,a,1);
path3 orbit8=
(0,1,2)..(0,2,1)..(0,1,0)..U..(1,0,2)..(2,0,1)..(1,0,0)..L..cycle;
draw(orbit8,1bp+black);
dot(L,8bp+.8blue);
draw((0,0,2)--(0,0,4),6bp+green,Arrow3()); 
dot(point(orbit8,0.5),5bp+.8red);
\end{asypicture}
\end{document}

Bildbeschreibung hier eingeben

Das ist nur zum Spaß: eine echte Animation erstellen. Dieser Codeausschnitt erstellt eine Reihe von PDF-Dateien, die in ein animiertes GIF umgewandelt werden können, wie indiese Antwort.Asymtote verfügt über eigene Einrichtungen zur Erstellung von Animationen, aber ich persönlich benutze oftdiese Methoden(aber das kann auch nur bei mir der Fall sein). Die wichtigste Zutat hier istrelpoint, auf den OG in den Kommentaren hingewiesen hat, also gebührt ihnen alle Anerkennung.

\documentclass[border=3.14mm]{standalone}
\usepackage{filecontents}
\begin{filecontents*}{orbiter.asf}
\begin{asypicture}{name=asyani}
import three;
currentprojection=obliqueX;
unitsize(1cm);
real mytime = @mytime;
draw(O--4 * X,Arrow3); 
draw(O--4 * Y,Arrow3); 
draw(-1*Z--4 * Z,Arrow3); 
label("$x$", 4 * X, NW);
label("$y$", 4 * Y, SE);
label("$z$", 4 * Z, E);
real a=.4;
triple U=(-a,-a,1),L=(a,a,1);
path3 orbit8=
(0,1,2)..(0,2,1)..(0,1,0)..U..(1,0,2)..(2,0,1)..(1,0,0)..L..cycle;
draw(orbit8,1bp+black);
dot(L,8bp+.8blue);
draw((0,0,2)--(0,0,4),6bp+green,Arrow3()); 
dot(relpoint(orbit8,mytime),5bp+.8red);
\end{asypicture}
\end{filecontents*}
\usepackage{asypictureB}
\standaloneenv{asypicture}
\usepackage{pgffor}
\begin{document}
\def\myangle{45}
\foreach \mytime in {0,0.025,...,0.975}
{
\RequireAsyRecompile
\input{orbiter.asf}
}
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen