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);
效果如下: