本章深入探讨电磁波与边缘、拐角及其他几何不连续性相互作用产生的衍射现象。我们将从几何光学的局限性出发,逐步建立能够准确描述衍射效应的数学框架,并探讨其在计算机图形学中的应用。通过学习几何绕射理论(GTD)、物理绕射理论(PTD/UTD)和Ufimtsev的边缘波理论,您将掌握分析和计算复杂衍射场的方法,并理解如何将这些理论应用于真实感渲染。
完成本章后,您将能够:
几何绕射理论由Joseph Keller在1962年提出,是对传统几何光学的重要扩展。GTD通过引入衍射射线的概念,使得射线光学方法能够处理边缘、拐角和其他几何不连续性产生的衍射效应。
传统几何光学基于费马原理和程函方程:
\[(\nabla S)^2 = n^2(\mathbf{r})\]其中 $S$ 是相位函数(程函),$n(\mathbf{r})$ 是折射率分布。几何光学场可以表示为:
\[u(\mathbf{r}) = A(\mathbf{r}) e^{ik_0 S(\mathbf{r})}\]在高频极限 $k_0 \to \infty$ 下,这种近似在以下情况失效:
实际物理场必须满足:
| 有限性:$ | u | < \infty$ 处处成立 |
Keller的关键洞察是:衍射可以通过引入新的射线类型来描述。除了传统的入射、反射和折射射线,GTD引入了:
衍射射线遵循广义费马原理:
\[\delta \int_A^B n(\mathbf{r}) ds = 0\]但路径必须通过衍射点 $Q_D$:
\[\delta \left[ \int_A^{Q_D} n ds + \int_{Q_D}^B n ds \right] = 0\]对于直边缘衍射,考虑入射射线 $\hat{\mathbf{s}}^i$ 打到边缘上的点 $Q_D$。衍射射线方向 $\hat{\mathbf{s}}^d$ 满足:
Keller锥条件: \(\hat{\mathbf{s}}^i \cdot \hat{\mathbf{t}} = \hat{\mathbf{s}}^d \cdot \hat{\mathbf{t}} = \cos \beta_0\)
其中 $\hat{\mathbf{t}}$ 是边缘切向,$\beta_0$ 是与边缘的夹角。
衍射锥:衍射射线形成以边缘为轴、半角为 $\beta_0$ 的圆锥。
局部坐标系:在衍射点建立:
衍射射线方向由方位角 $\phi$ 参数化:
\[\hat{\mathbf{s}}^d = \sin\beta_0(\cos\phi \hat{\mathbf{n}}^i + \sin\phi \hat{\boldsymbol{\phi}}^i) + \cos\beta_0 \hat{\mathbf{t}}\]为了精确计算衍射,必须建立明确的坐标系统。对于楔形边缘:
标准坐标基: \(\begin{aligned} \hat{\mathbf{t}} &= \text{边缘单位切向量} \\ \hat{\boldsymbol{\beta}}_0 &= \text{面0的外法向} \\ \hat{\boldsymbol{\beta}}_n &= \text{面n的外法向} \end{aligned}\)
衍射射线路径满足稳相条件:
\[\frac{\partial}{\partial Q_D}\left[\Phi^i(S, Q_D) + k_0|Q_D - P|\right] = 0\]其中 $\Phi^i$ 是入射场在 $Q_D$ 点的相位。这导致:
GTD中的衍射场表示为:
\[u^d(P) = u^i(Q_D) \cdot D \cdot A^d(P) \cdot e^{ik_0 s}\]其中:
对于完美导体楔形(楔角 $\alpha$),标量衍射系数为:
\[D(\phi, \phi'; \beta_0; \alpha) = -\frac{e^{i\pi/4}}{2\sqrt{2\pi k_0}} \frac{1}{\sin\beta_0} \left[ \frac{1}{\cos\frac{\pi(\phi-\phi')}{\alpha} - \cos\frac{\pi}{\alpha}} + \frac{1}{\cos\frac{\pi(\phi+\phi')}{\alpha} - \cos\frac{\pi}{\alpha}} \right]\]其中 $\phi’$ 是入射方位角。
扩散因子考虑射线管的展开:
\[A^d(P) = \sqrt{\frac{\rho}{s(\rho + s)}}\]其中 $\rho$ 是边缘的曲率半径(直边缘时 $\rho \to \infty$)。
衍射系数 $D$ 的结构揭示了重要的物理含义:
衍射系数可以分解为软边界和硬边界贡献:
\[D = D_s \hat{\mathbf{e}}_s \otimes \hat{\mathbf{e}}_s + D_h \hat{\mathbf{e}}_h \otimes \hat{\mathbf{e}}_h\]其中 $\hat{\mathbf{e}}_s$ 和 $\hat{\mathbf{e}}_h$ 分别是软(TE)和硬(TM)极化的单位矢量。
标准GTD是 $k_0 \to \infty$ 的首阶渐近近似。高阶修正提供更精确的结果:
\[u^d = u_0^d \left[1 + \frac{1}{ik_0}\mathcal{L}_1 + \frac{1}{(ik_0)^2}\mathcal{L}_2 + \cdots \right]\]其中 $\mathcal{L}_n$ 是 $n$ 阶微分算子,作用于振幅和相位函数。
对于弯曲边缘,需要考虑边缘曲率 $\kappa(l)$ 和挠率 $\tau(l)$ 的影响:
\[D_{curved} = D_{straight} \cdot \exp\left[i\int_0^s \kappa(l') \cos\beta(l') dl'\right]\]这导致额外的相位积累和振幅调制。
除了单次衍射,GTD框架还包括:
顶点衍射:三维拐角产生的球面波 \(u^v \sim \frac{e^{ik_0 r}}{r} V(\hat{\mathbf{r}}, \hat{\mathbf{s}}^i)\)
其中 $V$ 是顶点衍射系数,依赖于观察和入射方向。
爬行波:沿凸曲面传播的表面波 \(u^{creeping} = \sum_m A_m(s) e^{i\nu_m s} e^{-\alpha_m s}\)
其中 $\nu_m$ 是复传播常数,$\alpha_m$ 是衰减系数。
斜率衍射:表面曲率不连续处的贡献 \(D_{slope} \sim \frac{1}{k_0} \frac{\partial n}{\partial s}\bigg|_{edge}\)
GTD的准确性依赖于以下条件:
GTD在以下区域失效,需要特殊处理:
为了克服GTD的局限性,常与其他方法结合:
\[u_{total} = \begin{cases} u_{MoM} & r < \lambda \\ u_{PO} + u_{PTD} & \lambda < r < 10\lambda \\ u_{GTD/UTD} & r > 10\lambda \end{cases}\]其中:
过渡区域需要特殊的匹配技术确保场的连续性。
GTD在阴影边界和反射边界附近失效,因为衍射系数包含奇点。一致性衍射理论(UTD)通过引入过渡函数修正了这些问题,使得场在所有区域都保持连续。
在阴影边界附近,定义距离参数:
\[L = s \sin^2 \beta_0\]其中 $s$ 是从衍射点到观察点的距离。过渡区域的特征长度为:
\[\delta \sim \sqrt{\frac{\lambda L}{2\pi}}\]引入Fresnel积分参数:
\[\xi = \sqrt{\frac{2k_0 L}{\pi}} \sin\left(\frac{\phi - \phi'}{2}\right)\]过渡函数定义为:
\[F(\xi) = 2i\sqrt{\pi} \xi e^{i\xi^2} \int_\xi^\infty e^{-it^2} dt\]这确保了:
| $ | \xi | \gg 1$:退化为GTD结果 |
| $ | \xi | \ll 1$:平滑过渡 |
UTD衍射系数包含过渡函数:
\[D_{UTD} = -\frac{e^{i\pi/4}}{2\sqrt{2\pi k_0}} \frac{1}{\sin\beta_0} \sum_{n=1,2} \cot\left(\frac{\pi + (-1)^n(\phi - \phi')}{2N}\right) F(k_0 L a_n^{\pm})\]其中:
对于完美导体,软边界条件(TE极化)和硬边界条件(TM极化)的系数不同:
\(D_s = D_{UTD} \cdot \text{sgn}(\text{入射角})\) \(D_h = -D_{UTD} \cdot \text{sgn}(\text{反射角})\)
当入射射线不垂直于边缘时($\beta_0 \neq \pi/2$),需要考虑三维效应。定义:
入射和衍射角: \(\hat{\mathbf{s}}^i = \sin\beta_0^i(\cos\phi^i \hat{\mathbf{e}}_2 + \sin\phi^i \hat{\mathbf{e}}_3) + \cos\beta_0^i \hat{\mathbf{e}}_1\) \(\hat{\mathbf{s}}^d = \sin\beta_0^d(\cos\phi^d \hat{\mathbf{e}}_2 + \sin\phi^d \hat{\mathbf{e}}_3) + \cos\beta_0^d \hat{\mathbf{e}}_1\)
斜入射衍射系数: \(D_{3D} = D_{2D} \cdot \sqrt{\frac{\sin\beta_0^i}{\sin\beta_0^d}} \cdot P(\beta_0^i, \beta_0^d)\)
其中 $P$ 是极化修正因子。
实际场景中常遇到多次衍射:
级联衍射:射线依次经过多个边缘 \(u^{(n)} = u^{(0)} \prod_{j=1}^n D_j \cdot A_j \cdot e^{ik_0 s_j}\)
收敛性分析表明,对于大多数几何配置,考虑到第二阶衍射即可达到 $O(k_0^{-2})$ 的精度。
对于两个边缘的连续衍射,总场为:
\[u^{dd}(P) = u^i(Q_1) \cdot D_1 \cdot T_{12} \cdot D_2 \cdot A_{tot} \cdot e^{ik_0(s_1 + s_2)}\]其中:
传输因子考虑了中间路径的相位和振幅变化:
\[T_{12} = \sqrt{\frac{s_1}{s_1 + s_2}} \cdot \exp\left[i\Phi_{12}\right]\]对于复杂的多边缘系统,可以使用散射矩阵方法:
\[\mathbf{u}^{out} = \mathbf{S} \cdot \mathbf{u}^{in}\]其中散射矩阵元素:
\[S_{ij} = \begin{cases} D_{ii} & i = j \text{(自衍射)} \\ T_{ij} D_{jj} & i \neq j \text{(交叉衍射)} \end{cases}\]总场通过迭代求解:
\[\mathbf{u} = (\mathbf{I} - \mathbf{S})^{-1} \mathbf{u}^{inc}\]UTD的计算瓶颈通常在过渡函数 $F(\xi)$ 的评估。常用方法:
级数展开(小参数 $|\xi| < 2$): \(F(\xi) = \sqrt{\pi} \xi \sum_{n=0}^{\infty} \frac{(i\xi^2)^n}{n!(2n+1)}\)
渐近展开(大参数 $|\xi| > 2$): \(F(\xi) \approx 1 + \sum_{n=1}^{\infty} \frac{i^n (2n-1)!!}{2^n n! \xi^{2n}}\)
有理函数近似: \(F(\xi) \approx \frac{P_m(\xi)}{Q_n(\xi)} + \epsilon\)
其中 $\epsilon < 10^{-6}$ 对于适当选择的多项式阶数。
重要性采样: \(p(\phi) \propto |D(\phi)|^2 \cdot \cos(\phi - \phi_{obs})\)
集中计算资源在对观察点贡献大的方向。
在阴影和反射边界附近,数值稳定性至关重要:
连续性测试: \(\lim_{\phi \to \phi_{SB}} u_{lit} = \lim_{\phi \to \phi_{SB}} u_{shadow}\)
奇点消除: 使用 L’Hôpital 法则处理 $0/0$ 型不定式: \(\lim_{\xi \to 0} \frac{F(\xi)}{\xi} = \sqrt{\pi}\)
相位展开: 避免 $2\pi$ 跳变导致的不连续性,维护连续相位历史。
Pyotr Ufimtsev在1960年代发展的物理衍射理论(PTD)提供了一种不同于GTD的方法。PTD基于物理光学(PO)近似,并明确分离出边缘贡献,这一方法后来成为隐身技术发展的理论基础。
物理光学近似假设表面电流仅在照明区存在:
\[\mathbf{J}_s = \begin{cases} 2\hat{\mathbf{n}} \times \mathbf{H}^i & \text{照明区} \\ 0 & \text{阴影区} \end{cases}\]对于平面波入射 $\mathbf{E}^i = E_0 e^{ik_0 \hat{\mathbf{k}}^i \cdot \mathbf{r}}$,散射场为:
\[\mathbf{E}^{PO}(\mathbf{r}) = \frac{ik_0 Z_0}{4\pi} \int_S \mathbf{J}_s \times \hat{\mathbf{R}} \frac{e^{ik_0 R}}{R} dS'\]其中 $\mathbf{R} = \mathbf{r} - \mathbf{r}’$,$Z_0$ 是自由空间阻抗。
PO的主要缺陷:
Ufimtsev的关键洞察是将总场分解为:
\[\mathbf{E}^{total} = \mathbf{E}^{PO} + \mathbf{E}^{edge}\]边缘波 $\mathbf{E}^{edge}$ 补偿PO近似的不足。对于直边缘,边缘电流可以表示为:
\[\mathbf{J}^{edge} = I(l) \delta(n) \hat{\mathbf{t}}\]其中:
边缘散射场:
\[\mathbf{E}^{edge} = \int_{edge} I(l') G(\mathbf{r}, l') dl'\]其中 $G$ 是并矢格林函数。
PTD通过匹配边界条件确定边缘电流。对于完美导体楔形,非均匀电流为:
\[I^{PTD} = I^{exact} - I^{PO}\]其中:
PTD衍射系数:
\[D^{PTD} = D^{exact} - D^{PO}\]对于远场,这给出:
\[D^{PTD}(\phi, \phi'; \alpha) = \frac{e^{i\pi/4}}{\sqrt{2\pi k_0}} \left[ f(\phi - \phi') - f(\phi + \phi') \right]\]其中:
\[f(\psi) = \frac{\sin(\pi/N)}{N[\cos(\pi/N) - \cos(\psi/N)]}\]$N = 2\pi/\alpha$ 是楔形参数。
PTD和GTD/UTD在高频极限下是等价的,但有重要区别:
转换关系:
\[D^{UTD} = D^{PTD} \cdot T(\xi)\]其中 $T(\xi)$ 是过渡函数,确保在阴影边界的连续性。
复射线理论将实射线推广到复空间,为处理焦散、爬行波和隧穿等现象提供了统一框架。这种方法在处理阴影区域的指数衰减场和过渡区域的振荡行为时特别有效。
传统射线理论中,射线路径由实空间中的轨迹描述。复射线理论允许射线在复空间中传播,其位置和方向可以具有虚部:
\(\mathbf{r}_c = \mathbf{r}_r + i\mathbf{r}_i\) \(\hat{\mathbf{s}}_c = \hat{\mathbf{s}}_r + i\hat{\mathbf{s}}_i\)
复射线场的一般形式:
\[u_c(\mathbf{r}) = A_c(\mathbf{r}) \exp[ik_0 S_c(\mathbf{r})]\]其中复程函 $S_c = S_r + iS_i$ 满足复程函方程:
\[(\nabla S_c)^2 = n^2(\mathbf{r}_c)\]最常用的复射线是高斯束,其在垂直于传播方向的平面上具有高斯分布:
\[u_{GB}(\mathbf{r}) = \frac{A_0}{\sqrt{q(s)}} \exp\left[ik_0\left(s + \frac{(\mathbf{r}_\perp)^2}{2q(s)}\right)\right]\]其中:
复曲率参数满足Riccati方程:
\[\frac{dq}{ds} = 1 + \frac{q^2}{R^2(s)}\]初始条件:$q(0) = q_0 = w_0^2/(ik_0)$,其中 $w_0$ 是束腰半径。
在阴影区域,复射线可以描述隧穿效应:
\[u_{shadow} \sim \exp[-k_0 \text{Im}(S_c)]\]衍射系数在复角度平面上是解析函数,这允许我们通过解析延拓处理各种特殊情况。
对于楔形衍射,精确解可以表示为Sommerfeld积分:
\[u(\mathbf{r}, \phi) = \frac{1}{2\pi i} \int_{\Gamma} \frac{e^{ik_0 r \cos(\theta - \phi)}}{\sin(\theta \pi/\alpha)} d\theta\]其中积分路径 $\Gamma$ 是Sommerfeld轮廓。
衍射系数 $D(\phi, \phi’; \alpha)$ 在复 $\phi$ 平面上具有:
将Sommerfeld积分转换为级数表示:
\[u = \sum_n \text{Res}[f(\theta)] + \int_{\text{SDP}} f(\theta) d\theta\]其中:
物理场必须满足因果性,这对衍射系数施加了解析性约束。
对于频率相关的衍射系数 $D(\omega)$:
\[\text{Re}[D(\omega)] = \frac{1}{\pi} \mathcal{P} \int_{-\infty}^{\infty} \frac{\text{Im}[D(\omega')]}{\omega' - \omega} d\omega'\] \[\text{Im}[D(\omega)] = -\frac{1}{\pi} \mathcal{P} \int_{-\infty}^{\infty} \frac{\text{Re}[D(\omega')]}{\omega' - \omega} d\omega'\]其中 $\mathcal{P}$ 表示主值积分。
脉冲响应 $h(t)$ 必须满足:
\[h(t) = 0, \quad t < 0\]这要求频域传递函数 $H(\omega)$ 在上半复平面解析。
对于衍射问题:
\[D(t) = \frac{1}{2\pi} \int_{-\infty}^{\infty} D(\omega) e^{-i\omega t} d\omega\]因果性要求积分路径可以在上半平面闭合。
实际计算衍射系数需要高效的数值方法,特别是在过渡区域。
许多衍射问题涉及特殊函数:
Fresnel积分: \(C(\xi) + iS(\xi) = \int_0^\xi e^{i\pi t^2/2} dt\)
快速计算:使用有理函数近似或级数展开
过渡函数: \(F(\xi) = 2i\sqrt{\pi} \xi e^{i\xi^2} \text{erfc}(-i\xi)\)
其中 $\text{erfc}$ 是互补误差函数
Fock函数:用于爬行波 \(v(z) = \frac{1}{\sqrt{\pi}} \int_{\infty e^{-i\pi/3}}^{\infty} e^{zt - t^3/3} dt\)
大参数:$|k_0 L| \gg 1$ \(D \approx D_0 + \frac{D_1}{k_0 L} + \frac{D_2}{(k_0 L)^2} + \cdots\)
小参数:$|k_0 L| \ll 1$ \(D \approx a_0 + a_1(k_0 L) + a_2(k_0 L)^2 + \cdots\)
电磁场的矢量性质需要二阶张量衍射系数:
\[\mathbf{E}^d = \overleftrightarrow{D} \cdot \mathbf{E}^i\]对于边缘衍射:
\[\overleftrightarrow{D} = D_\parallel \hat{\mathbf{e}}_\parallel \hat{\mathbf{e}}_\parallel + D_\perp \hat{\mathbf{e}}_\perp \hat{\mathbf{e}}_\perp\]其中:
软硬边界条件下:
\(D_\perp^{soft} = -D_{scalar}\) \(D_\parallel^{hard} = D_{scalar}\)
数值计算的误差来源:
截断误差:级数或积分截断 \(\epsilon_{trunc} \sim O(N^{-p})\)
离散化误差:数值积分 \(\epsilon_{disc} \sim O(h^q)\)
舍入误差:浮点运算 \(\epsilon_{round} \sim O(\epsilon_{machine})\)
总误差: \(\epsilon_{total} \leq C_1 N^{-p} + C_2 h^q + C_3 \epsilon_{machine}\)
优化策略:平衡各项误差,使 $N^{-p} \approx h^q \approx \sqrt{\epsilon_{machine}}$。
衍射效应虽然在日常场景中通常较微弱,但在某些情况下对视觉真实感至关重要。本节探讨如何将衍射理论集成到现代渲染系统中,平衡物理准确性和计算效率。
判断是否需要考虑衍射的准则:
\[\text{菲涅尔数} = \frac{a^2}{L\lambda}\]其中:
分类:
扩展传统射线追踪器以支持衍射:
对每个几何体:
提取锐利边缘(二面角 < 阈值)
参数化边缘曲线 r(t)
存储边缘切向 t(t) 和法向信息
计算入射角 β₀ = arccos(s^i · t)
构造Keller锥(半角 = β₀)
在锥上采样衍射方向
传统射线树:入射 → 反射/折射 → ...
GTD射线树:入射 → 反射/折射/衍射 → ...
递归深度控制:
对于点 $P$ 的衍射场:
\[L_d(P) = \sum_{edges} \int_{edge} L_i(Q) \cdot D(Q,P) \cdot V(Q,P) \cdot G(Q,P) dl\]其中:
离散化:
\[L_d(P) \approx \sum_{i} L_i(Q_i) \cdot D_i \cdot V_i \cdot G_i \cdot \Delta l_i\]实时渲染需要高效的近似方法,牺牲一定精度换取性能。
| 深度不连续:$ | \nabla z | > \epsilon_z$ |
| 法向不连续:$ | \nabla \mathbf{n} | > \epsilon_n$ |
vec3 diffraction = vec3(0);
for(int i = -N; i <= N; i++) {
vec2 uv = texCoord + i * edgeNormal * spacing;
float phase = k * i * spacing;
vec3 color = texture(colorBuffer, uv).rgb;
diffraction += color * sinc(phase) * exp(-abs(i)/sigma);
}
对于已知几何形状,预计算衍射图案:
刀口衍射: \(I(x) = I_0 \left| \frac{1 + i}{2} - (C(\xi) + iS(\xi)) \right|^2\)
存储为1D查找表
狭缝衍射: \(I(\theta) = I_0 \left( \frac{\sin(\beta)}{\beta} \right)^2, \quad \beta = \frac{\pi a \sin\theta}{\lambda}\)
参数化存储:$(a/\lambda, \theta) \to I$
圆孔衍射(艾里图案): \(I(r) = I_0 \left( \frac{2J_1(x)}{x} \right)^2, \quad x = \frac{2\pi a r}{\lambda f}\)
利用GPU并行性加速衍射计算:
struct Edge {
float3 start, end; // 端点
float3 tangent; // 切向
float2 angles; // 楔角
uint materialID; // 材质
};
StructuredBuffer<Edge> edgeBuffer;
[numthreads(32,32,1)]
void DiffractionCS(uint3 id : SV_DispatchThreadID) {
float3 P = GetWorldPos(id.xy);
float3 diffraction = 0;
for(uint i = 0; i < numEdges; i++) {
Edge e = edgeBuffer[i];
float3 contrib = ComputeDiffraction(P, e);
diffraction += contrib;
}
outputTexture[id.xy] += float4(diffraction, 1);
}
| 方法 | 精度 | 速度 | 内存 | 适用场景 |
|---|---|---|---|---|
| 完整波动方程 | 最高 | 最慢 | 最大 | 科学计算 |
| BPM/FDTD | 高 | 慢 | 大 | 光学设计 |
| 物理光学(PO) | 中 | 中 | 中 | 雷达散射 |
| GTD/UTD | 中 | 快 | 小 | 实时渲染 |
| 屏幕空间近似 | 低 | 最快 | 最小 | 游戏/VR |
结合不同方法的优势:
if (visualImportance > threshold1) {
使用完整波动方法
} else if (visualImportance > threshold2) {
使用GTD/UTD
} else {
使用屏幕空间近似
}
确保近似方法的准确性:
数值收敛性: \(\text{误差} = \|u_{approx} - u_{exact}\|_2 / \|u_{exact}\|_2\)
要求:误差 $< 5\%$ 在视觉重要区域
衍射不仅是一个理论概念,它在许多实际渲染场景中产生重要的视觉效果。理解这些效应有助于决定何时以及如何在渲染中包含衍射计算。
大气中的衍射效应经常被观察到,特别是在特定的气象条件下:
强度分布: \(I(\theta) = I_0 \left| \sum_{n} a_n J_n(kr\sin\theta) \right|^2\)
其中 $J_n$ 是贝塞尔函数,$a_n$ 是米氏系数。
近似模型: \(I_{glory}(\theta) \propto \sum_{p=0}^{\infty} |A_p|^2 \exp[-(\theta/\theta_p)^2]\)
其中 $p$ 是内反射次数。
相位扰动: \(\phi(\mathbf{r}) = \int C_n^2(\mathbf{k}) |\mathbf{k}|^{-11/3} e^{i\mathbf{k}\cdot\mathbf{r}} d^2\mathbf{k}\)
理解衍射极限对模拟真实光学系统至关重要:
瑞利判据: 两个点源刚好可分辨的条件: \(\theta_{min} = 1.22 \frac{\lambda}{D}\)
其中 $D$ 是孔径直径。
点扩散函数(PSF): 理想圆孔径的PSF(艾里函数): \(\text{PSF}(r) = \left( \frac{2J_1(\pi D r/\lambda f)}{\pi D r/\lambda f} \right)^2\)
其中 $f$ 是焦距。
光学传递函数(OTF): \(\text{OTF}(\nu) = \mathcal{F}\{\text{PSF}\}(\nu)\)
截止频率:$\nu_{cutoff} = D/\lambda f$
现代材料科学创造了许多具有特殊衍射性质的纳米结构:
反射率: \(R(\omega) = \tanh^2\left(\frac{L}{\xi(\omega)}\right)\)
其中 $\xi$ 是衰减长度。
| 场增强因子:$ | E/E_0 | ^2 \sim 10^3-10^6$ |
自然界中许多生物结构产生衍射效应:
反射光谱: \(R(\lambda, \theta) = \left| \sum_n r_n \exp(2ik_z d_n) \right|^2\)
利用衍射原理的工程设计:
设计方程(IFTA算法): \(\phi_{n+1} = \arg\left\{\mathcal{F}^{-1}\{A_{target} \exp(i\arg[\mathcal{F}\{A_{input}e^{i\phi_n}\}])\}\right\}\)
耦合波方程: \(\frac{dR}{dz} = -i\kappa S\) \(\frac{dS}{dz} = -i\kappa^* R + i\Delta\beta S\)
识别和处理渲染中的衍射伪影:
抗锯齿策略: \(u_{filtered} = \int u(\mathbf{x}) h(\mathbf{x} - \mathbf{x}_0) d\mathbf{x}\)
校正方法:
衍射理论在计算机图形学中的发展方向:
本章深入探讨了衍射理论及其在计算机图形学中的应用。我们从几何光学的局限性出发,逐步建立了能够准确描述衍射现象的数学框架。
GTD衍射系数: \(D(\phi, \phi'; \beta_0; \alpha) = -\frac{e^{i\pi/4}}{2\sqrt{2\pi k_0}} \frac{1}{\sin\beta_0} \sum_{i=1,2} \cot\left(\frac{\pi \pm (\phi-\phi')}{2N}\right)\)
UTD过渡函数: \(F(\xi) = 2i\sqrt{\pi} \xi e^{i\xi^2} \int_\xi^\infty e^{-it^2} dt\)
衍射场: \(u^d(P) = u^i(Q_D) \cdot D \cdot \sqrt{\frac{\rho}{s(\rho + s)}} \cdot e^{ik_0 s}\)
菲涅尔数判据: \(F = \frac{a^2}{L\lambda}\)
练习19.1 考虑一个半无限大完美导体平面($y = 0, x > 0$)。平面波以角度 $\phi^i = 60°$ 入射,波长 $\lambda = 500$ nm。 a) 使用GTD计算 $\phi^d = 120°$ 方向上的衍射系数。 b) 确定阴影边界和反射边界的位置。 c) 解释为什么标准GTD在这些边界失效。
提示:使用半平面的衍射系数公式,注意 $\alpha = 2\pi$。
练习19.2 推导楔形边缘(楔角 $\alpha$)的Keller锥条件。证明入射射线和衍射射线与边缘的夹角相等。
提示:从广义费马原理出发,考虑通过边缘点的路径。
练习19.3 比较UTD和PTD方法计算直边缘衍射的计算复杂度。考虑 $N$ 个观察点和 $M$ 个边缘的情况。
提示:分析每种方法需要的基本运算。
练习19.4 设计一个衍射光栅,在正入射下将白光(400-700 nm)分散到 ±30° 范围内。 a) 确定光栅周期。 b) 计算各波长的衍射效率。 c) 讨论高阶衍射的影响。
提示:使用光栅方程 $d(\sin\theta_m - \sin\theta_i) = m\lambda$。
练习19.5 推导复射线(高斯束)通过楔形边缘的衍射。假设束腰位于边缘,初始束腰半径 $w_0$。
提示:使用复源点方法和解析延拓。
练习19.6 分析计算机图形学中相机光圈叶片产生的星芒效应。考虑 $N$ 片叶片的多边形光圈。
提示:将问题分解为多个直边的衍射,考虑对称性。
练习19.7 讨论为什么隐身飞机的设计需要考虑PTD理论。哪些几何特征最容易产生强衍射回波?
提示:考虑雷达散射截面(RCS)和边缘贡献。
练习19.8 设计一个实验来验证GTD预测的衍射场。需要什么设备?如何区分衍射贡献和其他散射机制?
提示:考虑测量精度和隔离不同贡献的方法。