2006年8月13日星期日

学用绘图工具MetaPost(二)

  1. 线性方程
  2. MetaPost可以解线性方程。处于从z1z2之间1/3位置的点z3可以表示为:
    z3=1/3[z1,z2]
    z1z2两点的直线上任意一点可以表示为:
    whatever[z1,z2]
    z1也可以用分量表示:(x1,y1)。下面是寻找两直线交点的例子:
    MetaPost代码生成的图像
    beginfig(7);
    z1=(-1.5cm,0);
    z2=(-3.2cm,-2cm);
    z3=(2cm,0);
    z4=(3cm,-2cm);
    z5=whatever[z1,z2]=whatever[z3,z4];
    draw z2--z1--z5;
    draw z4--z3--z5;
    pickup pencircle scaled 4pt;
    draw z1; draw z2; draw z3;
    draw z4; draw z5;
    endfig;
    fig7
  3. 图像里插入文字和符号
  4. label可以在图像里插入文字,后缀lft|rt|top|bot|ulft|urt|llft|lrt分别表示左、右、上、下、左上、右上、左下和右下。另外,通过btex...etex还可以插入LaTeX公式命令。
    beginfig(8);
    a=.8in; b=.6in;
    z0=(0,0);
    z1=-z3=(a,0);
    z2=-z4=(0,b);
    draw z1..z2..z3..z4..cycle;
    draw z1--z0--z2;
    label.top("a", .5[z0,z1]);
    label.lft("b", .5[z0,z2]);
    dotlabel.bot("(0,0)", z0);
    endfig;
    fig8
    beginfig(9);
    numeric u;
    u=1cm;
    draw (0,2u)--(0,0)--(4u,0);
    pickup pencircle scaled 1pt;
    draw (0,0){up}
       for i=1 upto 8: ..(i/2,sqrt(i/2))*u endfor;
    label.lrt(btex $\sqrt x$ etex, (3,sqrt 3)*u);
    label.bot(btex $x$ etex, (2u,0));
    label.lft(btex $y$ etex, (0,u));
    endfig;
    fig9
  5. 用gnuplot和xfig输出MetaPost文件
  6. 常用绘图工具gnuplot和xfig都可以输出MetaPost文件,然后就可以手工编辑,加入LaTeX公式等效果。xfig只要export成MetaPost文件就可以了。gnuplot可以用
    set terminal mp
    set output "filename.mp"
    输出为MetaPost文件。

没有评论: