Asymptote 学习记录(5) 模块roundedpath的用法

看这个代码:

 1 import settings;
 2 settings.tex = "pdflatex";
 3 pdfviewer="/usr/bin/okular";
 4 outformat="pdf";
 5 texpreamble("\usepackage{CJKutf8}\AtBeginDocument{\begin{CJK}{UTF8}{gbsn}}\AtEndDocument{\clearpage\end{CJK}}");
 6 // example file for 'roundedpath.asy'
 7 // written by stefan knorr
 8 // import needed packages
 9 import roundedpath;
10 // define open and closed path
11 path A = (0,0)--(10,10)--(30,10)--(20,0)--(30,-10)--(10,-10);
12 path B = A--cycle;
13 draw(shift(-60,0)*A, green);
14 draw(shift(-30,0)*roundedpath(A,1), red);
15 // draw open path and some modifications
16 
17 for (int i = 1; i < 20; ++i)
18   draw(roundedpath(A,i/4), rgb(1 - i*0.049, 0, i*0.049) + linewidth(0.5));
19 
20 draw(shift(-60,-30)*B, green);
21 draw(shift(-30,-30)*roundedpath(B,1), red);
22 
23 //draw closed path and some modifications
24 
25 for (int i = 1; i < 20; ++i)                          // only round edges
26   draw(shift(0,-30)*roundedpath(B,i/4), rgb(0.5, i*0.049,0) + linewidth(0.5));
27 
28 for (int i = 1; i < 20; ++i)                          // round edged and scale 
29   draw(shift(0,-60)*roundedpath(B,i/4,1-i/50), rgb(1, 1 - i*0.049,i*0.049) + linewidth(0.5));
30 
31 for (int i = 1; i < 50; ++i)                          // shift (round edged und scaled shifted version)
32   draw(shift(-30,-60)*shift(10,0)*roundedpath(shift(-10,0)*B,i/10,1-i/80), rgb( i*0.024, 1 - i*0.024,0) + linewidth(0.5));
33 
34 for (int i = 1; i < 20; ++i)                          // shift (round edged und scaled shifted version)
35   draw(shift(-60,-60)*shift(10,0)*roundedpath(shift(-10,0)*B,i/4,1-i/50), gray(i/40));

编译之后产生的图像为

posted @ 2013-02-18 19:14  叶卢庆  阅读(224)  评论(0编辑  收藏  举报