Asymptote是从MetaPost扩展而来的矢量数学绘图语言。它使用浮点数运算,支持三维图形,使用类似C++语法。
Asymptote的很多语法和MetaPost类似,但是也有不同。下面简单介绍它的使用方法。假设
Asymptote命令存在文件
test.asy中,则执行下面的命令可以生成
eps文件:
asy -V test
其中
-V参数会自动打开一个
PostScript浏览窗口,这样可以立即浏览生成的图形。
- 简单直线图形
Asymptote代码 | 生成的图像 |
---|
draw((0,0)--(100,0)--(100,100)
--(0,100)--cycle); | |
size(0,3cm);
draw(unitsquare); | |
unitsize(2cm,3cm);
draw(unitsquare);
label("$A$",(0,0),SW);
label("$B$",(1,0),SE);
label("$C$",(1,1),NE);
label("$D$",(0,1),NW); | |
- 曲线图形
Asymptote代码 | 生成的图像 |
---|
draw((0,0){up}..(100,25){right}..(200,0){down}); | |
draw((0,0){up}::(100,25){right}::(200,0){down}); | |
size(0,100);
path unitcircle=E..N..W..S..cycle;
path g=scale(2)*unitcircle;
filldraw(unitcircle^^reverse(g),yellow,black); | |
size(200);
real mexican(real x)
{return (1-8x^2)*exp(-(4x^2));}
int n=30;
real a=1.5;
real width=2a/n;
guide hat;
path solved;
for (int i=0; i<n; ++i) {
real t=-a+i*width;
pair z=(t,mexican(t));
hat=hat..z;
solved=solved..z;
}
draw(hat);
dot(hat,red);
draw(solved,dashed); | |
- graph module
Asymptote代码 | 生成的图像 |
---|
import graph;
size(150,0);
real f(real x) {return exp(x);}
pair F(real x) {return (x,f(x));}
xaxis("$x$");
yaxis("$y$",0);
draw(graph(f,-4,2,operator ..),red);
labely(1,E);
label("$e^x$",F(1),SE); | |