【干货】乖猪的Asymptote教程
从Geogebra到Asymptote
Geogebra并非仅仅是一套免费的数学工具, 它更是一个平台. 这个平台旨在连接满怀热情的教师与学生, 为他们提供一种崭新的数学探索与学习方式.
Geogebra Classic程序自带了转为Asymptote的工具.但是它生成的代码并不易于阅读.为此乖猪从EvanChen的博客找到了一个转换工具,它可以把Geogebra生成的代码格式化.快说:谢谢Evan Chen.
警告 1.
这个Python脚本的原理是正则表达式,如果出bug了你可以改下ggb导出的源码. 2.
有些情况下ggb导出的代码在绘制点的时候只有label而没有dot命令,这或许是因为你设置点的时候把点弄太小了,乖猪亲测是把网页版ggb的存档导入classic版的程序就可以导出了(.
(挖坑)Asymptote的3D作图
以下内容由GPT5-mini撰写,真实性我不知道
快说:谢谢GPT5
Asymptote 的 3D 绘图入门
导入与投影
- 在文件顶部引入 three 模块:
import three; - 设置投影:
currentprojection = perspective(3,2,1);或currentprojection = orthographic();
- 在文件顶部引入 three 模块:
简单示例:坐标轴 + 球体 + 参数曲面
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22import three;
size(350);
currentprojection = perspective(3,2,1);
triple O = (0,0,0);
triple ex = (1.6,0,0), ey = (0,1.6,0), ez = (0,0,1.6);
// 坐标轴
draw(O--ex, Arrow3);
draw(O--ey, Arrow3);
draw(O--ez, Arrow3);
label("$x$", ex, E); label("$y$", ey, N); label("$z$", ez, Z);
// 球体(半径1)
surface sph = sphere(O, 1);
material mat = material(diffusepen=orange+opacity(0.6));
draw(sph, surfacepen=mat);
// 参数化曲面:鞍面 z = x^2 - y^2
surface saddle = surface((real u, real v) => (u, v, u*u - v*v),
-1.2, 1.2, -1.2, 1.2, Spline);
draw(saddle, surfacepen=material(diffusepen=cyan+opacity(0.45)));小技巧
- 使用
surfacepen=material(..., emissivepen=...)能获得更好的光照效果。 - 增加
shipout或调整size()控制输出分辨率与画布大小。 - 若从 GeoGebra 导出,先用格式化脚本清理再手动替换坐标与材质以便可读与美观。
- 使用