Asymptote作图两例

 用Asymptote作图还是很方便的,前提是要改变用那种可视化工具作图的习惯,不是一来就打开软件,一边画一边改。Asymptote在画之前,需要先在草稿上画个大概,有个构思,要哪些点,或辅助点,这些规划好了,然后再用Asymptote,还是挺快的。

unitsize(2cm);

pair O=(0, 0);
pair X=(5, 0);
pair a=(4, 0);
pair ah=(4, 0.5);
pair ahl=(4, 0.3);
pair d=(3, 0);
pair dh=(3, 0.3);
pair c=(2.5, 0);
pair ch=(2.5, 0.3);
pair b=(1.5, 0);
pair bh=(1.5, 0.5);
pair bhl=(1.5, 0.3);

draw(O -- X, Arrow);
label(Label("$x$"), X, SW);
label(Label("$+$"), X, NW);
dot(a);
label(Label("$a$"), a, S);
draw(a -- ah, dashed+red);
dot(d);
draw(d -- dh, dashed);
dot(c);
draw(c -- ch, dashed);
dot(d);
draw(b -- bh, dashed+red);
dot(b);
label(Label("$b$"), b, S);

draw(ch -- bhl, Arrow);
label(Label("$y_n$"), ch -- bhl, N);
draw(dh -- ahl, Arrow);
label(Label("$x_n$"), dh -- ahl, N);

效果图如下:

再来一个:

import math;

unitsize(2cm);

pair O=(0, 0);
pair X=(5, 0);
pair a=(4, 0);
pair ah=(4, 0.6);
pair ahl=(4, 0.3);
pair c=(3, 0);
pair ch=(3, 0.5);
pair d=(2.5, 0);
pair dh=(2.5, 0.3);
pair b=(1.5, 0);
pair bh=(1.5, 0.6);
pair bhl=(1.5, 0.5);

draw(O -- X, Arrow);
label(Label("$x$"), X, SW);
label(Label("$+$"), X, NW);
dot(a);
label(Label("$a$"), a, S);
draw(a -- ah, dashed+red);
dot(d);
draw(d -- dh, dashed);
dot(c);
draw(c -- ch, dashed);
dot(d);
draw(b -- bh, dashed+red);
dot(b);
label(Label("$b$"), b, S);

draw(ch -- bhl, Arrow);
label(Label("$y_n$"), ch -- bhl, N);
draw(dh -- ahl, Arrow);
label(Label("$x_n$"), dh -- ahl, N);
pair cc=extension(dh, ahl, c, ch);
filldraw(d--dh--cc--c--cycle, fillpen=opacity(0.1), drawpen=gray);

效果如下:

Posted by 独孤求真 2010年9月27日 19:01