2008年7月7日星期一

Asmyptote study 1

MetaPost 看得有点晕,而且搞定在 GSview 中预览加了 label 的图形还得配置参数。还好,在搜索解决方案的过程中发现了 Asymptote,嘿嘿,模仿 MetaPost 的原理和 C++ 语法,这个我喜欢。用 C++ 的语法绘出和 MetaPost 一样酷的图形,想想都能得意地笑出来。

不过似乎 Asymptote 的中文资料比较少,只有 bbs.ctex.org 上一位网友翻译了一部分文档,而且还没译完,看来还得啃英文的了。

下面是我研究了2个小时的部分成果:
 1 //导入 math 模块,里面包含下面要用到的 extension 函数
2 import math;
3
4 //将 cm 长度缩到 50%
5 //real cm = 0.5cm;
6
7 //线条宽度 1bp(我理解相当于 MetaPost 里的 pen 为直径 1bp 的圆点)
8 //灰度 50%
9 pen grid = linewidth(1bp) + gray(0.5);
10
11 //画出坐标。将 Arrow 换成 Arrows 则画出双箭头
12 draw((0,0)--(0,7.5cm), grid, Arrow);
13 draw((0,0)--(7.5cm,0), grid, Arrow);
14
15 pair a=(0,0), b=(5cm,5cm), c=(5cm,0), d=(0,5cm);
16 draw(a--b);
17 draw(c--d);
18
19 //计算 a--b 和 c--d 的交点,要用到 math 模块
20 pair e = extension(a,b,c,d);
21
22 //用红色标记出点 c
23 dot(e, red);
24
25 //文字标签
26 label("$x$", (7.5cm,0), S);
27 label("$y$", (0,7.5cm), W);
28 label("$Nodal$", e, E);
29 label("$A$", a, S);
30 label("$B$", b, E);
31 label("$C$", c, S);
32 label("$D$", d, W);

没有评论: