# steiner-lab **Repository Path**: swner_admin/steiner-lab ## Basic Information - **Project Name**: steiner-lab - **Description**: 斯坦纳点探索实验室 - 交互式几何画板 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-28 - **Last Updated**: 2025-12-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 斯坦纳点探索实验室 一个用于探索斯坦纳树最短连接问题的交互式几何画板工具。 ## 简介 斯坦纳树问题是经典的几何优化问题:如何用最短的总长度将给定的点连接起来。本工具提供了直观的可视化界面,帮助学生理解和探索这一数学问题。 ## 文件说明 | 文件 | 说明 | 适用场景 | |------|------|----------| | `steiner-lab-tablet-lite.html` | **推荐** 平板精简版 | 课堂教学、平板设备 | | `steiner-lab-tablet.html` | 平板完整版 | 功能丰富的平板使用 | | `steiner-lab-full.html` | 桌面完整版 | PC端完整体验 | | `steiner-lab-guided.html` | 引导探索版 | 新手入门、分步引导 | | `steiner-lab-explore.html` | 自由探索版 | 开放式探索学习 | | `steiner-lab-advanced.html` | 高级版 | 深入研究 | ## 界面布局(平板精简版) ``` ┌─────────────────────────────────────────────────────────┐ │ 工具栏 │ ├──────────┬─────────────────────────────┬────────────────┤ │ │ │ 📊 统计数据 │ │ 操作 │ │ 辅助点: 0 │ │ 指南 │ 画布区域 │ 线段: 0 │ │ │ │ 线段长: 0.00 │ │ │ │ 手写长: 0.00 │ │ │ │ 总长度: 0.00 │ │ │ ├────────────────┤ │ │ │ 🎯 挑战目标 │ │ │ │ 📊 角度说明 │ └──────────┴─────────────────────────────┴────────────────┘ ``` ## 功能特点 ### 绘图工具 | 工具 | 快捷操作 | 说明 | |------|----------|------| | 选择 | 点击/拖动 | 选中并移动辅助点 | | 画点 | 点击空白 | 添加辅助点(最多16个) | | 画线 | 拖动连接 | 从一点拖到另一点创建线段 | | 手写 | 自由绘制 | 手写笔自由画线 | ### 辅助功能 - **撤销/重做**:操作历史管理(最多20步) - **角度显示**:查看连接点处的夹角 - **自动交点**:线段相交自动生成交点 - **结构化**:将手写线转换为规范线段 - **示例方案**:查看预设的连接方案 - **切换场景**:正方形/城市网络/三角形/物流配送 ### 统计数据(右侧面板) - 辅助点数量 - 线段数量 - 线段总长度 - 手写线总长度 - **总长度**(重点关注) ## 性能优化 ### 内存限制 | 类型 | 限制值 | 说明 | |------|--------|------| | 辅助点 | 16个 | 超出后无法添加 | | 总点数 | 50个 | 包含固定点和辅助点 | | 线段 | 100条 | 超出后自动清理旧线段 | | 笔画 | 30笔 | 手写笔画数量 | | 每笔点数 | 100点 | 自动采样降低密度 | | 历史记录 | 20条 | 撤销/重做步数 | | 内存上限 | 2MB | 超出后自动清理 | ### 技术实现 - TypedArray 预分配内存(节省80%内存) - requestAnimationFrame 渲染节流(60fps) - 定期内存监控和自动清理 - 离屏Canvas缓存静态内容 ## 使用方法 ### 本地运行 ```bash # 启动服务 python3 -m http.server 8080 -b 0.0.0.0 # 访问 http://localhost:8080/steiner-lab-tablet-lite.html ``` ### 部署到服务器 将整个文件夹上传到 Web 服务器的静态资源目录即可。 ## 文档 - `docs/学生手册/` - 学生使用指南(MD/PDF/PPTX) - `docs/教师手册/` - 教师教学指南(MD/PDF/PPTX) ## 数学背景 ### 斯坦纳树问题 给定平面上n个点,求一棵连接所有点的树,使得总边长最小。可以添加额外的点(斯坦纳点)来减少总长度。 ### 正方形最优解 对于边长为2的正方形四个顶点: - 最优总长度:`2 + 2√3 ≈ 5.46` - 需要添加2个斯坦纳点 - 每个斯坦纳点处三条线段夹角均为 **120°** ### 120度定理 在最优斯坦纳树中,每个斯坦纳点恰好连接3条边,且任意两条边的夹角为120°。 ## 更新日志 ### 2024-12-30 - 统计面板移至右侧 - 移除"历史最短"显示 - 选中操作栏改为顶部居中 - 统一内存配置,增强内存监控 - 添加数组长度限制和自动清理 ## 许可证 MIT License