右边的竖线被南移了一点, 这是由add(pic2,pic.fit(),(1/4,0),N); 引起的, 因为align参数N是放在北边
unitsize(4cm);
picture pic;unitsize(pic,4cm);
pair A = (0,0);
pair B = (1/2,0);
pair C = (1/2,1);
pair D = (0,1);
fill(pic,box(A,C),lightgray);
draw(pic,A--B,blue,MidArrow);
draw(pic,C--D,blue,MidArrow);
picture pic2;unitsize(pic2,4cm);
add(pic2,pic.fit(),(1/4,0),N);
draw(pic,D--A,red,MidArrow);
draw(pic2,C--B,red,MidArrow);
add(pic.fit(),(0,0),E);
add(pic2.fit(),(1,0),E);
如果改成add(pic2,pic.fit(),(0,1/2),E); , 放在东边, 发现右边的竖线被西移了一点
unitsize(4cm);
picture pic;unitsize(pic,4cm);
pair A = (0,0);
pair B = (1/2,0);
pair C = (1/2,1);
pair D = (0,1);
fill(pic,box(A,C),lightgray);
draw(pic,A--B,blue,MidArrow);
draw(pic,C--D,blue,MidArrow);
picture pic2;unitsize(pic2,4cm);
add(pic2,pic.fit(),(0,1/2),E);
draw(pic,D--A,red,MidArrow);
draw(pic2,C--B,red,MidArrow);
add(pic.fit(),(0,0),E);
add(pic2.fit(),(1,0),E);
如果改成 居中对齐add(pic2,pic.fit(),(1/4,1/2),(0,0)); 就没有问题了:
unitsize(4cm);
picture pic;unitsize(pic,4cm);
pair A = (0,0);
pair B = (1/2,0);
pair C = (1/2,1);
pair D = (0,1);
fill(pic,box(A,C),lightgray);
draw(pic,A--B,blue,MidArrow);
draw(pic,C--D,blue,MidArrow);
picture pic2;unitsize(pic2,4cm);
add(pic2,pic.fit(),(1/4,1/2),(0,0));
draw(pic,D--A,red,MidArrow);
draw(pic2,C--B,red,MidArrow);
add(pic.fit(),(0,0),E);
add(pic2.fit(),(1,0),E);
另外需注意: 源picture和目标picture应设定相同的unitsize防止被重新缩放.
设定相同的size不能防止被重新缩放.
若将unitsize 改为size 就都乱套了:
size(4cm);
picture pic;size(pic,4cm);
pair A = (0,0);
pair B = (1/2,0);
pair C = (1/2,1);
pair D = (0,1);
fill(pic,box(A,C),lightgray);
draw(pic,A--B,blue,MidArrow);
draw(pic,C--D,blue,MidArrow);
picture pic2;size(pic2,4cm);
add(pic2,pic.fit(),(1/4,0),N);
draw(pic,D--A,red,MidArrow);
draw(pic2,C--B,red,MidArrow);
add(pic.fit(),(0,0),E);
add(pic2.fit(),(1,0),E);
Related
6.5 Frames and pictures
How can I have Asymptote rescale a drawing automatically to fit a width |