面向中小学教师的多学科可视化教学引擎 —— 让每一节课都有能动手的演示。
杏坛取自"孔子杏坛讲学"。这是一个给广大一线教师的课堂教学演示工具:不用做 PPT,而是直接在课堂上打开可交互的学科实验——函数曲线随手拖、化学反应宏观微观同步看、物理实验实时跑,所有演示按教师账号隔离保存,随时一键恢复。
函数实验室(自研引擎)
- 无限画布:函数曲线随视图平移/缩放无限延伸、采样自动细化,配合隐函数等值线视口重算,任意位置都是完整画面;2D ⇄ 3D 画布一键自由切换(含 y 表达式仍自动进 3D)
- 详细分类(小学 → 大学全学段,侧边栏按学段分组):
- 小学:① 变量与规律(正比例/反比例/面积体积)
- 初中:② 一次与反比例 ③ 二次函数(一般式/顶点式/交点式)
- 高中:④ 幂·指数·对数 ⑤ 三角函数(含 cot/sec/csc 与反三角) ⑥ 函数变换 ⑦ 数列与离散(阶乘/取整/泊松) ⑧ 圆锥曲线·向量场
- 大学:⑨ 微分与积分 ⑩ 级数·泰勒展开 ⑪ 傅里叶与信号 ⑫ 增长与微分方程(logistic/阻尼振动) ⑬ 概率与统计(正态/柯西/sigmoid/伽马) ⑭ 三维曲面
- 拓展:⑮ 参数曲线·极坐标
- 共 15 个分类、89 个一键预设;内置函数扩展至 cot/sec/csc/gamma/阶乘
- 选中即编辑:点击右侧列表或直接点击图中曲线选中函数,右侧面板自动显示该函数的表达式与全部参数,滑块 + 数值框自由调节
- 函数工具条(智能插入):光标落在参数上点 sin/√/log 等,自动包裹并带括号(
a→sin(a));已有括号不重复加,函数调用自动嵌套(sin(b)上点 cos →cos(sin(b))) - 函数分析:当前视口内零点、极值、截距一键分析,可标注到画布;math.js 符号导数解析式(离线自动降级为纯数值)
- 参数动画:每个参数可 ▶ 自动往复扫描,函数实时变形——"拖 a 看变化"的课堂自动化
- 自由嵌套:表达式可直接引用已有函数名,如先加
f(x)=a*x²,再加g(x)=sin(f(x)/2)——修改 f,g 实时联动;循环嵌套自动检测阻止 - 隐函数与极坐标直接输入:含
=的表达式自动按隐函数绘制(如x²+y²=25、x²/9−y²/4=1、笛卡尔叶形线,marching squares 等值线随视图缩放重算);r = 1+cos(θ)直接画极坐标曲线(心形线、玫瑰线、螺线) - 向量场与流线:输入 P(x,y)、Q(x,y) 即可生成向量场(箭头方向+颜色表示模长),点击图面释放粒子沿场运动画出流线
- 曲线样式:颜色/线宽/线型(实线、虚线、点线、点划线)自由组合
- 自动 2D/3D:输入含
y的表达式(如x²−y²)自动切换三维曲面视图(拖拽旋转/自动旋转/高度色图) - 13 个互动演示:导数与切线、定积分·黎曼和、泰勒逼近(sin/cos/eˣ)、傅里叶级数(方波/锯齿波)、DFT 频谱、极坐标玫瑰线、利萨茹曲线、摆线滚动动画、向量场与流线……
🧮 GeoGebra 画板(官方嵌入)
- 图形计算器 / 几何 / 3D / 经典版(含 CAS、表格)四种画板,中文界面
- 补齐隐函数(x²+y²=25)、极坐标、几何作图、符号计算等能力
- 画板可保存到账号(.ggb 格式),一键恢复
matter.js 驱动、真实单位换算(PPM=42):自由落体 vs 平抛、斜面滑块、碰撞、单摆、牛顿第二定律(F=ma,同力拉不同质量小车实时对比加速度);速度矢量、运动轨迹、重力 g 可调,实时 HUD 显示物理量。「光的折射与全反射」:调入射角与介质折射率(空气/水/玻璃/钻石),实时画入射/反射/折射光线,标斯涅尔定律数值与全反射临界角(光线追踪思路参考开源项目 ray-optics)。
- 🌉 古诗文意境:12 首小学/初中古诗(静夜思、望庐山瀑布、山行、清明、望天门山…),canvas 动态绘制意境场景(月夜、飞瀑、红枫、细雨、荷塘),逐句注释 + 译文 + 意境赏析;新增诗文只需在 chinese.js 加一条数据
- 🧩 课文脉络图:《背影》《春》《济南的冬天》《桃花源记》结构梳理,读文先读骨架
- ✍️ 写作框架:记叙文/议论文/说明文/读后感四类文体的结构流程与逐段要点
自研分子反应引擎:上方宏观实验现象,下方微观分子变化,同一时间轴联动。内置 7 个重点反应:水的电解(气泡 2:1、液面变化、分子拆分重组)、氢气燃烧、木炭燃烧(白光 + 石灰水变浑浊)、甲烷燃烧(蓝色火焰 + 水珠 + 浑浊)、铁与硫酸铜置换(红色铜析出、溶液变浅绿)、酸碱中和(酚酞褪色 ↔ H⁺ + OH⁻ → H₂O)、一氧化碳还原氧化铜(黑粉变红 + 尾气点燃)——原子运动可见质量守恒;新增反应只需写 JSON 阶段定义。
化学页另有两个板块(子标签切换):
- 🧭 元素周期表:118 种元素交互式周期表,点元素看中文名、原子量、电子排布、电负性、熔沸点等(数据 Periodic-Table-JSON,CC-BY-SA 3.0,本地内置)
- 🔬 分子 3D:球棍/空间填充/键线式三种模型查看水、CO₂、甲烷、苯、乙醇、葡萄糖等分子结构,支持输入任意 PubChem CID(引擎 3Dmol.js,BSD,本地内置;结构数据来自 PubChem 在线数据库)
- 登录/注册(salt+SHA-256,7 天 token 会话)
- 数据完全按账号隔离:数学演示、GeoGebra 画板、物理/化学配置均存到各自账号,互不可见
- 工作台统计 + 快速入口 + 最近保存
- 我的演示按学科筛选(全部/数学/物理/化学/语文/GeoGebra),带数量角标
- 上课模式:一键隐藏侧栏与两侧面板、画面占满全屏,适合课堂投屏;Esc 或浮动按钮退出,2D 画板随窗口自适应
- 📸 导出画面:数学(含 SVG 画板转位图、多画布拼接)、物理、化学(宏观+微观合成一张)、语文意境图、GeoGebra 画板,一键存 PNG 直接插课件
- 页内数学分类切换:工具栏下拉直达 15 个分类,免回侧边栏
- 完整保存/恢复:数学场景连参数、颜色、线型、显示状态、所在分类一起保存,打开即回到离开时的样子
- 统计数字实时取自各模块(分类/预设/演示·实验·反应数),内容扩充自动跟上
- 快速开始覆盖全学科:数学演示、化学反应、物理实验、古诗意境、课堂工具、GeoGebra,点击直达
- 随机点名:名单支持换行/逗号/顿号导入(自动去重),"开奖式"滚动动画定格;不重复模式抽遍全员后自动开新一轮;抽取记录可一键重置;名单随账号保存
- 课堂计时:1/3/5/10 分钟快捷档 + 微调,最后 10 秒变红闪烁,结束响提示音(WebAudio,零素材)——讨论、练习、小组活动的投影计时器
零依赖(无需 npm install),只需 Node.js ≥ 16:
cd engine
node server.js # 或直接双击 start.bat浏览器访问 http://localhost:6174,注册一个账号即可开始。
所有第三方库(JSXGraph、matter.js、math.js、3Dmol.js)均已本地化到
engine/public/vendor/,除 GeoGebra 画板与分子结构数据(PubChem)外无需联网。GeoGebra 画板从官方 CDN 加载。旧版 AI 课件原型(prototype/,GLM 驱动)已归档,如需使用请复制prototype/config.example.json为config.json并填入自己的密钥(config.json 不会被提交)。
engine/
├── server.js # Node.js 原生 http 服务(登录注册/会话/按账号隔离的演示存储)
├── logger.js # 日志系统(按天分文件/请求日志/业务审计/自动清理)
└── public/
├── index.html # 管理系统外壳(登录 → 工作台 → 学科模块)
├── shell.js # 应用外壳:导航、账号、保存/恢复、GeoGebra 接线
├── mathlab.js # 数学函数实验室(表达式解析/嵌套编译/隐函数等值线/极坐标/向量场/互动演示)
├── surface3d.js # 自研 Canvas 3D 曲面渲染器(画家算法/高度色图/光照)
├── physics.js # 物理仿真(matter.js + 真实单位换算)
└── chemistry.js # 化学宏观-微观双视图反应引擎
- 2D 绘图:JSXGraph | 3D 曲面:自研 Canvas 渲染器 | 物理:matter.js | GeoGebra:官方 Apps Embedding(教育用途免费)
node --test engine/test/engine.test.js engine/test/api.test.js37 项断言:引擎离线逻辑(表达式路由与 3D 自动切换、隐函数等值线几何、极坐标、场景完整往返含参数/样式、化学阶段签名一致性、反应解说与阶段数一致、语文数据健全性、课堂工具名单解析)+ API 集成与安全负路径(认证边界、路径穿越、输入校验、登录限速)。安全攻击测试详情见 docs/07。
| 文档 | 内容 |
|---|---|
| docs/06-软件工程总结.md | 工程基准:架构、设计模式、SOLID 落地、扩展指南(修改项目前必读) |
| docs/07-安全测试报告.md | 攻击测试用例、结果与修复清单 |
| docs/08-数学无限画布需求与设计.md | 无限画布/智能插入/函数分析的需求拆解、选型与验收记录 |
| docs/05-学科演示引擎设计.md | 引擎架构、选型结论、化学反应引擎设计 |
| docs/01-需求调研报告.md | 教师痛点与需求深度调研 |
| docs/02-竞品分析.md | 竞品与市场空白点 |
| docs/03-开源项目与技术选型.md | GitHub 可复用项目调研 |
- 数学:隐函数与极坐标的直接输入、解析几何圆锥曲线、向量场(v0.6)
- 化学反应库 · 初中重点反应:电解水、氢气燃烧、木炭燃烧、甲烷燃烧、铁与硫酸铜(v0.6)
- 工程化:日志系统、会话持久化、原子写入、登录限速、node:test 测试、攻击测试加固(v0.6)
- 语文模块 v1.0:古诗文意境(12 首)、课文脉络图、写作框架(v1.0)
- 课堂呈现三件套:上课模式投屏布局、全模块导出 PNG、页内分类切换(v1.1)
- 场景完整保存/恢复:参数、颜色、线型、显示状态、分类随场景走(v1.1)
- 化学反应库扩充:酸碱中和、一氧化碳还原氧化铜(v1.1)
- 物理:牛顿第二定律 F=ma 对比实验(v1.1)
- 课堂工具:随机点名(名单存账号、防重复轮转)+ 课堂计时(v1.2)
- 数学:圆锥曲线焦点/准线标注、参数方程直接输入
- 化学:高中反应(氧化还原、有机)反应库继续扩充
- 班级管理:教师建班、学生加入、演示分享链接
- 课题/比赛管理,形成完整教师工作台
教学引擎代码采用 MIT 许可。内嵌 GeoGebra 由 GeoGebra 官方条款 授权(教育用途免费)。vendor/ 内第三方库遵循各自原许可证:JSXGraph(LGPL/MIT 双许可)、matter.js(MIT)、math.js(Apache-2.0)、3Dmol.js(BSD);元素数据来自 Periodic-Table-JSON(CC-BY-SA 3.0);光学演示的交互设计参考开源项目 ray-optics(Apache-2.0)。