当前位置: 首页 > news >正文

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),仅供参考

http://www.cnnetsun.cn/news/4233459.html

相关文章:

  • 大模型产品化:从Demo到敢发布的距离
  • Python枚举算法实战:从韩信点兵到竞赛优化技巧
  • 钢铁缺陷检测实战:从RLE掩码到YOLOv8目标检测全流程
  • 10分钟跑通 VinXiangQi:基于 YOLOv5 的象棋智能连线工具实战指南
  • 【单片机课程设计/毕业设计】多模式调控智能热水供给单片机控制系统设计与开发 基于单片机与移动终端的智能饮水监测控制系统设计(024804)
  • 多流形结构分析:用Python实现谱聚类与LTSA联合降维
  • C#调用Onnx Runtime加载DBNet实现条形码检测实战指南
  • iOS提审全流程指南:证书签名、TestFlight与自动化发布
  • 不训模型也能换脸?免费 AI 换脸工具 roop-unleashed 五步出片教程
  • 编译器分层诊断法:破解LLM推理Triton内核性能瓶颈
  • 蓝桥杯STM32 ADC实战:HAL库连续采样、DMA传输与抗干扰调优
  • 三步把 STL 转成可编辑 STEP:stltostp 从安装到批量转换指南
  • 神奇弹幕 MagicalDanmaku 实操指南:B站直播场控、弹幕过滤、自动答谢怎么配
  • 3分钟免费NCM转MP3:ncmdump拖拽教程
  • 数学建模竞赛必备:插值算法原理、选型与实战避坑指南
  • 大模型应用工程化实战:从RAG知识库到AI Agent设计
  • 深入解析C++模板:从两阶段编译到实战避坑指南
  • 蓝桥杯Scratch国赛真题解析:从“矿工挖宝”掌握事件驱动与坐标定位
  • 【单片机毕设案例分享】基于 STM32 或 51 单片机的双模式自适应温控风扇装置开发 基于 STM32 或 51 单片机的参数可视化智能风扇控制系统设计(025504)
  • Scratch国赛拼图题:状态机思维与坐标映射实战
  • 数字图像处理与深度学习结合的车牌识别系统设计
  • 游戏核心开发概念解析:从理论到实践
  • 水面舰艇编队防空建模:多智能体协同决策与MATLAB事件驱动实现
  • Java版WMS仓储管理系统源码核心拆解与二次开发实战
  • RAG安全问答系统实战:数据脱敏、防幻觉与审计追踪
  • 异步程序的复盘记录
  • STM32 ADC实战指南:从原理到配置,解决精度与噪声问题
  • Windows 11 24H2 LTSC 装回微软应用商店:三步快速全攻略
  • Wand 修改器解锁:免费本地解锁全部 Pro 功能
  • 机器学习预测钢管混凝土柱极限承载力:四种模型对比研究