# ICL 合成厚眼模型与夜间光圈实验

版本 `0.3.0-synthetic-thick-eye`。实现及结果均已生成，不是待执行计划。

入口：运行 `python -m iclbench eye-render` 后打开 `examples/eye-model/index.html`。交互页面可切换六种条件、夜间多灯/单点光源、路径类别和统一显示曝光。原始线性光场、参数与能量账本一并导出。

这是依据 Benchmark 的医学结构、光路、能量、干预与可复现要求建立的**合成原型**。它已超出共平面薄相位核心，具备真实几何厚度和局部非顺序表面搜索；尚不是实际产品/患者的临床验证模型，也没有完成专业轨道的全部任务。

## 1. 明确要验证的机制

假设一个负光焦度 ICL 具有有限光学区，区外为房水。对同一个长眼轴：

1. 经过晶体材料区的光束得到矫正，主像聚在视网膜附近。
2. 大瞳孔允许部分光束从材料光学区外经过，不接受相同矫正。
3. 外圈入瞳区域映射为视网膜上的外圈光强，形成有限宽的环带；不是给图片贴一个圆。
4. 缩小瞳孔、扩大光学区等单变量干预应消除这组通路；仅填中央孔不应消除它。

这个机制在此合成设计里得到数值验证。真实 ICL 的周边、支撑结构、过渡区、材料与孔形必须由对应几何重新建模，不能将“区外房水”设定默认用于所有真实产品。该实验不证明所有术后光圈都由光学区外通路造成。

中央孔和孔壁也真实参与几何传播，单独保存贡献；但几何模型不能解决孔的相干衍射干涉。少量孔壁路径在当前采样下不充分收敛，不据其窄峰作定量临床结论。

## 2. 参数与来源

以下全部为公开的**合成设计选择**，不是厂家、人体测量或已核验文献参数。

| 结构 | 参数 |
|---|---|
| 角膜前顶点 | z=0 mm，曲率半径 +7.8 mm，圆锥常数 q=-0.26 |
| 角膜后顶点 | z=0.55 mm，曲率半径 +6.5 mm，q=-0.26 |
| 虹膜/瞳孔 | z=3.1 mm，直径3.0或6.5 mm |
| ICL 前顶点 | z=3.4 mm，半径 -28.5 mm，球面 |
| ICL 后顶点 | z=3.5 mm，半径 +28.5 mm，球面 |
| ICL 体积 | 有限双凹体，轴向中心厚度0.10 mm，光学区直径5.8或7.2 mm |
| 通孔 | 直径0.36 mm的液体圆柱通道，或填材料的对照 |
| 天然晶状体前顶点 | z=4.2 mm，半径+10 mm，q=-1 |
| 天然晶状体后顶点 | z=8.0 mm，半径-6 mm，q=-4 |
| 常折射率 | 空气1、角膜1.376、房水1.336、ICL材料1.45、等效天然晶状体1.42、玻璃体1.336 |
| 计算入射束 | z=-1 mm的固定4.5 mm半径圆束，均匀入射能量 |
| 探测器 | 平面视网膜，输出±4°，768×768 |

天然晶状体保留。轴上 ICL 后顶点与天然晶状体前顶点的间隙为0.7 mm；实际曲面间隙随横向位置改变。

ICL 单独的近轴厚透镜光焦度可由两面折射力计算：`Φ₁=(n_ICL-n_aq)/R₁`、`Φ₂=(n_aq-n_ICL)/R₂`，`Φ=Φ₁+Φ₂-(t/n_ICL)Φ₁Φ₂`，约 -8.001 D。它不是对某患者眼镜处方的直接换算。

天然晶状体后表面 q=-4 是为使合成主光路球差较小而选定的设计值；不是拟合患者。视网膜在无孔、共轴材料主光路的近轴焦点处校准，得到 **z≈27.0854 mm**。所有六种条件保持这个视网膜位置和天然晶状体不变，不能每次改变条件后重新对焦掩盖效应。

## 3. 实际传播计算

曲面采用圆锥曲面隐式方程：

```text
x² + y² - 2R(z-z₀) + (1+q)(z-z₀)² = 0
```

求正向交点时排除远侧曲面分支、超出半径范围的点和非物理解。ICL 前/后面只在材料环区有效，内圆柱孔壁和外圆柱侧壁只在前后曲面间有效。体内搜索最近表面，因此不是把通孔简化成黑盘，也不是碰到预设 z 面就机械切换材料。

每条光线保存位置、方向、功率及最终路径类别；在界面上执行向量 Snell 折射，使用无偏振 Fresnel 功率系数分配透射/反射。ICL 内发生全反射时跟踪反射方向，最多12次事件。普通反射分支的功率进入 `reflected_untraced`，本版不继续生成鬼像路径；它没有被悄悄再叠加到图像上。

射线最终与视网膜平面相交。角映射用同一模型小视场角主像位移校准的等效系数约 **18.8863 mm**，再作 `view = -atan(retinal_xy / f_angle)`，明确倒像符号。该角映射是小视场近似，不是完整视网膜-视觉知觉模型。

六组路径分别保存：材料主路、透明孔通路、光学区外通路、孔壁交互、外侧壁交互、未植入对照。发生多类壁交互的路径按最后壁类别标记，事件计数另存；不能把类别功率当成“只发生过一种交互”的因果分解。

## 4. 从光线到可查看场景

轴上点光源和四个实际视场角分别追踪，每条件 `262,144 × 5` 条入射采样，六条件约786万条射线：

| 光源 | 角位置 / ° | 相对能量 |
|---|---|---:|
| 左车灯 | (-0.7,-0.55) | 1 |
| 右车灯 | (+0.7,-0.55) | 1 |
| 左高灯 | (-2.2,+1.4) | 0.55 |
| 右高灯 | (+2.2,+1.4) | 0.55 |

光强先按每条射线的绝对功率落格，保留窗口外能量。使用圆瞳 Airy **强度核**对几何光强作近似卷积；这不是厚眼相干波前求解，不能据此声称正确模拟孔缘相位干涉。核的有限数值支持被条件归一化，弱衍射尾部是近似误差来源。

有限灯面直径0.05°，用局部平移不变的均匀圆盘强度积分近似。弱道路背景是程序生成的辐亮度图，用轴上局部 PSF 近似；每盏强光源仍使用其自身视场的厚眼追踪结果。场景不是下载或生成的夜景照片。

本版只模拟550 nm，灰度显示，不包含材料色散、颜色知觉或瞳孔/神经适应动态。输入功率相对于同一固定入射束，缩小瞳孔自然会减少通光量；不逐条件归一化亮度，不伪装成相同适应后的主观亮度。

统一显示：

```text
display = clip[log(1 + 10⁶ × exposure × I) / log(1 + 10⁶ × 0.03), 0, 1]
exposure ∈ {0.25, 0.5, 1, 2, 4}
```

所有条件共用显示尺度；曝光控件只选显示映射。线性数组保留，不由预览图读取数值。

## 5. 已计算的对照结果

以下针对轴上光源，半径为**该路径的能量径向分位数**，不是临床光圈拟合或感知测量：

| 条件 | 外侧通路能量中位半径 | 外侧通路占到达视网膜功率 | 解释 |
|---|---:|---:|---|
| 术前未植入 | 不适用 | 不适用 | 全入瞳未矫正，呈宽离焦场 |
| 大瞳孔6.5 / 光学区5.8 mm | 1.3461° | 16.6148% | 材料主像 + 外侧环带 |
| 小瞳孔3.0 mm | 无此外侧路径 | 0 | 外侧环带消失 |
| 光学区扩大为7.2 mm | 无此外侧路径 | 0 | 外侧环带消失；主光路像差仍可能存在 |
| 填孔对照 | 1.3461° | 16.6150% | 外侧环带保留，说明本例大环并非孔造成 |
| ICL x偏心0.35 mm | 1.3082°，以注视点计 | 17.1764% | 不对称与主像偏移，单一半径不充分 |

大瞳孔轴上外侧通路10/50/90%半径约 `1.2848 / 1.3461 / 1.4072°`。这里10–90%范围是能量范围，不叫 FWHM。

普通 Fresnel 反射、虹膜遮挡、漏失、返回前段、未完成追踪与到达视网膜能量构成闭合账本；视网膜到达能量再分为探测窗内外。所有输出保持绝对入射束能量，避免将裁切后的 PSF 归一为1而掩盖损失。

## 6. 按 Benchmark 验证到哪一步

已执行53项测试，原37项继续通过，新增16项检验平/曲面 Snell、Fresnel 解析极限、全反射、正负曲率分支、抛物面交点、解剖位置、能量闭合、折射率匹配、真实离轴映射、有限探测窗和机制消融。

对主外侧环带，用65,536 / 262,144 / 1,048,576三种射线数检查：

- 262,144与1,048,576采样的中位半径差约0.00000593°。
- 原始外侧径向密度的相对L1差约0.001061（0.1061%）；非单调收敛，不能据此推断所有像素的误差界。
- 各主场与光源场的功率闭合残差约浮点舍入量级。
- 262,144采样下，轴上孔壁事件只有3个，1,048,576下13个，因此**孔壁弱光场形态未建立充分收敛性**。

记录在输出 `convergence.json` 和 `model.json`。这些检查没有替代独立求解器、模型眼光学台或临床感知验证。

与专业轨道的对应：B01/B02/B03/B04的几何传播及C06/D01/D03/D05/F01/F04已有可抽查原型；B05完整波动耦合、B06反射鬼像与散射、C05真实孔相关环、E类临床逆问题及G项专业认证仍不算通过。R17的合成厚设计因果实验可运行，实际产品真值仍待建立。

## 7. 文件与复现

```sh
pip install -e '.[render]'
python -m unittest discover -s tests -v
python -m iclbench eye-render --output examples/eye-model --rays 262144 --size 768
python -m scripts.check_thick_eye
```

必需的核心运行依赖仍为 NumPy，渲染导出另用 Matplotlib 与 Pillow。中文图表在macOS优先使用系统中文字体；原始数据不依赖字体。

输出：

```text
index.html                    交互实验页面，无服务端依赖
comparison.png                术前 / 术后大瞳孔 / 术后小瞳孔并排图
model.json                    全参数、条件、光源、功率与近似说明
<condition>-linear.npz         点光源/场景按路径分解的线性光强
ray-paths.npz                 实际表面交点与路径类别
ray-paths.png / .svg           光路图与ICL局部放大
radial-profiles.png / .svg     路径分解及机制干预曲线
convergence.json              三种射线数的主环带检查
assets/                       所有显示条件的计算图像
```

仍待处理的误差/效度：真实产品几何与周边过渡、角膜/晶状体个体化测量、完整相干衍射、宽角/曲视网膜、反射鬼像、稀有壁路径重要性采样、实测散射与泪膜、暗适应及主观视觉。外部资料访问仍被 `/browse` 地址检查阻断，本版没有冒充文献或临床验证。
