2007年6月10日星期日

Asymptote学习系列(3)

size和unitsize
参考: http://www.artofproblemsolving.com/Wiki/index.php/Asymptote:_Basics

asymptote是基于坐标的图形语言。每个点都表示为(a,b),其中a是x坐标,b是y坐标。

当然,在一个平面上,你可以任意选一个点作为原点,在两个坐标方向上选任意长度作为单位长度。asymptote会在整个作图完成后,自动地把图形调整到输出页面的中心,因此,原点是可以忽略的。在asymptote中,单位长度有个缺省的值1/72英寸(PostScript中一个大点的长度)。如果你不改变图形的缩放比例的话,在asymptote中,(0,0)点和(72,0)点之间就是正好1英寸的距离。如果你要画3cm和图的话,用这个单位就不是很方便。

函数unitsize可以用来指定你的图形的单位长度。如:
unitsize(72);   // 当前图形的x,y的单位都是72*(1/72)英寸
unitsize(72,36); //
当前图形的x的单位都是72*(1/72)英寸, y方向是0.5英寸

unitsize(pic,72,36); //图形pic中的x的单位都是72*(1/72)英寸,y方向是0.5英寸
unitsize(3cm); //当前图形的x,y的单位都是3cm
asymptote中有些内定的常量:pt(1/72.72英寸),inch(英寸),cm,mm。运行过 unitsize(72)后,(0,0)到(72,0)间距离就变成了72英寸长度了。

函数size是用来指定你的图形最终的大小是多少。如:
size(5cm,0);
size(5cm,3cm);
size(5cm);
size命令把图形的最终大小给出来了,会忽略unitsize指定的单位大小。即
size(5cm);
unitsize(3cm);
draw(unitsquare);

size(5cm)
unitsize(5cm);
draw(unitsquare);
两组命令会得到同样大小的一个图形。


--
海阔天空,我所感兴趣的一切,从股票到C++,从笑话到Linux,从subversion到Latex
http://hai-kuo.blogspot.com/

1 条评论:

redspider 说...

在Google上搜 Asymptote 转到您这来的,很荣幸我们的兴趣比较接近:GNU/Linux、Perl、C++、LaTeX、股票,看 MetaPost 的语法不习惯,刚开始转到 Asymptote 上 :) ,我还喜欢美国大片