焦散透镜与几何光学
作者:小白客 · 内容核对:
焦散如何形成
光线经过反射或折射后,在接收面上形成不均匀的能量分布,这类明暗结构称为焦散。透镜表面的局部斜率改变折射方向,进而改变光线在接收面的落点和照度。
Caustic Lens 以目标图像的亮度分布作为逆向设计输入,生成透镜三角网格;前向计算再使用该网格求交、经过入射和出射两个界面的折射,并统计接收面的落点。目标图像不直接作为前向仿真的投影结果。

平行光、点光源与受光面
平行光具有一致的入射方向。理想各向同性点光源从一个位置向外发散,其入射照度包含距离平方衰减与入射角余弦因子:E ∝ I cos(θ) / r²。
本项目的逆向设计按平行光计算。对同一网格改用点光源进行前向计算,通常会得到不同的图案;这不表示透镜已针对点光源重新优化。点光源强度采用相对单位,以距光源 1000 mm 处的法向照度作为参考,不是经过标定的瓦特或绝对辐照度。
光线沿正 Z 方向从透镜背面进入,经成形表面出射。接收屏受光面朝负 Z 方向,背板不透光。受光面视角中,图像右方对应世界坐标负 X,上方对应正 Y。
默认光路图对轴向间距作示意压缩;“实际距离比例”保留真实间距。计算本身始终使用物理距离,显示方式不改变光线落点的计算。
参数与输出的含义
| 项目 | 当前定义 |
|---|---|
| 算法焦距 | 默认 1.5 m,参与逆向表面计算;与接收屏的投影距离独立。 |
| 生成尺寸 | 固定 100 x 100 mm;导出支持缩放及坐标单位选择。 |
| 计算网格 | 64、128、256 或 512,默认 128 x 128;默认 4 次迭代。 |
| 接收屏范围 | 可手动指定宽度,或按发散与偏移估计范围。超出范围的光线不计入接收样本。 |
| 模型格式 | STL、OBJ、PLY、STEP 和 JSON。STEP 为多面实体,并非光滑 NURBS 曲面;G-Code 尚未接入切片器。 |
| 设计报告 | 记录实际参数、模型统计和投影结果,内嵌图像并支持离线打开及打印。 |
| 运行环境 | 图像在浏览器内处理;交互工作台需要 JavaScript、WebGL 2 和 Web Worker,不需要上传到远端进行计算。 |
这是不是完整的物理仿真
这是基于实际网格的简化几何光学计算。当前没有模拟衍射、色散、菲涅耳损耗、吸收和多次内部反射;全内反射样本会被拒绝,而不是继续追踪其内部路径。
接收功率先按像素面积转换为相对照度,再映射为可显示的灰度。画面中的细条纹或噪声可能来自三角面片和有限采样误差,不能视作真实干涉现象。接收样本数量是采样诊断数据,不等于光学器件的整体效率。
逆向求解器的表面高度标定、图案误差和最终加工效果仍需要实物验证。它适合探索焦散几何与参数变化,不构成制造精度或成像质量保证。
验证依据与源代码
回归测试包含平行平板的折射方向、点光源的距离平方衰减、矩形孔径立体角、接收功率积分,以及受光面法线、背板遮挡和纹理坐标。模型导出还包含格式回读与 OpenCascade 的 STEP 导入检查。