会员须知
会员须知
实用帮助
实用帮助
  • 收听TA
  • 加为好友
  • 发送消息
  • OpticalStudio中用于杂散光分析的过滤字符串

    已有 126 次阅读2024-7-30 22:42 |个人分类:杂散光分析| 杂散光, 过滤字符串

     OpticalStudio中用于杂散光分析的过滤字符串

    只显示具有某些特定性质的 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 次的光线段。

     

    另请参阅 HnX_HITSX_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 字节。

    评论 (0 个评论)

    facelist

    您需要登录后才可以评论 登录 | 注册

    联系我们|本论坛只支持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.

    返回顶部