¿Cómo obtener puntos en una curva 3D (para hacer animación 3D) en Asíntota?

¿Cómo obtener puntos en una curva 3D (para hacer animación 3D) en Asíntota?

Quiero hacer una animación 3D en Asíntota: la pequeña esfera azul que se mueve a lo largo de la curva cíclica 3D (que llamé "órbita8"). He oído que las curvas en Asíntota están parametrizadas. Sin embargo, no sé cómo obtener posiciones de puntos a lo largo de la órbita.

¡Me podría ayudar!

Mi MWE es el siguiente.

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

Respuesta1

Puedes usar point(orbit8,t)donde thay un tiempo. recomiendoeste gran tutorialasí como el asypictureBpaquete del autor del tutorial. De esa manera creas la salida con pdflatex -shell-escape <file>, donde filepodría contener

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

ingrese la descripción de la imagen aquí

Esto es sólo por diversión: crear una animación real. Este fragmento crea una serie de archivos pdf que se pueden convertir en un gif animado como se explica enesta respuesta.Asymtote tiene sus propias instalaciones para producir animaciones., pero yo personalmente uso a menudoestos métodos(pero este puede ser solo yo). El ingrediente más importante aquí esrelpoint, que OG señaló en los comentarios, así que todo el crédito es para ellos.

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

ingrese la descripción de la imagen aquí

información relacionada