ZEMAX

ZEMAX非序列:过滤器(Filter)——过滤字符串(The filter string)

时间:2026-05-06 15:14:20   作者:Leslie   来源:正势利   阅读:26   评论:0
内容摘要:《ZEMAX非序列进行蒙特卡罗光线追迹——光线追迹探测器控制(TheRayTrace/DetectorControl)》过滤字符串(Thefilterstring)只显示具有特定性质的NSC光线或数据会比较方便。举例来说,如果开启散射以及分束功能,如果有许多光线要追迹,视图会变得非常混乱。过滤字符串可以定义的一个“测试...

《ZEMAX非序列进行蒙特卡罗光线追迹——光线追迹探测器控制(The Ray Trace/Detector Control)》

过滤字符串(The filter string)

只显示具有特定性质的NSC光线或数据会比较方便。举例来说,如果开启散射以及分束功能,如果有许多光线要追迹,视图会变得非常混乱。过滤字符串可以定义的一个“测试(test)”,光线在被绘出或被显示之前必须通过该测试。过滤字符串的语法包含标志间的逻辑运算,用以显示光线中的某段是否与NSC组中的物体相交,错过,反射,折射,散射,衍射,或鬼影反射。也有“Extended”标志支持数值用法。支持的标志如下

过滤字符串标志
标志(Flag) 描述(DeScription)
Bn 物体n内的光线体散射。如果n值是0,那么来自任一物体的体散射光线段将对此测试返回真值。
Dn 光线交于物体n后衍射。见h。
En 从父段物体n衍射。当打开光线分束时,从物体衍射的分束光线段,次序不等于0时才设置此标志。
Fn 从父段物体n散射。当打开光线分光时,从散射表面分束的光线段才设置此标志。镜面段不会打开这个标志,只有散射段可以。如果n值为0,则任何从物体的散射将对此测试返回真值。
Gn 从父段物体n的鬼影反射。当打开光线分光时,从折射物体反射的光线段才设置此标志。如果D值为0,则从物体反射的鬼影光线对此测试返回真值。
Hn 光线交于物体n。测试一条光线是否交于物体,标志格式为Hn。举例来说,如要测试光线是否交于物体5,标志即为H5。
Jn 与Gn完全相似,除了鬼影反射点前的所有段强度都设置为0。允许探测器观察者只看鬼影能量,而不是直接入射能量,甚至于在后来光线从其它物体反射也如此。零强度值仅影响探测器观察器,而非光线数据库查看器或是视图。
Ln 光线最后到达物体n。要检测光线的最后一个分支是否到达一个物体,标志是Ln形式。例如,如果光线分支的最后一段到达物体5,标志即为L5。参见Hn。
Mn 光线错过物体n。测试一条光线是否错过物体,标志格式为Mn。举例来说,如要测试光线是否错过物体15,标志即为M15。
On 由物体n发出的光线。00(“0”是原点(Origin))会选取所有光源。
Rn 光线交于物体而反射。标志R7将测试光线是否交于物体7后反射。见Gn。
Sn 光线交于物体n后散射。见Fn。
Tn 光线进出物体而透射(折射)。标志T4将双0试光线是否交于物体4,然后透射(折射)。
Wn 光线使用波长n。如果n值为0,则任一波长光线对该测试将返回真值。
X_AXYG(n,v) 光线在局部X-Y平面中物体n上的入射角(以度为单位)比v大。这个角是不考虑传播方向,关于+y方向测量的。如果光线没有到达物体n,这个标志为false。
X_AXYL(n,v) 光线在局部X-Y平面中物体n上的入射角(以度为单位)比v小。这个角是不考虑传播方向,关于+y方向测量的。如果光线没有到达物体n,这个标志为false。
X_AXZG(n,v) 光线在局部X-Z平面中物体n上的入射角(以度为单位)比v大。这个角是不考虑传播方向,关于+z方向测量的。如果光线没有到达物体n,这个标志为false。
X_AXZL(n,v) 光线在局部X-Z平面中物体n上的入射角(以度为单位)比v小。这个角是不考虑传播方向,关于+z方向测量的。如果光线没有到达物体n,这个标志为false。
X_AYZG(n,v) 光线在局部Y-Z平面中物体n上的入射角(以度为单位)比v大。这个角是不考虑传播方向,关于+z方向测量的。如果光线没有到达物体n,这个标志为false。
X_AYZL(n,v) 光线在局部X-Z平面中物体n上的入射角(以度为单位)比v小。这个角是不考虑传播方向,关于+z方向测量的。如果光线没有到达物体n,这个标志为false。
X_GHOST(n,b) 光线段鬼影反射b次,并至少与物体n相交一次。如果n是零,任意有b次鬼影反射的光线段将通过该测试。例如,要考虑所有二次反射的鬼影(来自父鬼影段的鬼影光线),使用X_GHOST(0,2)。X_GHOST不会考虑以最后是TIR(全内反射)的鬼影光线段,尽管TIR光线也被认为是鬼影。例如,如果一个一次鬼影光线离开了一个面,交于另一个面,然后又在第二个面全内反射。X_GHOST(0,3)将不会包括这个段,因为这个段最后会全内反射,并且没有一根光线终止(光线反射并继续传播)。相同的段会包括在过滤X_HOST(0,4)中,因为光线是第四次鬼影(在TIR点)。这是人为的让ZEMAX怎样定义段以及对鬼影光线计数。在所有情况下,如果b的充分高的值被测试了,所有的鬼影光线都可以找到。注意从折射面全内反射的光线被认为是鬼影,但是从镜面反射的光线不是。也可参见Gn。
X_HIT(n,b) 与物体n相交b次的光线段。也可参见Hn, X_HITFACE, and X_HITFACE2。
X_HITFACE(n,f) 与面f上的物体n相交的光线段。也可参见Hn, X_HIT, and X_HITFACE2。
X_HITFACE2(n,f,b) 与面f上的物体n相交b次的光线段。也可参见Hn and X_HIT。
X_IAGT(n,v) 在物体n上绝对强度大于v的光线。如果光线不交于物体,则该标志为false。
X_IALT(n,v) 在物体n上绝对强度小于v的光线。如果光线不交于物体,则该标志为false。
X_IRGT(n,v) 在物体n上相对强度大于v的光线。如果光线不交于物体,则该标志为false。
X_IRLT(n,v) 在物体n上相对强度小于v的光线。如果光线不交于物体,则该标志为false。
X_LGT(n,v) 在物体n上x方向余弦大于v的光线。如果光线不交于物体,则该标志为false。
X_LLT(n,v) 在物体n上x方向余弦小于v的光线。如果光线不交于物体,则该标志为false。
X_MGT(n, v) 在物体n上y方向余弦大于v的光线。如果光线不交于物体,则该标志为false。
X_MLT(n,v) 在物体n上y方向余弦小于v的光线。如果光线不交于物体,则该标志为false。
X_NGT(n,v) 在物体n上2方向余弦大于v的光线。如果光线不交于物体,则该标志为false。
X_NLT(n,v) 在物体n土z方向余弦小于v的光线。如果光线不交于物体,则该标志为false。
X_SCATTER(n,b) 从“父”光线上散射的光线段,并至少与物体n相交一次。如果n为0,任何从“父”光线上散射出来的“子”光线,散射b次将通过测试。例如,要只考虑第一代散射光线,使用X_SCATTER(0, 1)。这个滤光片只测试在ZRD中列出的“父”光线或者“F”标志上发生的散射。也可参见Sn and X_SCATTERF。
X_SCATTERF(n,b) 在“父”光线与物体n相交b次后,光线段在物体n上发生散射。要应用滤光片,就要研究与物体n相交b次的“父”光线,并且只考虑特定的“父”光线。如果“父”光线没有与物体n相交b次,滤光片返回false。例如,当只考虑在第三次与物体5相交后被散射的光线(即,光源发出的光线之前已经与相同的物体相交两次),使用X_SCATTERF(5,3)。也可参见Fn和X_SCATTER。
X_WAVERANGE(n, a, b) 光线已经与物体n相交过,并且其波段位于a微米与b微米之间。
X_WAVESHIFT(i,j) 光线在体散射时从波长i变为波长j。
X_XGT(n,v) 在物体n上x坐标大于v的光线。如果光线不交于物体,则该标志为false。
X_XLT(n,v) 在物体n上x坐标小于v的光线。如果九线不交于物体,则该标志为false。
X YGT(n,v) 在物体n上y坐标大于V的光线。如果光线不交于物体,则该标志为false。
X YLT(n,v) 在物体n上Y坐标小于v的光线。加果光线不交于物体,则该标志为false。
X ZGT(n,v) 在物体n上2坐标大于V的光线。如果光线不交于物体,则该标志为false。
X ZLT(n,v) 在物体n上2坐标小于v的光线。如果光线不交于物体,则该标志为false。
Z 光线有严重错误。

所有的标志除了O,G,E跟F标志外都表示在光线在与下标n表示的物体相交后光线段的情况。G,E以及F标志表示母体光线段交于物体n,因而产生“子光线(child ray)”分别是否为鬼影,衍射,或散射区段等等状况。O标志则表示从光源物体“n”所发出的光线。W标志表示波长序号为“n”的光线。形式为X_***(n,v)需要两个字段,并分别在括号内用逗号隔开,否则会发出报错信息。

每一道光线的光线追迹都会评估每一个标志值,而且标志会被指定一个“TRUE”或“FALSE”的值。此标志能被单独使用,亦可与逻辑运算结合。逻辑操作数一般在两个逻辑标志上作运算(NOT是例外,只需一个标志),支持的逻辑操作数如下:

&:逻辑AND(“且”)。&两端的标志必须同为TRUE,&的运算结果才会回应TRUE。

l:逻辑OR(“或”)。&两端的标志,至少其中一个为TRUE,1的运算结果才会回应TRUE。

^:逻辑EXCLUSIVE 0R(“XOR”),^两端的标志必须有一为TRUE,但不是同为TRUE,^的运算结果才会回应TRUE。

!逻辑NOT:当右端标志为FLASE时为TRUE,或响应FALSE,如果右瑞为TRUE。

括号可以用来界定运算的优先(precedence)

样例过滤字符串(Filter string examples)

要选择交于物体7的光线,过滤字符串应为:

H7

要选择交于物体7及物体9的光线,过滤字串应为:

H7&H9

要选择光线a)交于物体7及物体9的光线,但是不从物体6反射;或b)误失物体15,过滤字串应为:

(H7&H9&!R6)|M15

如果只要选取交于物体3,4,或7而产生鬼影的光线,过滤字串应为:

G3|G4|G7

要选择光线以小于10度角入射平物体5,该物体法线向量沿着局部+z轴,过滤字符串为(注意cos(10)=0.984808):

X_NGT(5,0.984808)3

注意只有交于标志X NGT中指定的物体的光线才可能使标志为真。

过滤字符串会检查基本语法错误,像不对称的括号,但并非所有的错误都会检查出来。符合过滤字符串检测的光线数目可能较少,甚至可能是零。ZEMAX还是针对定义光源的光线进行光线追迹(根据配置光线参数),但是只有部分通过过滤的光线会被储存、显示、绘出。如果光线数据被储存,过滤字符串也能应用于光线数据库文件过滤,请见第430页“进行蒙特卡洛光线追迹(Performing a Monte Carlo ray trace)”。

《ZEMAX中文使用手册》P437

逝者如斯,不舍昼夜作者QQ及微信:49922779 点击这里给我发消息


标签:字符  过滤  序列  过滤器  字符串  
相关评论
郑士点利 | 必应 | DeepSeek | 豆包 | H-K9L | 3cn.cn | 郑有钱 | 郑有富 | 光辉岁月 | 光学显微镜 | 显微镜与你 | 光学棱镜

该站用来记录个人生活的笔记,内容部分资料来源于网络,如有侵权,请联系删除。(QQ/微信49922779点击这里给我发消息 阿里旺旺:郑士利点击这里给我发消息 QQ交流群:120100441正势利交流群1)

  浙ICP备2025212358号