||
只显示具有某些特定性质的 NSC 光线或数据会比较方便。例如,如果开启散射以及光线分光功能,如果追迹许多光线, 则视图会变得非常混乱。 过滤字符串可以定义一个“测试”, 绘制和显示光线之前,光线必须通过该测试。过滤字符串的语句包含标志之间的逻辑运算,用来显示光线中的某线段是否与 NSC 组中的物体相交、 错过、 反射、 折射、 散射,衍射或鬼像反射。也支持数值参数的“拓展 ( Extended ) ”标志。 下表介绍了支持的标记。
1. 过滤字符串标记 ( FILTER STRING FLAGS )标记
描述
{#n1}[Complex Filter String]
将光线集限定为满足[Complex Filter String]条件所定义的前[n1]条光线。
注意, [Complex Filter String]可以是任意标准的滤字符串, 并且是可选项;如果省略,则选择前[n1]条光线。
[n1]可以是任意正整数值。
[n1]值无效将导致出现未定义的效果。
{#n1-n2}[Complex Filter String]
将光线集限定在光线[n1]到光线[n2](包括)范围内, 满足[Complex Filter String]所定义的条件。
请注意, [Complex Filter String]可以是任意标准过滤字符串, 并且是可选项;如果忽略,则选择光线[n1]-[n2]。
{#n1-n2}[Complex Filter String] 与{#n2}[Complex Filter String] 用法相同。
[n1]可以是任意正整数值。 [n2]可以是大于或等于[n1]的任意正整数值。
[n1]或[n2]值无效将导致出现未定义的效果。
_n
过滤字符串以下划线“_”开头, 后跟一个由路径分析功能 ( Path Analysis feature ) 定义和使用的整数代码; 请参阅“路径分析( Path Analysis ) ”。
~nnnmmm…[#]
光线路径过滤字符串。此过字符串用于选择光线分段遵循明确路径的光线分支。第一个物体编号定义了光源物体,后续依次为每个与光线相交的物体,按相交顺序排列。每个物体编号定义必须为三位整数,需要时可以在之前加 0.光线离开光源物体 7,然后依次与物体 18,物体 9 相交,最后终止或不与任何其他物体相交, 可使用过滤字符串“~007018009”定义。 多余定义一个物体编号没有意义;例如,如果光线与透镜 9 的前面相交,则会与物体 9 的后表面相交,此时只需在过滤字符串中列出一个 009 即可。
可以选择使用#符号终止过滤字符串,表明任何最初遵循此路径的光线段被选中。这使得与不同的物体相交,或者不与任何物体相交的光线在列出的最后一个物体后仍被选中。
任意一个过滤字符串的最大物体数为 50。
$nnmm…[#]
光线路径过滤字符串替代结构。 这相当于上面的“~”过滤字符串,除了使用两位代码,而不是使用物体编号的三位代码以外。如果物体的数量小于 100,则选择该结构更方便。
Bn
物体 n 内部的光线体散射。如果 n 值是 0,则来自任一物体的体散射光线段将对此测试返回 True。
Dn
光线交于物体 n 后衍射。请参阅 En。
En
父光线段从物体 n 衍射。当开启光线分光时,从物体衍射的分光光线段,次序不等于 0 时才设置此标志。
Fn
父光线段从物体 n 散射。当开启光线分光时,从散射表面分光的光线段才设置此标志。 反射光线段无法开启此标志,只有散射光线段可以开启。如果 n 值是 0,则来自任一物体的散射光线段将对此测试返回 True。
Gn
父光线段从物体 n 的鬼像反射。当开启光线分光时,从折射物体反射的光线段才设置此标志。如果 n 值是 0,则来自任一物体的鬼像光线段将对此测试返回 True。
Hn
光线交于物体 n。测试一条光线是否交于物体,标志格式为Hn。例如,如果要测试光线是否交于物体 5,则将标志设置为 H5。请参阅 Ln。
Jn
与 Gn 类似,除了鬼像反射点前的所有光线段强度都设置为0。 允许探测器指示器只能指示鬼像能量,而不是直接指示入射能量, 即使在后来光线从其它物体鬼像反射也是如此。零强度值仅影响探测器指示器,而不影响光线数据库指示器或布局图。
Ln
光线最后到达物体 n。要检测光线的最后一个分支的光线段是否到达一个物体,标志是 Ln 形式。例如,如果光线分支的最后一段到达物体 5,则将标志设置为 L5。请参阅 Hn。
Mn
光线错过物体 n。测试一条光线是否错过物体,标志格式为Mn。例如,要测试光线时候错过物体 15,则将标志设置为M15。
On
光线从编号 n 光源发出。 O0( 即“O”表示原点, “0”表示零)表示选取所有的光源。
Rn
光线交于物体 n 后反射。标志 R7 将测试光线是否交于物体 7后反射。请参阅 Gn。
Sn
光线交于物体 n 后散射。 ZRD 文件中列出了此测试“S”标志,表示在光线交于物体后散射。另请参阅 Fn 和 X_SCATTER。
Tn
光线进入物体 n 后透射(折射)。标志 T4 将测试光线是否交于物体 4,然后透射(折射)。
Wn
光线使用波长 n。如果 n 值是 0,则任一波长光线对该测试将返回 True。 注意,此滤字符串只测试从光源出发光线的初始波长。
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)
光线在局部 y-z 平面中物体 n 的入射角(以度为单位)小于v。这个角度不考虑传播方向,关于+z 方向测量。如果光线没有到达物体 n,则这个标志为 false。
X_EXT(n,b)
光线段是在父光线交于物体 n 刚好经过 b 次后从双折射界面生成的非寻常光。要应用此滤字符串, 要找寻 b 次交于物体 n 的父光线段,并且仅考虑该特定父光线段的子光线段。如果任何父光线段均没有 b 次交于物体 n,则滤字符串返回 false。另请参阅 X_ORD。
X_GHOST(n,b)
光线段鬼像反射 b 次,并至少与物体 n 相交一次。如果 n 是0,则任一有 b 次鬼像反射的光线段将通过该测试。例如,要考虑所有二次反射的鬼像(来自父鬼像光线段的鬼像光线),使用 X_GHOST(0,2)。
X_GHOST 不会考虑以最后是全内反射的鬼像光线段,尽管全内反射光线也被认为是鬼像。例如,如果一个一次鬼像光线离开一个表面,交于另一个表面,然后又在第二个表面全内反射。 X_GHOST(0,3)将不会包括这个段,因为该段最后发生全内反射,并且没有光线终止(光线反射并继续传播)。 相同的段会包括在过滤 X_GHOST(n,4)中,因为光线是第四次鬼像(在全内反射)。这是人为的让 OpticStudio 如此定义光线段以及鬼像光线计数。在所有情况下,如果测试的 b 值足够高,则所有鬼像光线都可以找到。注意,从折射表面全内反射的光线被认为是鬼像,但从镜面表面反射的光线不是鬼像。
另请参阅 Gn。
X_HIT(n,b)
与物体 n 相交 b 次的光线段。
另请参阅 Hn、 X_HITS、 X_HITFACE 和 X_HITFACE2。
X_HITS(n1,n2)
如果 n2 为零,光线 n1 次或多次 n1 次交于任何物体。
如果 n2 不为零,则光线交于物体的次数在 n1 和 n2(包含)之间。
X_HITFACE(n,f)
与物体 n 的面 f 相交的光线段。另请参阅 Hn、 X_HIT、和X_HITFACE2。
X_HITFACE2(n,f,b)
与物体 n 的面 f 相交 b 次的光线段。另请参阅 Hn、 X_HIT。
X_IAGT(n,v)
在物体 n 上绝对强度大于 v 值的光线。如果光线不交于物体,则该标志为 false。
X_IALT(n,b)
在物体 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 上 z 方向余弦大于 v 值的光线。如果光线不交于物体,则该标志为 false。
X_NLT(n,v)
在物体 n 上 z 方向余弦小于 v 值的光线。如果光线不交于物体,则该标志为 false。
X_ORD(n,b)
光线段是在父光线交于物体 n 刚好经过 b 次后从双折射界面生成的寻常光线。要应用此滤字符串, 要找寻 b 次与物体 n 相交的父光线段,并且仅考虑该特定父光线段的子段光线。如果任何父光线段都没有与物体 n 相交 b 次,则滤字符串返回
false。另请参阅 X_EXT。
X_SCATTER(n,b)
从父光线上散射 b 次并至少与物体 n 相交一次的光线段。如果n 为零,任何从父光线散射 b 次出来的子光线段将通过测试。
例如,要只考虑第一代散射光线,使用 X_SCATTER(0,1)。此滤字符串只用于测试从 ZRD文件中列出的父光线或者“F”标志上发生的散射光线。另请参阅 X_SCATTERF。
X_SCATTERF(n,b)
在父光线与物体 n 相交 b 次后,光线段在物体 n 上发生散射。
要应用此滤字符串, 要找寻与物体 n 相交 b 次的父段,并且仅考虑该特定的父光线段。如果父光线段均没有 b 次交于物体n,则过滤字符串返回 false。例如,当只考虑在第三次与物体5 相交后被散射的关系(即光源发出的光线之前已经与相同的物体相交两次),使用 X_SCATTERF(5,3)。另请参阅 Fn 和X_SCATTER。
X_SEGMENTS(n1,n2)
如果 n2 为零,光线具有 n1 或更多光线段。
如果 n2 不为零,则光线的段数在 n1 和 n2(包含)之间。
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 上局部 z 坐标大于 v 值的光线。如果光线不交于物体,则该标志为 false。
X_ZLT(n,v)
在物体 n 上局部 z 坐标小于 v 值的光线。如果光线不交于物体,则该标志为 false。
Z
光线有严重错误。
所有的标志除了 O、 G、 E 和 F 标志外都表示在与下标 n 表示的物体相交后光线段的情况。 G、 E和 F 标志表示父光线段交于物体 n,因而产生的子光线分别为鬼像,衍射,或散射。 O 标志表示从光源物体 n 所发出的光线。 W 标志表示波长序号为 n 的光线。形式为 X_***(n,v)需要两个数字参数,并分别在括号内用逗号隔开,否则会发出语句报错信息。
每个标志值都要对每条光线追迹进行评估,而且标志会被指定一个 TRUE 或 FALSE 的值。标志可以单独使用,或者与逻辑操作数结合。逻辑操作数通常在两个逻辑标志上作运算( NOT 例外,只需右侧的一个标志),支持下列逻辑操作数:
l &:逻辑 AND。 &符号两边的标记必须同时为 TRUE, AND 的运算结果才会返回 TRUE。
l |:逻辑 OR。如果任意一个标记为 TRUE, OR 运算返回 TRUE。
l ^:逻辑 Exclusive OR(XOR)。如果任意一个标记为 TRUE(但不能都是), XOR 运算返回 TRUE。
l !:逻辑 NOT。如果右边标记为 FALSE,则返回 TRUE,反之亦然。
l 括号可以用来界定运算的优先级。
2. [滤字符串示例] ( Filter String Examples )l 要选择交于物体 7 的光线,滤字符串应为:
H7
l 要选择交于物体 7 及物体 9 的光线,滤字符串应为:
H7 & H9
l 要选择光线 a)交于物体 7 及物体 9,但不从物体 6 反射;或者 b)错过物体 15,滤字符串应为:
(H7 & H9 & !R6 ) | M15
l 如果只要选取交于物体
3,4 或 7 而产生鬼像的光线,滤字符串应为:
G3 | G4 | G7
l 要选择光线以入射角小于
10 度角入射平坦物体 5,该物体法向向量沿局部+z 轴,滤字符串应为(注意 cos(10)=0.984808):
X_NGT(5,0,984808)
注意,只有光线交于标志 X_NGT 中指定的物体才能使标志为 True。
l 要选择交于物体 5 且错过物体 6 的前 50 条光线,滤字符串应为:
{#50}(H5 &M6)
l 要在第 10 条光线到第 20 条钢线中选择交于物体 5 且错过物体 6 的光线,滤字符串应为:
{#10-20}(H5 & M6)
过滤字符串会检查基本语句错误,如括号不匹配,但并非所有的语句错误都会检查出来。满足过滤字符串测试的光线数据可能较少,甚至可能是零。 OpticStudio 仍会对定义光源的光线进行光线追迹(根据配置光线参数 ( layout rays parameter ) ),但是只有部分通过过滤的光线会被储存、显示、绘出。 如果光线数据被储存, 滤字符串也能应用于光线数据库文件过滤, 请参阅“光线追迹控件( Ray Trace Control ) ”。 由于过滤字符串与动态和静态窗口结合使用, 因此 OpticStudio 不会在插入或删除物体的同时自动对过滤字符串参数进行重新编号。
3. 讨论:过滤字符串的长度限制为 260 个字节。 注意, 这是“拓展 ( Extended ) ”过滤字符串的限制, 包括内置的所有已命名的过滤字符串。
例如, 如果输入一个“(_1) OR (_2)”过滤字符串, 则插入路径分析字符串时其可能会导致字符串被截断。
Filter string = “(_1) OR (_2)”
软件将通过以下方式解析路径分析:
(_1) = “H2 & H3 & H4” (14字节)
(_2) = “H2 & H3 & H4 & H5” (19 字节)
所以,该过滤字符串大约有 14+4( 来自逻辑 OR 和空格) +19=37 字节。
联系我们|本论坛只支持PC端注册|手机版|小黑屋|吾爱光设 ( 粤ICP备15067533号 )
GMT+8, 2024-12-25 02:07 , Processed in 0.109375 second(s), 18 queries .
Powered by Discuz! X3.5
© 2001-2024 Discuz! Team.