Asymptote에서 3D 애니메이션을 만들고 싶습니다. 파란색의 작은 구가 3D 순환 곡선("orbit8"이라고 명명함)을 따라 이동합니다. 점근선의 곡선은 매개변수화되어 있다고 들었습니다. 그러나 궤도를 따라 점의 위치를 얻는 방법을 모르겠습니다.
저 좀 도와 주 시겠어요!
내 MWE는 다음과 같습니다.
\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}
답변1
시간이 point(orbit8,t)
어디에 있는지 사용할 수 있습니다 . t
나는 추천한다이 훌륭한 튜토리얼asypictureB
튜토리얼 작성자의 패키지 도 마찬가지입니다 . 그렇게 하면 pdflatex -shell-escape <file>
다음을 file
포함할 수 있는 출력을 생성할 수 있습니다 .
\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}
이것은 단지 재미를 위한 것입니다. 실제 애니메이션을 만드는 것입니다. 이 조각은 다음에 설명된 대로 애니메이션 gif로 변환할 수 있는 일련의 PDF 파일을 생성합니다.이 답변.Asymtote에는 애니메이션을 제작할 수 있는 자체 시설이 있습니다., 하지만 저는 개인적으로 자주 사용합니다.이러한 방법(그러나 이것은 단지 나일 수도 있습니다). 여기서 가장 중요한 성분은OG가 의견에서 지적한 relpoint, 그래서 전체 크레딧이 그들에게 돌아갑니다.
\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}