【干货】乖猪的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();
  • 简单示例:坐标轴 + 球体 + 参数曲面

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    import 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 导出,先用格式化脚本清理再手动替换坐标与材质以便可读与美观。

【干货】乖猪的Asymptote教程
https://gooodpig.pages.dev/year/08/16/【干货】乖猪的Asymptote教程/
作者
GooodPig
发布于
2025年8月16日
许可协议