切换到宽版
  • 广告投放
  • 稿件投递
  • 繁體中文
    • 1111阅读
    • 0回复

    [分享]如何使用可编程界面及示例(球面) [复制链接]

    上一主题 下一主题
    离线infotek
     
    发帖
    6080
    光币
    24553
    光券
    0
    只看楼主 倒序阅读 楼主  发表于: 2021-05-24
    摘要 ^Q=y^fx1  
    qu ~|d}0  
    为您的光学仿真提供最大的多功能性是我们的宗旨之一。在本文档中,我们将向您展示如何编写自定义表面:即如何定义高度函数h(x,y)。该函数是在参数化平面上用x,y坐标来表示3D表面。我们可以使用这些表面来配置系统中的光学组件。在VirtualLab的默认模板中,我们提供最基本的锥形表面; 但在本教程中,我们使用球面作为简单的编程示例。 +^kxFQ(:  
    nuQ6X5>.=  
    Tj=dL  
    可编程界面所在位置:目录 >Mn>P!  
    -(w~LT$ "  
    e5ru:#P.p  
    提示:您可以在界面目录中保存自定义界面“customized interface”(作为用户自定义“User Defined”)供以后使用。 ;a#*|vx  
    p%"yBpSK  
    可编程界面所在位置:组件 DAnb.0  
     |.C    
    )@qup _M@  
    2Nn1-wdhb  
    JblmXqtC  
    编写代码 5)yOw|Bd  
    V+qJrZ ,i  
    'yd@GQM&  
    •右侧面板显示了可用的独立参数列表。 nnE_OK!}T  
    •x和y表示独立变量,即平面上的2D坐标。 5ttMua <G?  
    •由孔直径X“ApertureDiameterX”和孔直径Y“ApertureDiameterY”(两者都在界面的常规配置对话框中确定)来定义x和y的间隔。 3fxNV<  
    •主函数中的代码必须每x,y点返回一个双精度“double”类型的值。该值表示该点的高度。所有这些高度值的集合定义了3D表面。 irsfJUr[V  
    •使用Snippet Body将支持函数中的部分代码分组。 8*yo7q&  
    sc8DY!|OYN  
    ~pevU`}Uqc  
    g(<T u^F  
    提示:全局参数(Global Parameters),代码段帮助(Snippet Help),高级设置选项卡(Advanced Settings tabs)和界面的其他方面与VirtualLab中的其他可编程元素具有等效功能。
    zq;DIWPIoJ  
    XY{:tR_al  
    表面梯度的定义 3eTrtCe$  
    A/"}Y1#qX\  
    BMNr<P2li  
    •精确计算界面的梯度是光学仿真的基础。 d9Z&qdxTKq  
    •VirtualLab中的可编程界面允许两种不同的梯度定义模式:数值模式,具有可调精度(由软件自动执行)或解析模式(由用户另外编程)。 x pTDYF  
    GVG!sM mnX  
    %5h^`lp  
    用户自定义的表面梯度 xP/OsaxN  
    !&`}]qQZ  
    #9`rXEz  
    •右侧面板显示了相同的可用独立参数列表。 wn+j39y?ZY  
    •该情况下,主函数中的代码必须返回一个向量D“VectorD”——一个带有两个双精度“double”(实值)坐标的向量。使用Snippet Body将支持功能中的部分代码分组。 V5a?=vK9  
    •尽可能使用梯度的解析定义,以获得更准确的替代方案。软件会检查代码的一致性,但用户必须确保为梯度输入的函数与相应的界面一致! # SQvXMT  
    3@)obb  
    8?7kIin  
    i-,D_   
    可编程界面的输出 EqnpMHF  
    bar0{!Y"  
    pp~3@_)b  
    •输出是3D表面,其可用于定义系统中实际光学组件的界面。 7]|zkjgI  
    •在有需要时,可在实际组件内直接编程自定义界面。 i3Hz"Qs;  
    •或者,将其保存在目录中供后续使用。 q_T] 9d  
    a@#Q:O)4  
    u#+RUtM  
    4.|-m.a  
    qL| 5-(P  
    JI"/N`-?;b  
    ~uI**{  
    TZ_rsj/t  
    对球形表面进行编程 YwL`>?  
    球形表面 (=1q!c`  
    hH%,!tSx  
    LJGJ|P  
    可编程界面所在位置:目录 dhHEE|vrz  
    Q.,DZp   
    !4R>O6k   
    X JY5@I.  
    可编程界面所在位置:组件 r6`\d k  
    NZLXN  
    Ge~q3"  
    设置表面的定义区域 AnNP Ti  
    :l+_ja&o  
    E4+b-?PB~  
    •在进入编程界面之前的配置对话框中,用户可以定义表面定义区域(参数化)的形状和大小。 )Zas x6`  
    •在本例中,我们使用圆孔。 !?nu?  
    •请记住,球形表面的定义区域有一个自然限制,由其直径给定,在其外部没有定义表面!
    BhKO_wQ?:J  
    +YTx   
    2;G98H  
    进入可编程界面 <cYp~e%xIw  
    Wo{K}  
    U98_M)-%&  
    kMy<G8 s  
    可编程界面:全局参数 @(-yrU  
    Z>F@n Tzb>  
    {XtoiI  
    •打开编辑对话框(源代码编辑器)后,转到全局参数选项卡。 flG=9~qcGQ  
    •在那里,添加和编辑一个参数: =7 VCtd/  
    - 双精度“double”半径= 10毫米(-1米,1米):球面曲率半径。 3gpo %  
    •使用带有小“注释”图标的按钮可以为您的自定义全局参数添加一些说明。 0q{[\51*  
    提示:此处可能有必要添加一些陈述文本以促进其他使用者理解和使用代码段。 3DW3LYo{  
    6lsL^]7  
    b,dr+RB  
    6xarYh(  
    可编程界面:代码段帮助(Snippet Help) W,3zL.qH"  
    b^ sb]bZW  
    R4b-M0H  
    •可选功能“Optional”:您可以使用“代码段帮助”选项卡编写指令,说明以及与代码段相关的一些其他数据。 -Q$b7*"z(  
    •此选项对于使用可编程元素跟踪进度非常有用。 JSgpb ?(  
    •当可编程元素被发送给其他用户处理时,它的作用发挥得尤为明显! LeSHRoD  
    y"vX~LR  
    H`-=?t  
    ExCM<$,  
    > \3ah4"o  
    ^ av6HFQ  
    可编程界面:编写代码 'wZ_4XjD  
    EMlIxpCn:  
    ?,07;>&  
    \ZS TKi?  
    可编程界面:用户自定义梯度 ` W4dx&  
    RN[]Jt#6  
    \jyjQ,v)  
    可编程界面:使用您的代码段(Snippet) QU/fT_ORw  
    O8lFx_N7Q  
    q[ ULG v  
    >)Gd:636+  
    可编程界面的输出 =g~W%})  
    :)IV!_>'d  
    -U -P}6^  
    MzzKJ;wbC6  
    此表面由代码完全解析定义——完全准确“full accuracy”(达到双精度水平) L-\ =J  
    /r^[a,Q#x  
    将自定义界面保存到目录中 5& !'^!  
    #cU^U#;=r  
    %d;<2b0  
    k4{:9zL1#?  
    提示:如果您使用目录来定义您的自定义界面,系统将会自动提示您将工作保存到目录中。 `~h4D(n`  
    =e BmBn  
    故障排除提示 5mgHlsDzu  
    [i7YVwG4  
    LA4<#KP  
    ~W03{9(Vp8  
    您注意到自定义表面3D可视化中奇特的边界效果“border effects”了吗? rk|@B{CA;  
    _1|$P|$P.  
    ?Elg?)os  
    T8XY fcc*h  
    6/tI8H3E  
    测试代码! ? \m3~6y  
    8W+5)m.tp  
    ?j{C*|yHO  
    mR+Jws'  
    9(,@aZ  
    w? LrJ37u  
    文件信息 /ty?<24ko  
    P)6 lu8zQ  
    Z4hLdHo_  
    UE :HMn6  
    A\QJLWBv^$  
    QQ:2987619807 (\,BxvhG=  
     
    分享到