news 2026/8/27 2:39:05

Ray Optics 光学仿真:浏览器中快速搭建 2D 几何光学场景的免费工具

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Ray Optics 光学仿真:浏览器中快速搭建 2D 几何光学场景的免费工具

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 光学仿真就是为此而做的 2D 几何光学仿真工具:它跑在浏览器里,你摆上光源、透镜和反射镜,光路、聚焦位置与虚像位置会立刻画出来,改一个参数就重新演一遍。

球面透镜与曲面镜组合下的光线折射与反射,即项目封面示例

项目定位:浏览器里的一间 2D 光学实验室 🔬

Ray Optics 是一个 Apache-2.0 许可的开源 Web 应用(当前版本 5.5.0):前端用 Vue 3 加 Webpack 打包,场景数据全部写成 JSON,几何与物理量支持公式求值。它只解决一件事——不装任何光学软件,在页面上画出光路并验证它对不对。画廊预置了 77 个可交互演示,从单条光线到开普勒望远镜;界面提供 25 种语言。

核心能力:Ray Optics 光学仿真覆盖的四类光路

从光源到像点:一条光线的完整旅程

输入是三类光源(单条光线、平行/发散光束、点光源)加镜面、玻璃、棱镜、分束器等元件;过程是逐段求交,光线碰镜面反射、过界面折射、被分束器一分为二;输出是一整幅光路图。它还能直接标出实像、虚像和虚物,画出"站在某个观察点能看到的像",打开光线延长线即可验证虚像的汇聚位置——这正是传统课件最难讲清的部分。

白光拆开与合成:颜色、色散与光栅

给光线带上颜色,再让它穿过玻璃、分色镜或衍射光栅,颜色会混合、被滤色片截留、或因折射率随波长变化而被拆开。你看到的输出是彩虹、RGB 分光这类通常只出现在动画里的画面。

不同波长光线在界面上的分离,用于演示色散

用公式定义任意曲面与梯度折射率

输入一段数学表达式,就能定义任意形状的镜面、玻璃界面,或折射率随位置变化的 GRIN 材料;过程是引擎对公式逐点求值后做数值积分;输出是标准元件库给不了的自定义系统光路。画廊里的光纤、GRIN 平板都走这条路。

把元件组合打包成可调参数模块

输入是把若干元件加控制点写成一个模块——BeamExpander 用两个理想透镜加 3 个控制点定义扩束镜,焦距由控制点坐标的公式算出;过程是把模块当单个对象放进场景、拖动控制点;输出是一类可复用、可传参的光学子系统。内置模块示例有 11 个,写模块时还能参考 ai-tools/ 目录里 Ray Optics Coder 聊天机器人的提示词与知识文件。

最快上手:4 条命令跑通本地 Ray Optics 光学仿真 🚀

前提只有一个: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/ 即可开始拖拽。不碰代码也有零构建路径:下载预构建的发布包,用 Simple Web Server 指向它,同样在 http://localhost:8080/ 打开完整站点,步骤见 run-locally/README.md。

非开发者路线:预构建包加 Simple Web Server 即可本地运行

深入用法:密度、检测器与脚本集成

光线密度与性能怎么调

场景 JSON 里的 rayModeDensity 字段就是光线密度:密度越高,光斑越"实心",但求交次数同步上涨。多棱镜、长光程、GRIN 材料这类场景卡顿时的第一反应应是调低密度,工具栏的光线密度条可以直接拖。

提高光线密度后,聚焦光斑呈现连续分布

用检测器读出能量分布并导出 CSV

在光路末端放一个 Detector,它会按 binSize 把入射光分箱,给出总功率与辐照度分布;打开辐照度图能画出光斑形状,数据可导出为 CSV 进你自己的分析流程。场景整体也能导出为 SVG 矢量图,直接放进报告或论文。

场景 JSON 接入 Python 与 Julia 工作流

每个场景就是一份 version 5 的 JSON:元件坐标、折射率、模块公式都在里面,改场景等于改数据。integrations/ 提供 runner.js 与 Python、Julia 示例:把场景 JSON 从标准输入喂给命令行仿真器,拿回检测器读数或渲染图的 base64,批量仿真不必再打开浏览器。

适合谁用,又画不了什么

适合四类人:物理教师(画廊的 77 个场景可直接当教具)、课程演示、光学系统草图验证、以及要把仿真嵌进数据流程的科研人员。边界同样清楚:它模拟的是 2D 几何光学,没有偏振,也没有波动光学——衍射、干涉这类波效应不在几何光线的射程内;3D 光追与 WebGPU 引擎的排期见 ROADMAP.md。工程上还有两个限制:完整构建(含画廊图片生成)约需半小时;只跑 npm run start 时,导入模块窗口和部分站内链接不可用,因为那些页面还没构建。

画廊场景示例:反射与折射共同制造的"黑猫变白"

一句话定位:它把画光路图这件事从静态课件搬进了可交互、可导出、可被脚本调用的状态,而成本只是打开一个浏览器。下一步两个动作:把仓库克隆到本地(clone 地址见上节命令),跑完 4 条命令拖一个透镜试试;或者从 77 个画廊场景里挑一个,改一个参数看光线怎么动。

【免费下载链接】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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/27 2:38:37

大模型产品化:从Demo到敢发布的距离

“赛博义父Tibo爆料:谷歌早一年就做出了ChatGPT,硬是没敢发”这个说法在技术圈流传时,大多数讨论都停在“谷歌为什么不敢”的层面。但作为长期做模型部署和对话系统的人,我看到这个传闻后的第一反应是:它无法核实&…

作者头像 李华
网站建设 2026/8/27 2:38:27

Python枚举算法实战:从韩信点兵到竞赛优化技巧

1. 项目概述:从“韩信点兵”到Python枚举算法实战“韩信点兵”这个典故,相信很多朋友都听过,它背后蕴含的“物不知数”问题,是中国古代数学智慧的一个经典体现。简单说,就是有一队士兵,如果按特定规则&…

作者头像 李华
网站建设 2026/8/27 2:38:10

钢铁缺陷检测实战:从RLE掩码到YOLOv8目标检测全流程

简介:在工业质检与计算机视觉交叉领域,目标检测技术正成为缺陷自动化识别的核心手段。与传统分类任务不同,真实产线数据往往以语义分割掩码形式标注,如钢铁表面的麻点、划伤等缺陷。RLE编码作为高效的掩码压缩格式,在多…

作者头像 李华
网站建设 2026/8/27 2:36:13

10分钟跑通 VinXiangQi:基于 YOLOv5 的象棋智能连线工具实战指南

10分钟跑通 VinXiangQi:基于 YOLOv5 的象棋智能连线工具实战指南 【免费下载链接】VinXiangQi Xiangqi syncing tool based on Yolov5 / 基于Yolov5的中国象棋连线工具 项目地址: https://gitcode.com/gh_mirrors/vi/VinXiangQi VinXiangQi 是一款基于 YOLOv…

作者头像 李华
网站建设 2026/8/27 2:35:49

【单片机课程设计/毕业设计】多模式调控智能热水供给单片机控制系统设计与开发 基于单片机与移动终端的智能饮水监测控制系统设计(024804)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

作者头像 李华
网站建设 2026/8/27 2:35:09

多流形结构分析:用Python实现谱聚类与LTSA联合降维

1. 项目概述:这不是一道“解题题”,而是一次对高维数据本质的追问“华为杯”研究生数学建模竞赛2015年B题——《数据的多流形结构分析(续)》,光看标题就带着一股“不讲人话”的学术压迫感。但实话说,我带过…

作者头像 李华