跳转至

真理发现实验室 (Truth Discovery Lab) — 项目方案

🧭 项目愿景

让科学真理的发现过程可以被亲手经历,而不是被告知。

传统科学教育只教"结果"——最速降线的答案是摆线,但没有人能自己"发现"它。本项目通过 MR(混合现实)技术,让人在真实物理空间中以交互方式重演科学发现的全过程,从而真正理解物理、地理、数学中的核心真理。

硬件基础: Pico 4 Ultra(彩色透视 + 手势追踪 + WebXR 支持)


📐 整体架构

┌─────────────────────────────────────────────────────┐
│                Truth Discovery Lab                    │
├──────────────┬──────────────┬────────────────────────┤
│  物理实验室   │   地理实验室  │    数学实验室          │
│              │              │                        │
│ 最速降线     │ 河流蜿蜒     │ 曲率可视化             │
│ 单摆等时性    │ 板块运动     │ 分形探索              │
│ 开普勒定律    │ 风化侵蚀     │ 拓扑变换              │
│ 自由落体     │ 大气环流     │ 四维可视化             │
│ 电磁感应     │ 洋流         │                       │
│ 布朗运动     │              │                       │
├──────────────┴──────────────┴────────────────────────┤
│                   AR 叠加层                           │
│  (速度矢量、能量条、实时数据、历史对比、发现挑战)       │
├──────────────────────────────────────────────────────┤
│                物理引擎 (cannon-es)                    │
│                3D 渲染 (Three.js)                     │
│                WebXR 交互层                           │
│                真实传感器桥接 (Arduino)                │
└──────────────────────────────────────────────────────┘

三阶段实施计划


第一阶段:桌面 3D 模拟 (Phase 1)

目标: 在电脑浏览器中构建完整的 3D 物理模拟,验证所有实验设计 阶段时长: 2-4 周 所需: 无需 VR 设备,任何浏览器即可运行

1.1 技术栈

组件 选择 说明
3D 渲染 Three.js + react-three-fiber 成熟、浏览器原生
物理引擎 cannon-es Web 端最好的刚体物理引擎
框架 Vite + React + TypeScript 快速开发
状态管理 zustand 轻量、适合交互状态
部署 GitHub Pages / Vercel 免费托管

1.2 首个实验:最速降线模拟器

核心交互流程:

用户打开页面 → 看到 3D 空间中的 A、B 两点
在空间中用鼠标"画"一条曲线
释放小球 → 球沿曲线滚下 → 计时
叠加显示:速度矢量箭头、势能/动能转换条、加速度方向
画第二条曲线 → 双球同时滚下 → 直观对比耗时
系统提示:伯努利 1696 年挑战题目
      → 用户试错 → 最终接近摆线 → 显示"你发现了摆线!"

可视化覆盖层:

元素 显示位置 说明
速度矢量 小球上方 长短箭头表示当前速度大小和方向
能量条 轨道侧面 实时显示势能(蓝色)→动能(红色)转换
加速度箭头 小球下方 显示重力分量沿切线方向的变化
耗时榜单 屏幕侧边 多条曲线同时对比
曲率圆 曲线上 在每个点显示当前曲率半径
摆线参考 淡灰色虚线 "理论最佳"的虚影参考

1.3 第二阶段扩展实验 (Phase 1 全部)

建立以下实验,每个独立页面但共享框架:

物理学 (6 个实验)

# 实验 核心交互 可视化内容
1 最速降线 画曲线→球滚→对比 速度矢量、能量转换、曲率
2 单摆等时性 调节摆长/质量/角度→计时 周期显示、相位图、能量转换
3 开普勒三定律 放置行星→调节速度→观察轨道 面积速度、近日点/远日点标注
4 自由落体 从高处"扔"不同质量的球 位移-时间曲线、速度-时间曲线
5 电磁感应 拖动磁棒在线圈中运动 磁场线、感应电流箭头、实时电流表
6 布朗运动 "缩小"到分子尺度观察 花粉颗粒轨迹、分子碰撞可视化

地理 (4 个实验)

# 实验 核心交互 可视化内容
7 河流蜿蜒 "塑造"地形→水流过 流速分布、侵蚀区域、沉积区域
8 板块运动 手推大陆板块 应力分布、山脉隆起、地震点
9 风化侵蚀 加速时间×100,000 年 岩石→土壤的转变过程
10 大气环流 旋转地球→见风带 加热空气粒子、冷热环流动画

数学 (4 个实验)

# 实验 核心交互 可视化内容
11 曲率可视化 在 3D 空间画曲线 曲率圆实时跟随、高曲率区域高亮
12 分形探索 设置迭代次数→层层展开 精确迭代动画、缩放无限细节
13 拓扑变换 拖动甜甜圈变形 不变量(欧拉示性数)标注
14 四维可视化 旋转超立方体投影 3D 投影动态变化、棱/面计数

1.4 实现优先级顺序

1
2
3
4
5
6
7
8
Phase 1.1 → 最速降线 (核心验证)
Phase 1.2 → 自由落体 + 单摆 (基础物理)
Phase 1.3 → 开普勒定律 (进阶物理)
Phase 1.4 → 河流蜿蜒 + 板块运动 (地理)
Phase 1.5 → 曲率 + 分形 (数学)
Phase 1.6 → 电磁感应 + 布朗运动 (扩展物理)
Phase 1.7 → 拓扑 + 四维 (扩展数学)
Phase 1.8 → 风化 + 大气 + 洋流 (扩展地理)

第二阶段:WebXR 沉浸式体验 (Phase 2)

目标: 通过 Pico 4 Ultra 浏览器(WebXR)实现沉浸式 3D 交互 阶段时长: 4-8 周 所需: Pico 4 Ultra(已有)+ 任何支持 WebXR 的浏览器

2.1 WebXR 适配方案

核心优势——零安装,直接访问:

1
2
3
Pico 4 Ultra 浏览器 → 输入 URL → 自动进入 VR/MR 模式
不需要安装任何 App,不需要发布到官方商店
后端仍然是 Three.js 代码,但增加 WebXR 交互层
功能 实现方式 Pico 4 Ultra 支持
VR 沉浸模式 WebXR sessionMode: 'immersive-vr' ✅ 原生支持
MR 透视模式 WebXR sessionMode: 'immersive-ar' ✅ 彩色透视
手柄交互 WebXR Gamepad API + 射线点击 ✅ Pico 手柄
手势追踪 WebXR Hand Input API ✅ Pico 4 Ultra 支持
空间锚点 WebXR Anchors API ✅ 部分支持

2.2 交互升级:VR 新体验

与 Phase 1 的"鼠标拖拽"不同,Phase 2 的交互变为**身体参与**:

最速降线 VR 体验

你站在一个虚拟实验室中 (或通过透视看到真实桌面)
举起手柄/手 → 在空中"画"一条曲线(手臂的真实动作)
握住小球 → 松开 → 球沿曲线滚下
你可以绕着轨道走 → 从任何角度观察
蹲下 → 看到球底部的速度矢量箭头特写
伸出手 → "抓住"飞驰而过的球 → 感受阻力
挑战模式:系统生成随机 A、B 点,你必须在 3 次尝试内逼近摆线

各实验的 VR 交互增强

实验 鼠标版 (Phase 1) VR 版 (Phase 2)
最速降线 鼠标画曲线 手柄在空中画曲线 + 绕轨道走动观察
单摆 滑块调参数 手"拿"着摆锤拉到不同高度释放
开普勒 鼠标拖行星 "站"在太阳旁边看行星绕转,伸手触摸轨道
板块 鼠标推板块 双手推两大板块,感受压力反馈(震动)
分形 鼠标点按钮 "走"进分形内部,缩放如同穿越无限空间
自由落体 鼠标拖到高处 从"比萨斜塔"顶点松手扔球

2.3 MR 混合现实模式

利用 Pico 4 Ultra 的彩色透视功能,将虚拟实验叠加到真实桌面:

戴上 Pico 4 Ultra
看到真实的桌面、双手、周围环境(彩色透视)
桌面上出现虚拟的 A、B 点
你的真实手在空中画一条虚拟的轨道
轨道浮在桌面上方——一个虚拟的小球沿着它滚下
速度矢量、能量条浮在空中,和真实桌面融为一体
你可以在房间里走动,从任何角度观察实验

MR 的优势: - 保留真实物理世界的空间感(你的身体有参照物) - 看到自己的真实双手操作虚拟物体(减少晕眩感) - 可以同时布置多个实验在房间的不同位置 - 和真实物理模型结合(见 Phase 3)

2.4 手势追踪交互

Pico 4 Ultra 支持手指级追踪。这意味着:

1
2
3
基础:握拳 = 抓取物体,张开 = 释放
进阶:食指伸出 = 射线指向,拇指+食指捏合 = 精细操作
自然:用手势"画"曲线,用手"拨"摆锤,用手"推"板块

2.5 发现模式(重要!)

每个实验都包含**"发现模式"**——这是本项目的灵魂:

发现模式:最速降线
├─ 情景设定:1696 年,伯努利向你发出挑战
├─ 已知条件:A 到 B,仅重力作用
├─ 你的任务:在 10 次尝试内找到最快路径
├─ 提示系统:
│   ├─ 无提示(困难模式)
│   ├─ 每次失败后提示一条线索(例如:"试试让起点更陡")
│   └─ 显示"温度图"——你画的曲线与摆线的接近程度
├─ 奖励:
│   ├─ 发现成功 → 系统展示伯努利的原始推导手稿
│   ├─ 显示你超越了多少同时代数学家
│   └─ 自动记录到你的"发现履历"
└─ 学习模式:直接展示摆线 + 交互式公式推导

第三阶段:完整 MR 实验室 (Phase 3)

目标: 真实物理传感器 + AR 叠加 = 真正的 MR 混合现实 阶段时长: 8-12 周 所需: Pico 4 Ultra + Arduino/传感器套件(约 ¥500)

3.1 真实传感器桥接

这是 Phase 3 的核心——把**真实物理世界**的数据实时传入 MR 空间:

1
2
3
4
5
6
7
8
9
┌──────────┐    ┌────────────┐    ┌─────────────┐
│ 真实实验  │    │ Arduino/    │    │ Pico 4 Ultra │
│ 物理模型  │───→│ 传感器板    │───→│ (WebSocket)  │
│          │    │            │    │             │
│ 小球滚动  │    │ 加速度计    │    │ MR 叠加显示  │
│ 摆锤摆动  │    │ 陀螺仪      │    │ 实时数据     │
│ 电磁运动  │    │ 霍尔传感器  │    │ 可视化覆盖   │
│ 自由落体  │    │ 超声波测距  │    │ 对比分析     │
└──────────┘    └────────────┘    └─────────────┘

技术方案:

1
2
3
4
5
6
7
8
9
真实物理实验 → Arduino 采集传感器数据
    ↓ (USB 串口 / BLE / WiFi)
本地 Node.js 桥接服务
    ↓ (WebSocket)
Pico 4 Ultra 浏览器 (Three.js + WebXR)
3D 模型实时同步真实物体的运动
AR 叠加:速度、能量、轨迹、理论对比

3.2 真实物理模型 + AR 叠加

每个实验都可以有"纯虚拟"和"真实+AR"两种模式:

示例:最速降线完整 MR 版

【真实桌面】
你 3D 打印了三条轨道模型(直线、抛物线、摆线)
每个轨道底部嵌入刻度标记

【Arduino 传感器】
每个轨道起点有红外感应器(检测释放时刻)
终点有超声波测距仪(测量位置)、加速计(检测球的速度)

【Pico 4 Ultra 透视图】
你看到:
  真实的轨道模型
  + 小球位置上方浮着实时速度数值
  + 三条轨道的耗时排行榜(浮在桌面空中)
  + 小球的运动轨迹线(AR 画笔)
  + 理论值虚影(显示当前误差)
  + 能量转换动画(势能→动能)

【交互】
你用手势选择"对比模式"
  → 三个球同时释放
  → 系统自动计时并显示结果
  → 摆线最快,误差 <1%
  → 你亲手验证了一个 300 年前的数学发现

3.3 不同实验的真实传感器配置

实验 真实物理模型 传感器 成本
最速降线 3D 打印的多轨道模型 红外感应器 ×3 + 加速计 ¥80
单摆等时性 带刻度支架 + 不同摆长 角度传感器 + 计时器 ¥50
自由落体 竖直导轨 + 落球 超声波测距 + 高速计时 ¥60
电磁感应 线圈 + 磁棒 + 导轨 霍尔传感器 + 电流表 ¥100
布朗运动 大屏幕显示显微镜画面 摄像头实时追踪 ¥150
板块运动 沙盘 + 两个板块模型 压力传感器阵列 ¥120
河流蜿蜒 倾斜沙盘 + 水循环 摄像头识别水流路径 ¥100
风化侵蚀 不同类型岩石样本 高倍摄像头 ¥80

3.4 空间锚点与多实验布局

利用 WebXR Anchors API,用户可以将不同的实验布置在真实房间的不同位置:

1
2
3
4
5
6
7
8
9
【客厅茶几】——最速降线实验
【书房书桌】——单摆等时性
【卧室角落】——开普勒行星轨道
【走廊墙面】——河流蜿蜒模拟

戴着头显,你可以在家中走动
→ 经过茶几时,最速降线实验自动"亮起"
→ 走到书房,看到单摆在桌子上摆动
→ 每个实验的数据都实时显示,互相独立

3.5 多人协作(扩展功能)

你(Pico 4 Ultra)和朋友(Quest 3 或手机)
同时进入同一个实验空间

你在最速降线实验中画了一条曲线
朋友立刻看到你的曲线和它的耗时排名
你们可以:
  → 口头讨论:"我的直线用了 2.3 秒"
  → 把你的曲线"复制"给朋友
  → 一起挑战更快曲线
  → 在空间里"见面"(基础 avatars)

3.6 发现履历系统

所有实验记录自动保存:

每个实验的发现过程 → 自动记录
├─ 你尝试了多少次
├─ 每次的参数和结果
├─ 发现成功的时间点
├─ 和你最接近的数学家的历史记录对比
└─ 生成"发现报告"可以导出/打印

长期积累 →
├─ "我已发现 23 个物理真理"
├─ "发现等级:开普勒学徒"
└─ "可以挑战:牛顿级发现(第 24 个实验)"

🗺️ 项目路线图

三阶段时间线

┌──────────────────────────────────────────────────────────┐
│ Phase 1: 桌面模拟 (2-4周)                                │
├─────────────┬────────────────────────────────────────────┤
│ 第1周       │ 最速降线原型(核心算法 + 3D 场景)         │
│ 第2周       │ 自由落体 + 单摆(基础物理三件套)          │
│ 第3周       │ 开普勒 + 河流 + 分形(物理+地理+数学扩展) │
│ 第4周       │ 剩余实验 + UI 打磨 + 统一框架             │
├─────────────┴────────────────────────────────────────────┤
│ Phase 2: WebXR 沉浸体验 (4-8周)                          │
├─────────────┬────────────────────────────────────────────┤
│ 第5-6周     │ WebXR 基础适配 + 最速降线 VR 化           │
│ 第7-8周     │ MR 模式(彩色透视)+ 手势追踪              │
│ 第9-10周    │ 所有实验 VR 化 + 发现模式                  │
│ 第11-12周   │ 交互优化 + Pico 4 Ultra 专项适配           │
├─────────────┴────────────────────────────────────────────┤
│ Phase 3: 完整 MR 实验室 (8-12周)                         │
├─────────────┬────────────────────────────────────────────┤
│ 第13-14周   │ Arduino 传感器桥接 + 最速降线真实模型      │
│ 第15-16周   │ 第二批实验的真实模型 + 传感器集成          │
│ 第17-18周   │ 空间锚点布局 + 多实验管理                  │
│ 第19-22周   │ 发现履历系统 + 多人协作 + 全面测试         │
│ 第23-24周   │ 优化、文档、发布                           │
└─────────────┴────────────────────────────────────────────┘

部署方案

阶段 访问方式 链接
Phase 1 电脑浏览器 GitHub Pages → https://你的用户名.github.io/truth-lab/
Phase 2 Pico 浏览器 同上 URL,自动检测 WebXR
Phase 3 Pico 浏览器 + 本地 WebSocket 桥接 同上 URL + 本地 Node.js 服务

无需应用商店审批,无需安装 APK —— 整个系统就是一个网页。


🔧 项目启动清单

第一周要做的事:

  • 创建项目仓库(GitHub: truth-lab)
  • 初始化 Vite + React + Three.js 项目
  • 实现 cannon-es 物理引擎基础集成
  • 完成最速降线核心逻辑
  • 路径绘制(Catmull-Rom 曲线)
  • 物理模拟(小球在曲线上的约束运动)
  • 计时系统
  • 实现基础可视化
  • 速度矢量箭头
  • 能量条
  • 多曲线对比
  • 验证: 摆线是否确实是最快路径(与理论值对比误差 <5%)

你需要准备的

项目 你有吗?
Pico 4 Ultra ✅ 已有
一台能开发的电脑 ✅(就是现在用的)
Node.js / npm ✅(已有)
基础 3D 打印能力 ❓(可找淘宝代打,导轨模型约 ¥50/条)
Arduino + 传感器 ❓(淘宝套装 ¥100-300)
GitHub 账号

📘 附录:各实验的真理发现故事

最速降线(物理)

历史故事: 1696 年,约翰·伯努利在《博学通报》上公开挑战全欧洲数学家:A、B 两点不在同一垂线上,质点仅在重力作用下沿什么路径下降最快?牛顿收到问题后,从下午 4 点工作到凌晨 4 点,12 小时内解出答案——摆线。伯努利后来评价:"我从爪印认出了狮子。"

让你发现的方式: 你先画直线、抛物线、多项式曲线、反正弦曲线…… 10 次尝试后渐渐接近摆线。最终你"发现"的瞬间,系统显示伯努利的原始手稿,告诉你当年的数学巨匠们为此付出了多大努力。

开普勒定律(物理)

历史故事: 第谷·布拉赫用 30 年收集了太阳系最精确的行星观测数据。开普勒花了 10 年时间对火星数据进行分析,前 8 年都以为是圆形轨道,直到误差只剩下 8 角分(月亮的 ¼ 宽度),他意识到——轨道必须是椭圆。这 8 角分的差异,彻底改变了天文学。

让你发现的方式: 你面前有一个行星的模拟轨道,"用圆形轨道拟合"→有 8 角分误差,反复调整参数,最终意识到是椭圆。当你发现的那一刻,系统展示开普勒当年的笔记。

河流弯曲(地理)

历史故事: 为什么河流总是蜿蜒曲折?1944 年,爱因斯坦发表了《论河流蜿蜒的成因》,指出最小的扰动(表面张力、地球自转)就会导致水流偏向一侧,然后自我强化——稍微弯一点,外侧水流更快,侵蚀更强,变得更弯。这是一个"正反馈"过程。

让你发现的方式: 你在一个完全笔直的河道上方释放水流,"用极小扰动"触发——注意到初始的微小弯曲如何被放大、放大、最终形成蜿蜒。

分形/科赫雪花(数学)

历史故事: 1904 年,数学家科赫构造了一个"处处连续但处处不可微"的曲线——科赫雪花。它的周长无限大,但面积有限。这种"病态"曲线震惊了当时的数学界,现在我们知道这其实是自然的常态(海岸线、雪花、树叶)。

让你发现的方式: 你在线段的 ⅓ 处"折"一个等边三角形,重复这个过程。前几次变化不大,第 5 次迭代后,你看到复杂的精细结构出现。继续下去,周长无限增长,但面积趋于定值。


真理发现实验室 — Truth Discovery Lab

不是在学习科学,而是在**做科学**。