光镜实验室
作品说明

作品说明

《光镜实验室》是一个围绕初中物理「凸透镜成像规律」的交互式虚拟实验作品。它不止于演示现象,而是提供一条完整的科学探究路径:动手操作 → 实时测量 → 记录数据 → 拟合图像 → 归纳规律。

学科:物理 知识点:凸透镜成像规律 单页交互网页 PHP + 原生 JavaScript + Canvas 支持离线运行

一、设计思路

课本上凸透镜成像的规律通常以五条结论的形式出现,学生容易「背下来但想不通」。本作品把抽象结论还原为可操作、可测量的实验过程,让规律由学生自己从数据中看出来。

二、科学性的保证

作品中所有像的位置与大小都不是预设动画,而是由成像公式实时解算,并与三条特殊光线的几何作图结果互相印证。

1. 成像公式

1/u + 1/v = 1/f        ⇒   v = f·u / (u − f)
放大率 m = |v/u|        像高 h′ = −h·v/u

2. 三种情形的统一处理

3. 光线几何的一致性校验

以「平行主光轴」与「过光心」两条光线为例:前者折射后斜率为 −h/f,后者斜率为 −h/u。联立两条直线方程:

h − (h/f)·x = −(h/u)·x
⇒ 1 = x·(1/f − 1/u)
⇒ x = f·u/(u − f) = v

交点横坐标恰好等于公式解出的像距,说明画面上的光线交点与公式读数严格一致,不存在「图对不上数」的情况。

4. 光屏的物理意义

开启光屏后,屏上光斑的清晰度随光屏与像点的偏离程度变化:只有移动到真实像距附近才会变清晰;虚像情形下则明确提示「虚像无法成在光屏上」,避免形成错误概念。

三、技术实现

四、AI 工具的使用与自主改进

本作品在创作过程中使用 WorkBuddy 辅助完成结构设计、代码编写与文案起草,并在其生成结果的基础上进行了人工推导与实质性修改:

  1. 物理模型的重推导:AI 初稿只处理实像。人工补充了 u = f 临界与 u < f 虚像两种情形,并推导出反向延长线的斜率同样等于 −h/f,确保虚像位置与折射光线严格共线。
  2. 从「演示」改为「探究」:AI 初稿只有实时演示。人工提出并实现了实验记录本、1/u − 1/v 散点图与最小二乘拟合,使作品具备完整的数据探究闭环。
  3. 光屏交互:人工增加光屏可拖动、清晰度随偏离程度变化的设计,用于区分实像与虚像的承接条件。
  4. 挑战任务与容差:人工设计六个任务,并为「等大」「放大 2 倍」等定量目标设定合理容差,避免浮点误差造成误判。
  5. 离线可用与接口安全:人工决定核心逻辑不依赖后端,并为云端保存接口补充了字段校验、长度限制与文件名服务端生成。

五、使用方法

  1. 在「实验参数」中设定焦距,或直接用滑块/拖动物体改变物距。
  2. 观察三条特殊光线的走向与像的位置、正倒、大小变化。
  3. 勾选「放置光屏」,拖动光屏寻找最清晰的位置,体会实像的承接条件。
  4. 点击「记录数据」保存若干组不同物距下的测量结果。
  5. 在「数据与规律」区观察散点与拟合直线,尝试自己写出成像公式。
  6. 完成「挑战任务」中的六项,检验对规律的掌握程度。

六、文件结构

ai.chaotan.icu/
├── index.php            实验台主页面
├── about.php            本说明页
├── api.php              实验数据保存 / 读取接口
├── assets/
│   ├── css/style.css    视觉样式
│   └── js/
│       ├── lens.js      成像物理引擎与 Canvas 渲染
│       └── lab.js       交互逻辑、数据记录、拟合与挑战判定
└── data/                云端保存的实验数据(JSON)
返回实验台,开始探究 →