2007年6月15日星期五

Asymptote学习系列(10)

数据类型(续):

transform
transform t=(t.x,t.y,t.xx,t.xy,t.yx,t.yy) 把一个点 pair (x,y) 变为点 (x',y') ,其中
x' = t.x + t.xx * x + t.xy * y
y' = t.y + t.yx * x + t.yy * y
它和 PostScript 中的 transformation [t.xx t.yx t.xy t.yy t.x t.y] 是一样的。
另外,它可以通过[ * ]号从左边作用在pair、path、guide、pen、transform、frame 和 picture 上。transform 之间可以互相组合,还有个求逆的操作:
transform inverse(transform t);
还支持整数的指数操作 [ ^ ] ,如:
transform t=shift((0,1));
transform t2=t^2;   //表示t操作两次,
常用的函数包括:
transform identity();
      单位变换
transform shift(pair z);
      移动距离坐标 z;
transform shift(real x, real y);
      移动距离坐标 (x,y);
transform xscale(real x);
      x方向放大x倍
transform yscale(real y);
      y方向放大y倍
transform scale(real s);
      在x和y方向同时放大s倍
transform slant(real s);
      把点 (x,y) 变为 (x+s*y,y);
transform rotate(real angle, pair z=(0,0));
      以z为中心旋转 angle 度角
transform reflect(pair a, pair b);
      以线 line a--b 为轴,求镜像
shift(transform t) 返回 transforms (t.x,t.y,0,0,0,0)
shiftless(transform t) 返回 transforms (0,0,t.xx,t.xy,t.yx,t.yy)

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

没有评论: