# 光学探索室 根据本目录中老师提供的《AI辅助仿真的物理光学.doc》实现。原Word未作修改。 当前为 **Photon · 在线试用准备版**。15个实验全部独立显示,按“波动与界面、干涉与光谱、衍射与分辨、偏振与晶体、成像与调制”5个主题分类,不再将实验藏在12个板块里。默认明亮,可切换“深空 / 明亮”风格。首页支持关键词搜索、主题筛选、收藏和继续上次实验;28个演示快捷入口直接载入单束合成、倏逝能流、液晶光阀、弦驻波、宽角条纹等具体设置。实验室侧栏也可搜索,页面上方保留相关实验的切换按钮。目录与统计由同一份数据生成,后续新增实验无需维持固定数量。 已加入 **V10教师第四轮升级**:布儒斯特角的透射束内s/p比例、电场正负方向分开看、弦的非整数阶受迫振动、双图相加/相减、带通/十字方向/逆滤波/微分与液晶光阀六步演示。入口、模型边界和教学赛题建议见[本轮说明](项目文档/升级记录-V10-教师第四轮.md)。 ## 开始使用 1. 双击 **启动光学探索室.bat**。 2. 浏览器会打开 `http://127.0.0.1:8765`。 3. 首页搜索或选择实验卡片;“从波的合成开始”会载入单束演示。收藏按钮可保存常用入口,“继续上次探索”恢复上次实验。 4. 进入实验后,左侧选择实验,右侧拖动参数,下方切换“物理模型 / 探究任务 / AI编程实验 / 实验记录”。左侧“返回资源首页”回到目录。 本机需安装Python 3.10或更高版本。主程序和15份Python示例只使用标准库,不需要安装额外Python包。推荐使用Chrome或Edge。 只看仿真时,也可以直接打开 `index.html` 资源首页、`lab.html` 实验室,或打开 `独立离线模块` 内任意一个HTML;离线页面的交互计算、图片上传、实验保存均可使用。完整目录直接打开首页即可使用,需保持同目录资源文件完整。**网页内执行Python需要使用启动脚本打开本机服务器页面。** 如果8765端口已被使用,在此目录运行: ```powershell python server.py --port 8766 --open ``` ## 已实现的实验 | 序号 | 实验 | 关键交互 | | --- | --- | --- | | 01 | 平面电磁波传播 | 波长、幅值、视角、截面;E/cB同相矢量和时间曲线 | | 02 | 反射与折射 | Rs/Rp/T、入射角、折射率、布儒斯特角、全反射、倏逝能流、有限光束GH位移 | | 03 | 波的叠加与驻波 | 同向双频、单束逐步演示、正交合电矢量、0/±90/180°轨迹、双振幅、驻波 | | 04 | 傅里叶方波合成 | 奇次谐波项数、频谱、吉布斯过冲 | | 05 | 杨氏双缝干涉 | 固定双缝,独立移动源与屏;0–50mm源宽和可见度衰减旁瓣;单路玻璃移纹;0–90°宽角二维观察 | | 06 | 薄膜与多光束干涉 | Airy多光束、两反射率对照、反射/透射、FWHM/HWHM;牛顿环/楔形膜 | | 07 | FP标准具与双谱线分辨 | 双波长圆环、波长差、反射率、标准具间距与分辨能力 | | 08 | 迈克尔逊干涉与光谱 | 动镜扫描、光程差、干涉信号与光谱反演 | | 09 | 单缝 / 矩形 / 多缝衍射 | 二维强度花样、线性剖面、相量、入射角、缺级 | | 10 | 艾里斑与分辨率 | 两个非相干点、两波长、入射角、孔径、等波长瑞利比较 | | 11 | 光栅衍射与色散 | 白光 / 单色光、带符号级次、刻线密度、入射角、级次重叠 | | 12 | 偏振、波片与液晶光阀 | Jones强度、分子链与电子响应、TN光阀逐步工作原理 | | 13 | 晶体双折射与波面 | 四类光轴、晶体o/e、波矢k与能流S、惠更斯作图 | | 14 | 4f空间滤波 | 双图运算、二维FFT、低/高/带通、十字方向、复原与微分滤波、手绘遮挡 | | 15 | 电光 / 声光效应 | 电压与偏置、声功率、声频、入射角失配、衍射效率与频移 | 独立离线文件与目录一一对应,共15份;每个文件仍能切换全部实验,并保留15份Python示例。旧分享网址、收藏、实验参数与记录继续按原实验ID读取。 ## 课堂与课后 - **教师演示**:使用“全屏”,需要讲解某个瞬间时点“暂停”,用“前进一步”逐帧看矢量,或“从头演示”重看建立过程;“导出图片”保存当前画布。 - **波合成旋向**:正交模式第一束沿x、第二束沿y,相位差取 δ=φᵧ−φₓ=φ₂−φ₁。按王老师确认的教材约定,+90°为左旋,−90°为右旋;不等振幅时分别为左旋、右旋椭圆偏振。截面从+z端迎光看,x向右、y向上,本图分别呈顺时针、逆时针;0°、180°和单束线偏振无旋向。 - **快捷操作**:点击预设快速载入典型场景;数值可直接输入。非文字编辑状态按空格暂停/播放,顶部“低动态”只减少界面装饰动画,教学动画由暂停/播放控制。 - **视觉风格**:默认使用明亮模式;右上角“☾ 深空 / ☀ 明亮”一键切换,自动记住选择;实验画布、Python图表和导出图片也会切换,实验参数与暂停状态保留。 - **页面过渡**:首页进入实验、实验返回首页时,视角掠过当前页面,沿弧线转向前方的目标页面,再靠近并停稳;飞行约1.6–1.8秒,目标页面准备时间另计。飞行中按Escape可取消,恢复原页面焦点与播放;准备期间调参或切换主题会取消本次切换。开启系统减少动态效果或实验室“低动态”可跳过过渡。 - **调参回退**:参数区的“撤销调参 / 恢复调参”在每个实验内独立保留最近30步,一次拖动算一步,参数重置和预设也可撤销;刷新后清空历史。此功能不回滚笔记、自定义代码和4f手绘掩模。 - **游标测距**:有横轴曲线的视图中,点击画布上方“游标测距”,拖动 A / B 线或点击曲线区移动较近的游标;也可在下方输入两个位置后按回车。间距为横轴读数之差的绝对值,单位随坐标轴变化;多张曲线可在“测量曲线”中选择。再次点击按钮关闭,或点击“重置游标”恢复初始位置。方向键微调,Shift + 方向键加大步长。 - **测量含义**:双缝剖面测毫米间距,艾里斑剖面测微米间距,FP 径向剖面测角间距,薄膜多光束曲线测相位差(π)。手动将两游标对齐同一峰的两侧半高点,所得是半高全宽 FWHM;对称峰的半宽 HWHM 为其一半。工具不自动寻找峰值或半高点,鼠标定位精度受屏幕分辨率限制,可用精确输入进一步定位。 - **保存测量**:各实验独立保留游标位置,随自动保存和 JSON 存档恢复;导出图片包含游标和间距,开启测距时导出的实验报告包含 A / B 数值与单位。坐标范围改变时,越界游标会限制到新的范围内。分享参数链接不携带游标位置。 - **省电运行**:画布滚出屏幕后暂停计时和绘制,回到画布继续;阅读模型或编程时减少后台计算,不改变手动暂停状态。 - **参数互动**:“分享参数”复制当前实验网址及参数。接收者必须能访问网址;本机127.0.0.1地址只在本机有效。 - **4f实验**:在中央频谱上按住拖动遮挡;Shift+拖动擦除;触屏使用“清除手绘遮挡”重置。图片自动缩放到128×128。 - **4f代码核验**:也可选择“擦除画笔”。未手动编辑的Python示例包含当前图片与掩模,并在参数或笔迹更新后同步;手工编辑后可点击“恢复示例”重新同步。 - **AI辅助编程**:复制模块提示词给自己的AI工具,将代码粘贴到编辑器后运行。未修改的示例会随参数更新;手动修改代码后保留编辑内容,点“恢复示例”才按新参数重新生成。 - **实验作业**:填写猜想、证据和解释,导出Markdown实验报告;“保存实验”生成包含全部实验参数、笔记、代码与4f图片/掩模的JSON文件。 - **交换复现**:同学打开同一项目,导入JSON即可复现。分享网址仅含当前参数,不包含上传图片、手绘掩模、笔记或代码;完整复现请发送JSON。 AI工具不内置账号或API密钥;无需AI账号也能使用全部仿真和现成的Python示例。 ## 局域网与课程平台 在线试用版由 `python tools/build-online.py` 生成到 `在线试用/`,同时产生 `光学探索室-在线部署包.zip`,可上传静态托管服务。临时公网网址的运行说明见[在线试用说明](项目文档/在线试用说明.md)。学生直接打开网址进行交互,图片和实验记录保存在自己的浏览器,仍可导出JSON交换;在线版的Python示例可下载到本机运行。 同一教室网络中,教师可手动启动: ```powershell python server.py --lan --port 8765 ``` 学生访问 `http://教师电脑的局域网IP:8765`;设备须在可互通的网络,服务器端口须可访问。程序不会自动更改防火墙或公开互联网端口。 局域网页面支持交互仿真、编辑代码、保存/导入作业。**当前Python执行器是本机开发功能,远程学生不能在教师电脑上执行Python。** 学生可在自己的电脑启动完整项目运行,或下载代码在自己的Python环境运行。 学校课程平台可直接分发独立HTML、ZIP资源包、Python源码和教学手册。当前交付不包含云端账号系统、多人作业数据库、内置AI服务或隔离的多人Python执行服务;公开部署这些服务还需要学校提供服务器、身份认证和执行隔离环境。 ## 文件结构 完整目录与维护说明见[目录说明](项目文档/目录说明.md)。 | 文件 / 目录 | 用途 | | --- | --- | | `index.html`、`portal.css`、`portal.js` | 教学资源首页、搜索、收藏与轻量偏振预览 | | `lab.html`、`styles.css` | 交互实验室与样式;原来的实验分享链接仍可使用 | | `navigation.css`、`navigation.js` | 首页与实验室之间的页面飞行、入口预取与降级处理 | | `physics.js`、`physics-v3.js`、`physics-v6.js` | 菲涅尔、衍射、Jones、惠更斯构造、贝塞尔函数、FFT数值内核 | | `modules.js`、`modules-v3.js`、`modules-v6.js` | 参数、公式、模型条件、45个探究任务、AI提示词 | | `renderers.js`、`renderers-v3.js`、`renderers-classroom.js`、`renderers-v6.js` | 15个实验的Canvas动态可视化 | | `catalog.js` | 首页、侧栏、分类与快捷入口共用的实验目录 | | `classroom.js`、`classroom-ui.js`、`classroom.css` | 独立实验组织、相关实验、课堂提示、调参历史布局 | | `app.js` | 参数交互、导入导出、编辑器、存档和报告 | | `python-examples.js`、`python-examples-v3.js`、`Python示例/` | 动态示例模板和15份独立Python代码 | | `server.py` | 本机教学服务器与Python执行接口 | | `独立离线模块/` | 15个无外部资源依赖的实验HTML,包含在完整教学资源包中 | | `教学材料/` | 教师手册、评价量规、数据表、论文写作框架 | | `参考素材/` | 本地参考视频,仅完整工作区包含,不参与分发包 | | `tests/`、`验收结果/` | 数值检查、浏览器检查及验收结果;本轮截图与验证见`验收结果/当前版本/` | | `tools/build-resources.cjs` | 源码更新后重新生成离线HTML和Python示例 | ## 验证与模型边界 已检查能量守恒、布儒斯特角、全反射、双缝轴上光强、多缝缺级、薄膜半波损失、艾里斑首零点、马吕斯定律、圆偏振以及FFT正逆变换。浏览器检查覆盖全部模块、参数边界、15份Python示例、图片上传、频谱绘制、实验保存恢复与手机布局。 各模块“物理模型”页明确列出近似条件。图中慢放、示意光路、归一化显示、离散采样和有限扫描窗口均不等同于全波电磁求解;光栅色彩显示不作为真实效率计算。 教师文档中的90%/70%能力目标、真实学生作业和教改论文属于后续教学实施成果。已提供数据采集、评价与论文框架,未填入虚构教学数据,也未宣称这些成效已达成。 开发验证命令(Node用于数值检查,Playwright仅用于浏览器测试): ```powershell node tests/numerical.cjs node tests/teacher_physics.cjs node tests/round2_physics.cjs python tests/browser_smoke.py python tests/teacher_browser.py python tests/interactive_v7.py node tools/build-resources.cjs ``` 浏览器检查需另开服务器并安装Playwright;普通教学使用不需要这些开发工具。