2007年6月20日星期三

Asymptote学习系列(12)

作图命令:
 
所有的Asymptote图形都是基于4个基本的作图命令:其中的3个PostScript命令drawfillclip以它们出现的顺序处理,最后出现的会放在最上面,而label命令可以用于增加文本标签或外部EPS图形,则会放于所有上面的3个PostScript命令上面。
若你想在一个label上作图的话,可以使用layer函数:
void layer(picture pic=currentpicture);
它全重新创建一个新的PostScript/Latex图层,所有的图层顺序处理,最后出现的放在最上面。当然在图形内部,label命令还是会在其它3个PostScript命令的上面。
 
  • draw
 void draw(picture pic=currentpicture, Label L="", path g,align align=NoAlign, pen p=currentpen,arrowbar arrow=None, arrowbar bar=None, margin margin=NoMargin,Label legend="", marker marker=nomarker);
用于在pic上画path g,用画笔p。还有些其它的参数,其中意义为:
bar : 用来在g两端画条竖线,可取值为 None, BeginBar, EndBar (= Bar), Bars(=BeginBar & EndBar) ,而且它们都可以接受一个real型参数,用来指定竖线的长度(PostScript单位)。
arrowbar : 用来画箭头,可取为: None, Blank, BeginArrow, MidArrow, EndArrow(=Arrow), Arrows ,而且它们可以接受的参数包括:一个real型参数,用来指定大小(PostScript单位);一个real型参数angle用来指定角度; FillDraw, Fill, NoFill, Draw ;一个real型参数position指定位置。

void dot(picture pic=currentpicture, pair z, pen p=currentpen);
void dot(picture pic=currentpicture, pair[] z, pen p=currentpen);
void dot(picture pic=currentpicture, pair[] x, pair[] y, pen p=currentpen);
void dot(picture pic=currentpicture, Label L, pair z, align align=NoAlign,string format=defaultformat, pen p=currentpen)
void dot(picture pic=currentpicture, Label L, pen p=currentpen);
void dot(picture pic=currentpicture, path g, pen p=currentpen);
用于画点
 
示例:
 
path line=(0,0)--(5cm,0);

draw(line, Arrow(20bp,position=.75));
draw(shift(0,-2cm)* line,Arrow(20bp,40,.75,filltype=NoFill));

position pos=BeginPoint ;
pos.position=.75;
draw(shift(0,-4cm)*line, BeginArrow(20bp,pos));
draw(shift(0,-6cm)*line, BeginArrow(20bp,40,pos,filltype=NoFill));

path line=(0,0)--(5cm,0);
transform T= shift(0,-cm);

draw(line,linewidth(1mm),Bars);
draw(T^2*line,Bars(5mm));
draw(T^3*line ,linewidth(1mm),Bars(5mm));
draw(T^4* line,dotted+red,Bars);

pair O=0;
draw(scale(2)*Label( "N",.8red),O,10*N,linewidth(3mm));
draw(scale(2)*Label("S",.8red),O,10* S);
draw(scale(2)*Label("E",.8red), O,10*E);
draw(scale(2)*Label("W",.8 red),O,10*W);

draw(rotate(45)*Label( "NE"),O,5NE);
draw(rotate(-45)*Label ("SE"),O,5SE);
draw(rotate(-45)* Label("NW"),O,5NW);
draw(rotate(45)* Label("SW"),O,5SW);
 

--
一步一步教你从互联网赚钱 http://www.zqzn.com/index.asp?rid=key480769
投资理财 http://li-cai.blogspot.com/

没有评论: