我正在尝试使用 Asymptote 在 3D 中绘制(1D)轨迹(因为我也绘制具有不透明度的表面并且不想对隐藏表面使用黑客技术)。
每条曲线由外部文件中的点定义csv
。以下一条曲线的最小示例可以正常工作(data.csv
当然,给定一个文件):
\documentclass[margin=1cm]{standalone}
\usepackage{asymptote}
\begin{document}
\begin{asy}
settings.outformat="pdf";
settings.prc=false;
settings.render=0;
import graph3;
currentprojection=orthographic(1,-2,4);
currentlight=(1,-1,1);
size3(200,200,80,IgnoreAspect);
file in=input("data.csv").line().csv();
real[][] a=in.dimension(0,0);
a=transpose(a);
real[] x=a[0];
real[] y=a[1];
real[] z=a[2];
draw(graph(x,y,z),blue,currentlight);
xaxis3(XY()*"$x_1$",Arrow3);
yaxis3(XY()*"$x_2$",Arrow3);
zaxis3("$y$",Arrow3);
\end{asy}
\end{document}
现在,我想在曲线上添加箭头来显示轨迹的方向。
如果轨迹是path
,我似乎可以使用 之类的东西轻松完成draw(pathname,Arrow(Relative(0.7)));
。但我无法将我的图形“转换”为曲线来做到这一点。
有什么想法我可以添加箭头吗?
我无法在曲线上绘制箭头。
答案1
在这种情况下,您需要使用Arrow3
而不是仅仅使用Arrow
。使用简单的数据文件,它提供
\begin{filecontents*}{data.csv}
0.81,0.59,0.1
0.31,0.95,0.2
-0.31,0.95,0.3
-0.81,0.59,0.4
-1,0,0.5
-0.81,-0.59,0.6
-0.31,-0.95,0.7
0.31,-0.95,0.8
0.81,-0.59,0.9
1,0,1
\end{filecontents*}
\documentclass[margin=1cm]{standalone}
\usepackage{asymptote}
\begin{document}
\begin{asy}
settings.outformat="pdf";
settings.prc=false;
settings.render=0;
import graph3;
currentprojection=orthographic(1,-2,4);
currentlight=(1,-1,1);
size3(200,200,80,IgnoreAspect);
file in=input("data.csv").line().csv();
real[][] a=in.dimension(0,0);
a=transpose(a);
real[] x=a[0];
real[] y=a[1];
real[] z=a[2];
draw(graph(x,y,z,operator..),blue,Arrow3(Relative(0.7)),currentlight);
xaxis3(XY()*"$x_1$",Arrow3);
yaxis3(XY()*"$x_2$",Arrow3);
zaxis3("$y$",Arrow3);
\end{asy}
\end{document}