Skip to content

Releases: Z-415/dsh-geogebra

v0.1.0 —— 命令画图,出 PNG 或可编辑 .ggb

Choose a tag to compare

@Z-415 Z-415 released this 24 Oct 15:22

这是什么

DSH 宿主插件:让模型用一条 GeoGebra 命令列表画出真正的 GeoGebra 图形,直接落地成文件。

  • PNG:只有坐标系与图形,没有代数区 / 工具栏 / 输入栏 / 虚拟键盘,可直接插讲义或 Word
  • .ggb:GeoGebra 可打开、可继续拖动改参数的可编辑构造文件(写 .ggb 时自动附一张同名 .png)
  • 无窗口(无头 Edge)、不抢鼠标键盘、不改变前台窗口标题
  • 命令写错会报错并点名那条命令,不会给你一张空白图

装法

dsh plugin --profile desktop add github:Z-415/dsh-geogebra
# 装完必须完全重启 DSH Desktop(托盘右键 → 退出 → 重开)

要求:Windows + Microsoft Edge + 能访问 geogebra.org。零 npm 依赖,不需要 GeoGebra 桌面版。

两个工具

工具 作用
ggb_draw 命令数组 → PNG / .ggb;out 写 .ggb 就产出可编辑构造文件 + 同名 PNG
ggb_eval 只执行命令并回读结果值,不出图(画图前自查数学用)

例子:

ggb_draw(commands: ["f(x)=x^3-3x", "T=Tangent(1,f)", "A=(1,-2)"],
         out: "C:\\Users\\<你>\\Desktop\\图.ggb")

为什么不用 getPNGBase64 + --dump-dom

任务书最初设想的路线在 GeoGebra 5.4.920 + 无头 Edge 上实测是坏的:

  • api.getPNGBase64(...) 抛 Unable to parse base64 string.
  • api.getScreenshotBase64(cb) 抛 Class$S1671: Index: 22, Size: 7
  • --screenshot + --virtual-time-budget:代数区文字照常渲染,canvas 内容永不提交,图里只有空坐标系(虚拟时间饿死了帧生产)

所以改成:无头 Edge 开 --remote-debugging-port,宿主用 CDP 实时等页面自报就绪,等两帧后
Page.captureScreenshot 按图形区矩形精确裁剪。.ggb 用 api.getBase64()(返回整份 ZIP 的 base64),
宿主解码、校验 PK 魔数后落盘。

质量门槛

  • contract.test.mjs:清单契约、两个工具注册、输出字段白名单与 schema 逐字段一致、
    参数错误时字段不越界 —— 不联网、不起浏览器,几秒跑完
  • e2e.test.mjs:真起无头 Edge,验数学判据(切线 y = -2)、PNG 尺寸 = 宽高 × dpi/96、
    .ggb 是合法 ZIP 且含 geogebra.xml、错误命令不留文件
  • CI 在 windows-latest 上跑这两套(GitHub 的 Windows runner 自带 Edge)

已知限制

  • 必须联网(首次要从 geogebra.org 拉约 30MB,20–40 秒;之后走缓存 2–4 秒)
  • 只出 2D 图形视图,3D 未验证
  • .ggb 目前只写不读:能产出给你打开,还不能把已有 .ggb 读进来继续加对象
  • 调用串行(同一时刻一个 Edge),并发调用自动排队
  • 命令参数顺序按 GeoGebra 规矩:切线是 Tangent(横坐标, 函数)

许可

MIT。GeoGebra 是 International GeoGebra Institute 的商标,本插件只加载官方 Web 版 applet,
不打包、不分发 GeoGebra 的任何代码或资源。