任意折射率介质中的光线追迹算法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、光线追迹

光线追迹的基本思想是:光线在折射率均匀的介质中是沿直线传播的,但在变折射率介质中光是沿曲线传播的。如果将变折射率介质按照一定规律(可以沿光轴方向或者沿光线方向)分成很多小段,并且认为光线只在各小段之间的边界上发生折射、而在各小段内部是沿直线传播的,如下图所示。本算法采用无限逼近的思想,逐步计算出光线的近似轨迹,计算的步长在计算中可以是确定的,也可以根据情况进行调整。当把变折射率介质分成足够多的小段时,就能得到光线的近似轨迹。
图1光线追迹算法示意图
光线方程是光线在变折射率介质中的运动轨迹的基本方程。其描述为:
在这里插入图片描述

二、离散空间的折射率及其梯度求解

1.折射率计算

在离散空间内,已知各离散点上的折射率,需要求解其他空间任意点的折射率,通常采用插值法。本方案采用稳定性和精度均较好的反距离加权平均插值法。
图2网格插值单元示意图
在三维离散空间内,相邻八个节点构成一个单元,如图2所示。已知单元的八个定点的折射率为ni ( i = 1,2,…,8),设点P到八个点(xi,yi,zi )的距离为di,求解单元内部任一点P的折射率 nP,采用反距离加权平均插值算法如下:
权重函数:
在这里插入图片描述
计算结果:
在这里插入图片描述
其中 在这里插入图片描述

2.折射率梯度计算

求解离散空间任一点的折射率梯度,需要先求解离散点本身的梯度值,然后再根据该点周围离散点的梯度,利用距离加权插值求解该点的梯度值。其中后者的插值方法在前面已经介绍,这里主要讨论离散点本身梯度的求解方法。
求解网格节点的梯度需要利用该节点周围其它多个点进行求解,常用的方法有Hom梯度算子、Barron梯度算子等,此处选择精度较高的Barron算子。Barron算子是对邻域离散折射率进行沿x、y、z方向的三次样条插值结果,如下图所示。

在这里插入图片描述
对于某点n(i,j,k)邻域四点的折射率沿x、y、z方向运用Barron算子进行插值,得到梯度值表达式为:

在这里插入图片描述

3.光线追迹方案

本方案采用泰勒级数展开法进行光线追迹。
在初始点r0的一个邻近区域内将位置矢量r展开成弧长s的Taylor级数:

在这里插入图片描述
其中,∆s 是所选的邻近区域半径,也即是追迹步长。dr/ds 表示光线的切向单位矢量,用 τ 表示;d2r/ds2 表示光线的曲率矢量(法向矢量),用 k 表示。
则有:k·s = 0。 再把 dr/ds 做4类似展开,得到:
在这里插入图片描述
用τ,k符号科表示为:
在这里插入图片描述
光线方程可写成:
在这里插入图片描述
即:
在这里插入图片描述
结合上几式可得:
在这里插入图片描述
最后给出具有二阶精度的泰勒级数展开数值计算方法公式:
在这里插入图片描述
在介质空间内的某一位置,求得折射率值n和折射率梯度分布 ∇n,再由初始光线的起始点r及该点处的光线方向 τ(即 dr/ds),可以求得k;最后通过上式求得邻近点的 r(位置)和 τ(光线轨迹方向),再计算得到该点的折射率 n 和梯度 ∇n。依次类推,按照小步长∆s,可以相继求得(r1,τ1 ),(r2,τ2 ),…,直到成像面上的点(rn,τn ),完成光线追迹。

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值