Ray Optics:免费在线2D几何光学仿真工具,从浏览器到本地部署完整指南
【免费下载链接】ray-opticsA web app for creating and simulating 2D geometric optical scenes, with a gallery of (interactive) demos.项目地址: https://gitcode.com/gh_mirrors/ra/ray-optics
Ray Optics 是一个免费开源的 Web 应用,让你在浏览器里直接做 2D 几何光学仿真:把点光源、透镜、镜子放到画布上,光线的反射、折射、色散路径立刻可见,无需安装任何软件。下面按"能做什么 → 怎么跑起来 → 怎么深入用"的顺序,把它的能力和用法一次讲清楚。
🧭 能力全景:Ray Optics 光学仿真元件与功能清单
核心功能与光学元件库
- 光源:点光源、单条光线、平行/发散光束。你在课堂上拖动光束角度,屏幕上的折射光线会同步变化,学生能直接看到偏折量。
- 反射与折射:直线或曲面镜、直线或曲面折射界面,都支持用自定义方程定义表面形状;分光镜、二向色镜、衍射光栅也都有。
- 透镜与梯度折射率介质:理想透镜/镜面(遵循透镜公式)、用前后焦距定义的球面透镜、用自定义折射率函数定义的 GRIN 材料,适合做光纤和自聚焦透镜的原型验证。
- 颜色仿真:颜色混合、颜色过滤、色散——白光穿过棱镜后在屏幕上分开成光谱。
Ray Optics 仿真中的球面透镜与镜面系统,展示了光的聚焦与反射路径
Ray Optics 颜色仿真:不同颜色光线在屏上叠加与分离
测量与分析:距离、角度、能量流怎么读
- 用直尺量距离、量角器量角度,还可以测能量流和动量流。
- **Detector(探测器)**记录落在屏上的光能量,并能画出发照度分布图(irradiance map)。
- 打开光线延长线开关,可以直接看出出射光是否汇聚成虚像;界面还能直接显示实像、虚像、虚物体,以及"从某个观察者位置看过去的像"。
自定义扩展:SVG 导入、方程表面与模块组合
- 可以把 SVG 文件里的形状导入为光学元件,画好的光路图直接变成可仿真的组件。
- 自定义曲面/自定义曲线让你用方程定义表面及其与光线的交互行为。
- 多个光学元件可以打包成一个模块并暴露可调参数,官方模块区已提供 11 个现成模块(束扩、光纤、镀膜透镜、菲涅尔透镜等),见
data/moduleScenes/目录。
AI 辅助:让聊天机器人帮你写模块代码
ai-tools/目录存放了 "Ray Optics Coder" 聊天机器人的指令与知识文件,它能帮你编写模块代码和集成脚本。你可以使用官方版本,也可以拿这些文件搭建自己的聊天机器人;熟悉提示词工程的话,还能通过提交 PR 改进它。
🚀 上手路径:在线体验与一键本地部署步骤
方式一:在线体验。打开项目的官方在线页面即可进入仿真器,同站还有交互演示画廊,无需任何配置。
方式二:本地跑起来(开发者)。安装 Node.js 18 以上版本后,在终端执行:
git clone https://gitcode.com/gh_mirrors/ra/ray-optics cd ray-optics npm install --no-optional npm run start浏览器打开http://localhost:8080/simulator/即可使用。若只想本地运行完整网站(含画廊和模块页),先执行npm install再npm run build,全部产物会生成到dist目录。
方式三:非开发者路线。下载打包好的发布版本解压,用 Simple Web Server 指向该文件夹,并在 Basic Options 中开启 "Exclude .html extension",点 Create server 后访问http://localhost:8080/。详细图文步骤见run-locally/README.md。
Ray Optics 本地部署:Simple Web Server 启动后,在浏览器访问本地地址即可使用完整站点
🛠️ 深度玩法:自定义光学模块与三个实战场景
自定义模块。在工具栏的模块功能里,你可以把若干光学元件组合成一个带自定义参数的模块,界面内置代码编辑器;完成后既可以导入别人写的模块(Tools → Import Modules),也可以把自己调好的组合存下来反复使用。例如做一个"束扩"模块并暴露放大倍率参数,之后在任何场景里引用它、改一个数字就能复用。
场景一:课堂教学。画廊里的"黑猫变白"场景演示了折射如何改变物体的视觉外观:光从水中射出发生偏折,原本黑色的物体看起来变白。老师拖动画布中的界面位置,全班同步看到效果变化,比板书画光线图直观得多。
Ray Optics 画廊场景"黑猫变白":折射使水下物体呈现不同颜色,适合课堂演示
场景二:工程设计。光学工程师在设计束扩器、全息瞄具这类系统时,可以先用原理图快速验证光路是否合理,再摆上 Detector 记录能量分布,确认关键参数后才进入物理打样。
场景三:科研建模。需要研究光纤或自聚焦透镜时,使用data/moduleScenes/中的 OpticalFiber 模块,或用自定义折射率函数改写 GRIN 材料模型,把想法变成可计算的场景,替换公式即可切换研究模型。
⚙️ 调优与输出:光线密度、精度参数与数据导出
- 光线密度:顶栏可在低/中/高三档间切换。调试场景时先用低密度快速看光路走向,确认无误后调高再出图。
- 最大光线深度(maxRayDepth):限制单条光线经历的反射/折射次数上限。仿真光学腔、多镜系统时适当调低,能明显减少计算量。
- 渲染引擎:仿真器内置 CPU 与 WebGPU 两套引擎(见
src/core/simulationEngines/),大规模光线任务可交给 WebGPU 加速。 - 精度控制:Detector 的 irradiance map 按 bin 分箱统计,bin 越细分辨率越高;CropBox 的 width 参数决定渲染图片的宽度。两者按需调整,避免无谓的计算开销。
Ray Optics 高密度光线追踪:调高光线密度后光路分布的细节更完整
数据导出格式:
| 格式 | 用途 |
|---|---|
| SVG | 矢量光路图,适合论文与出版物 |
| CSV | 探测器与辐照度数据,可直接用表格软件分析 |
| JSON | 场景文件,可分享、可再次编辑 |
| PNG | 渲染截图,适合报告插图 |
🌐 生态延伸:社区贡献、多语言集成与学习资源
- 参与社区:有三类贡献几乎不需要编程知识——向画廊提交新场景、翻译界面(项目已支持 25 种语言,译文文件在
locales/目录)、贡献新模块。具体教程见CONTRIBUTING.md,计划中的功能见ROADMAP.md,先读再动手可以避免重复劳动。 - 与其他语言集成:
integrations/目录提供了从 Python、Julia 调用仿真引擎的工具,含example_python.py、example_julia.jl两个示例和runner.js执行入口,把场景 JSON 传进去就能拿到探测器读数或渲染图片;仿真器本身也能作为 Node 模块引入你自己的项目。 - 学习资源:画廊中的交互演示覆盖从基础折射到复杂光学系统;
test/scenes/目录里有大量场景 JSON 及对应的输出图片和 CSV,是不错的入门示例集;API 文档由代码注释自动生成。
打开仿真器,放一个点光源和一块透镜,看看光究竟会聚到哪里。
【免费下载链接】ray-opticsA web app for creating and simulating 2D geometric optical scenes, with a gallery of (interactive) demos.项目地址: https://gitcode.com/gh_mirrors/ra/ray-optics
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考