发布时间:2010-11-21 20:04:17
文章类别:TeX绘图
原文地址:http://blog.sina.com.cn/s/blog_5e16f1770100n31y.html

QQ群:91940767/145316219/141877998/80300084/194770436
淘宝店:http://latexstudio.taobao.com
技巧续篇:http://latexstudio.net/
常见数学公式问题集下载

实际,各个绘图语言,asymptote 应该说是最有前途也是非常精美的语言了。不过作为绘图鼻祖和宗师的metapost,学习她能让我们见识到TeX前辈们的超人智慧和精深的知识功底,也可以为我们学习其他绘图语言打好基础。
下面我摘录网友的一个例子,运行测试过的实例,供大家赏鉴。顺便简述metapost的编辑运行过程。
1. 编辑METAPOST源文件。本质就是一个文本编辑的过程。
2. 把源文件提交给METAPOST的处理程序mpost.exe编译。
3. 将编译产生的输出文件在TEX文档中利用\includegraphics{fig.1},并编译,图形就出现了。
效果图展示:
LaTeX技巧436:用metapos画一棵树

beginfig(1)
%% len: length
%% dire: direction
%% pos: position
%% w: width for pen
%% d: depth
%% s: scale
%% sign: -1->left, 1->right
vardef drawsubtree(expr len,dire,pos,w,s,sign,d)=
if d>0:
save newpos;pair newpos;
save newdir;numeric newdir;
save scale; numeric scale;
scale := s + uniformdeviate(0.1);
save dirminus; numeric dirminus;
dirminus := 1000/(20+5d);

newdir := (dire+55-dirminus+sign*sign)+uniformdeviate(10);
newpos := (len,0) rotated newdir shifted pos;
draw pos--newpos withpen pencircle scaled w withcolor 0.2white+.1green;
drawsubtree(scale*len,newdir,newpos,.5w,s,sign-1,(d-1));
newdir := (dire-65+dirminus-sign*sign)+uniformdeviate(10);
newpos := (len,0) rotated newdir shifted pos;
draw pos--newpos withpen pencircle scaled w withcolor 0.2white+.1green;
drawsubtree(scale*len,newdir,newpos,.5w,s,sign+1,(d-1));
else:
%draw pos withpen pencircle scaled w;
drawleave(pos,2len,.5w);
fi;
enddef;

vardef drawleave(expr pos,size,w)=
save a,b,c;
numeric a,b,c;
for i=0 upto 5:
a := uniformdeviate(size)-.5size;
b := uniformdeviate(size)-.5size;
c := uniformdeviate(size)-.5size;
draw pos..(a,b)+pos withpen pencircle scaled w withcolor .6green+.1red;
draw pos..(b,c)+pos withpen pencircle scaled w withcolor .6green+.1red;
endfor;
enddef;

width:=5bp;
d:=10;
u:=2cm;
pair pos; pos=(0,u);
draw origin--pos withpen pencircle scaled width withcolor 0.2white+.1green;
drawsubtree(.5u,90,pos,.5width,0.7,0,d);
endfig;
end


代码作者:GeeKer
选自:http://blog.chinaunix.net/u3/109940/showart_2188180.html

点赞(0)

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部