首页 -> 登录 -> 注册 -> 回复主题 -> 发表主题
光行天下 -> FRED,VirtualLab -> 如何使用可编程界面及示例(球面) [点此返回论坛查看本帖完整版本] [打印本页]

infotek 2021-05-24 11:47

如何使用可编程界面及示例(球面)

摘要 x@,B))WlGr  
Nvj KB)J  
为您的光学仿真提供最大的多功能性是我们的宗旨之一。在本文档中,我们将向您展示如何编写自定义表面:即如何定义高度函数h(x,y)。该函数是在参数化平面上用x,y坐标来表示3D表面。我们可以使用这些表面来配置系统中的光学组件。在VirtualLab的默认模板中,我们提供最基本的锥形表面; 但在本教程中,我们使用球面作为简单的编程示例。 {'q(a4  
sj%\lq  
b:6e2|xf?  
可编程界面所在位置:目录 kntn9G  
sFonc  
:3By7BZgj  
提示:您可以在界面目录中保存自定义界面“customized interface”(作为用户自定义“User Defined”)供以后使用。 [!>DQE  
$or8z2d1  
可编程界面所在位置:组件 >I *uo.OF  
E9PD1ADR  
!wEz= i  
*d,Z ?S/  
PRyzUG&  
编写代码 s7na!A[  
1<&nHFJ;[  
HT=-mwa_]  
•右侧面板显示了可用的独立参数列表。 2vX!j!_  
•x和y表示独立变量,即平面上的2D坐标。 H!uq5` j0K  
•由孔直径X“ApertureDiameterX”和孔直径Y“ApertureDiameterY”(两者都在界面的常规配置对话框中确定)来定义x和y的间隔。 rn%q*_3-o  
•主函数中的代码必须每x,y点返回一个双精度“double”类型的值。该值表示该点的高度。所有这些高度值的集合定义了3D表面。 DzG$\%G2R}  
•使用Snippet Body将支持函数中的部分代码分组。 )W$@phY(I  
./E<v  
=F90SyzTy  
[5s4Jp$+  
提示:全局参数(Global Parameters),代码段帮助(Snippet Help),高级设置选项卡(Advanced Settings tabs)和界面的其他方面与VirtualLab中的其他可编程元素具有等效功能。
:,FI 6`  
y>_*}>2,O  
表面梯度的定义 s<fzk1LZ  
aj@<4A=;  
E0<$zP}V}F  
•精确计算界面的梯度是光学仿真的基础。 l*>, :y  
•VirtualLab中的可编程界面允许两种不同的梯度定义模式:数值模式,具有可调精度(由软件自动执行)或解析模式(由用户另外编程)。 C: <TJ  
C(lGW,!  
?UV!^w@L:0  
用户自定义的表面梯度 ($*R>*6<x  
;\)N7SJ  
R7~#7qKQB  
•右侧面板显示了相同的可用独立参数列表。 J+=+0{}  
•该情况下,主函数中的代码必须返回一个向量D“VectorD”——一个带有两个双精度“double”(实值)坐标的向量。使用Snippet Body将支持功能中的部分代码分组。 `{W>Dy  
•尽可能使用梯度的解析定义,以获得更准确的替代方案。软件会检查代码的一致性,但用户必须确保为梯度输入的函数与相应的界面一致! bf-V Q7  
qr_:zXsob_  
I 7s}{pG  
ca!DZ%y  
可编程界面的输出 AWn$od`#s  
w2e 9Ue~WH  
#a=~a=c(^  
•输出是3D表面,其可用于定义系统中实际光学组件的界面。  N2Q%/}+,  
•在有需要时,可在实际组件内直接编程自定义界面。 f%5 s8)  
•或者,将其保存在目录中供后续使用。 ^h\Y.  
-|nHwSrCZ/  
 /DN!"  
8S*W+l19f  
[_wenlkm  
KJ;NcUq  
0z:BSdno  
M~t;&po  
对球形表面进行编程 qJf=f3  
球形表面 Fy-N U  
OXCf  
<\C/;  
可编程界面所在位置:目录 ~AbTbQ3  
z;d]=PT  
> lIQM3  
S, %BhQ[  
可编程界面所在位置:组件 L>Soj|WUy(  
;^Hg\a  
pXv@ QD#!  
设置表面的定义区域 =`%"-A  
+U];  
EAi!"NJ  
•在进入编程界面之前的配置对话框中,用户可以定义表面定义区域(参数化)的形状和大小。 "J(W)\  
•在本例中,我们使用圆孔。 '2BE"e  
•请记住,球形表面的定义区域有一个自然限制,由其直径给定,在其外部没有定义表面!
s`Z'5J;S  
P]b * hC  
A,'JmF$d  
进入可编程界面 qe"t0w|U?  
&]mZp&  
tV5U z&:b  
/,m!S RJ  
可编程界面:全局参数 x]%'^7#v)  
r^,XpRe&M  
j9G1  _  
•打开编辑对话框(源代码编辑器)后,转到全局参数选项卡。 6I`Lszs  
•在那里,添加和编辑一个参数: G(6MLh1  
- 双精度“double”半径= 10毫米(-1米,1米):球面曲率半径。 eH9Ofhsry  
•使用带有小“注释”图标的按钮可以为您的自定义全局参数添加一些说明。 BQTibd  
提示:此处可能有必要添加一些陈述文本以促进其他使用者理解和使用代码段。 X[Q:c4'  
f R?Xq@c  
}g\1JSJ%H  
X[{tD#  
可编程界面:代码段帮助(Snippet Help) ]~H\X":[>  
G^Q8B^Lg  
UZ` <D/  
•可选功能“Optional”:您可以使用“代码段帮助”选项卡编写指令,说明以及与代码段相关的一些其他数据。 =A< Fcl\Rz  
•此选项对于使用可编程元素跟踪进度非常有用。 @CJ`T&  
•当可编程元素被发送给其他用户处理时,它的作用发挥得尤为明显! ]&mN~$+C  
1>"[b8a/  
eVy>  
m5/d=k0l  
D#I^;Xg0h  
tB i16=  
可编程界面:编写代码 ySEhi_)9^  
~ & @UH  
fi.[a8w:W  
&+v!mw>  
可编程界面:用户自定义梯度 '!wI8f  
6pCQP c*A  
&rmXz6 F  
可编程界面:使用您的代码段(Snippet) <@puWm[p  
{hmC=j  
?Dr K2;q  
RMfKM! vE  
可编程界面的输出 1'G&PX   
f*IC ZM  
i 6@c@n  
`,O#r0m  
此表面由代码完全解析定义——完全准确“full accuracy”(达到双精度水平) RrG5`2  
e M$NVpS3  
将自定义界面保存到目录中 z9B" "ws  
| pA  
?{Rv/np=F  
4|#@41\ B  
提示:如果您使用目录来定义您的自定义界面,系统将会自动提示您将工作保存到目录中。 /#C}1emK  
=>kE`"{!  
故障排除提示 &# ?2zbZ  
}CCTz0[D"  
k+D"LA%J  
$gv3Up"U  
您注意到自定义表面3D可视化中奇特的边界效果“border effects”了吗? 9 Y-y?Y  
\pVmSac,  
.a0]1IkatV  
ruKm_j#J  
P~H?[ ;  
测试代码! 1ab_^P  
!)1gGXRY  
nN]GO}  
 4.7 PL  
t6+c"=P#  
;tZ;C(;<  
文件信息 PXRkK63  
[@&0@/s*t'  
IOjp'6Yr  
6Kbc:wlR  
R. (fo:ve>  
QQ:2987619807 ;Eer  
查看本帖完整版本: [-- 如何使用可编程界面及示例(球面) --] [-- top --]

Copyright © 2005-2026 光行天下 蜀ICP备06003254号-1 网站统计