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

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

    上一主题 下一主题
    离线xunjigd
     
    发帖
    952
    光币
    9
    光券
    0
    只看楼主 倒序阅读 楼主  发表于: 2018-11-14
    摘要 o4,W!^ n2  
    Uoh!1_oV  
    为您的光学仿真提供最大的多功能性是我们的宗旨之一。在本文档中,我们将向您展示如何编写自定义表面:即如何定义高度函数h(x,y)。该函数是在参数化平面上用x,y坐标来表示3D表面。我们可以使用这些表面来配置系统中的光学组件。在VirtualLab的默认模板中,我们提供最基本的锥形表面; 但在本教程中,我们使用球面作为简单的编程示例。 } O8|_d  
    CYmwT>P+*4  
    q<yp6Q3^  
    ]i)m   
    可编程界面所在位置:目录 ogH{   
    AF>J8V  
    =U!M,zw4  
    DDyeN uK  
    提示:您可以在界面目录中保存自定义界面“customized interface”(作为用户自定义“User Defined”)供以后使用。 Ua)ARi %  
    { ,qm=Xjq  
    可编程界面所在位置:组件 oEd+  
    9sifc<za  
    (V)nHF*<>  
    U@!e&QPn  
    编写代码 &p%0cjg"Q  
    BYFvf(>  
    •右侧面板显示了可用的独立参数列表。 D$+9`  
    •x和y表示独立变量,即平面上的2D坐标。 |?hNl2m  
    •由孔直径X“ApertureDiameterX”和孔直径Y“ApertureDiameterY”(两者都在界面的常规配置对话框中确定)来定义x和y的间隔。 8hZ+[E}  
    •主函数中的代码必须每x,y点返回一个双精度“double”类型的值。该值表示该点的高度。所有这些高度值的集合定义了3D表面。 p?2 \9C4  
    •使用Snippet Body将支持函数中的部分代码分组。 V6B`q;lA  
    UmcPpZ  
    4R0'$Ld4  
    Stq&^S\x69  
    提示:全局参数(Global Parameters),代码段帮助(Snippet Help),高级设置选项卡(Advanced Settings tabs)和界面的其他方面与VirtualLab中的其他可编程元素具有等效功能。 L}pMjyM  
    3,=97Si=  
    表面梯度的定义 oW3j|V  
    s4/4o_[W  
    •精确计算界面的梯度是光学仿真的基础。 _8Cw_  
    •VirtualLab中的可编程界面允许两种不同的梯度定义模式:数值模式,具有可调精度(由软件自动执行)或解析模式(由用户另外编程)。 V}o`9R@tx}  
    lk]q\yO_%  
    /]zn8 d  
    %wWJVq}jx  
    用户自定义的表面梯度 mD<- <]SYp  
    vg[A/$gLM  
    Jd?N5.  
    •右侧面板显示了相同的可用独立参数列表。 <fg~+{PA&  
    •该情况下,主函数中的代码必须返回一个向量D“VectorD”——一个带有两个双精度“double”(实值)坐标的向量。使用Snippet Body将支持功能中的部分代码分组。 m r"b/oM{  
    •尽可能使用梯度的解析定义,以获得更准确的替代方案。软件会检查代码的一致性,但用户必须确保为梯度输入的函数与相应的界面一致! jR[VPm=  
    >zFk}/  
    Y S/x;  
    (Ild>_Tdb`  
    可编程界面的输出 Ut.%=o;&[  
    A?i ~*#wE  
    •输出是3D表面,其可用于定义系统中实际光学组件的界面。 #@FMH*?xX6  
    •在有需要时,可在实际组件内直接编程自定义界面。 OGW,[k= 2{  
    •或者,将其保存在目录中供后续使用。 vy&'A$ H  
    @yp#k>  
    #t N9#w[K{  
    4eH:eCZze  
    对球形表面进行编程 Yuo:hF\DH  
    3,`I\>No  
    球形表面 O*0%AjT6  
    6 G.(o  
    'EzKu~*  
    s^f7w  
    可编程界面所在位置:目录 }C-K0ba7  
    kNq>{dNRx  
    NULew]:5  
    jN))|eD0x  
    可编程界面所在位置:组件 [g )HoR=&  
    %8Eu{3  
    #gW"k;7P  
    XhEZTg;  
    设置表面的定义区域 vH1IVF"DS  
    5j'7V1:2  
    •在进入编程界面之前的配置对话框中,用户可以定义表面定义区域(参数化)的形状和大小。 \f~m6j$D_  
    •在本例中,我们使用圆孔。 >b\{y}[  
    •请记住,球形表面的定义区域有一个自然限制,由其直径给定,在其外部没有定义表面! zF: :?L~  
    g0({$2Q7R  
    J9aqmQj('  
    0zQ~'x  
    进入可编程界面 xER-TT #S  
    `qoRnG  
    _[)f<`!g_V  
    TAL,(&[s  
    可编程界面:全局参数 2 |`7_*\  
    mVXwU](N  
    •打开编辑对话框(源代码编辑器)后,转到全局参数选项卡。 3Z0ez?p+5  
    •在那里,添加和编辑一个参数: v 9k\[E?  
    - 双精度“double”半径= 10毫米(-1米,1米):球面曲率半径。 S\76`Ot  
    •使用带有小“注释”图标的按钮可以为您的自定义全局参数添加一些说明。 t@X{qm:%Z  
    提示:此处可能有必要添加一些陈述文本以促进其他使用者理解和使用代码段。 :m]KVcF.  
    '=AqC,\#  
    <C1w?d$9I  
    >c`r&W.t  
    可编程界面:代码段帮助(Snippet Help) c r,fyAvX  
    J497 >w[  
    •可选功能“Optional”:您可以使用“代码段帮助”选项卡编写指令,说明以及与代码段相关的一些其他数据。 u.yYE,9  
    •此选项对于使用可编程元素跟踪进度非常有用。 pTB1I3=.u  
    •当可编程元素被发送给其他用户处理时,它的作用发挥得尤为明显! m@Hg:DY  
    g)!d03Qoy  
    c1tM(]&  
    d9iVuw0u<  
    - +<ai  
    8u%rh[g'  
    可编程界面:编写代码 ~"J7=u1o  
    y3XR:d1cg  
    = }ELu@\V[  
    -,186ZVZ  
    可编程界面:用户自定义梯度 vRkVPkZ6|  
    ,NAwSmocVP  
    ppuJC ' GW  
    可编程界面:使用您的代码段(Snippet) ajCe&+  
    /'4]"%i%3  
    GvzaLEo  
    we0haK  
    可编程界面的输出 q# 6|/R*  
    b{BiC&3  
    ?%cZO "  
    lb{X6_.  
    此表面由代码完全解析定义——完全准确“full accuracy”(达到双精度水平) aH7@:=B  
    (I/ZI'Ydy  
    将自定义界面保存到目录中 y@h v#;  
    :FUxe kz  
    BN&eU'Dl]  
    A(9$!%#+L  
    提示:如果您使用目录来定义您的自定义界面,系统将会自动提示您将工作保存到目录中。 I p<~Y  
    yxtfyf|9 '  
    故障排除提示 w1EB>!<;tj  
    e%km}mA  
    lSfPOx;*  
    ),>whCtsI  
    您注意到自定义表面3D可视化中奇特的边界效果“border effects”了吗? :*M2@  
    ')T*cLQ><  
    00LL&ot  
    mGpBj9jr1  
    测试代码! mg< v9#  
    ,Yn$X  
    u+9)B 6O1  
    *:% I|5  
    ! o?E.  
    HBNX a  
    文件信息 ai<K6)  
    dy~M5,zn  
    !gL1  
    CHi t{ @9  
    (来源:讯技光电
    本主题包含附件,请 登录 后查看, 或者 注册 成为会员
     
    分享到