什么是 RayTrace.dll?
-
IRayTraceDirectPolData (sequential):
在这个介面中,我们可以直接在 XYZ 座标中完成批次的偏振光线追跡,而这也和 DDE 光线追跡指令(模式3)十分相似。此外,该介面属于 IBatchRayTrace 介面的一种。
-
IRayTraceDirectUnpolData (sequential):
在这个介面中,我们可以在 XYZ 坐标中完成批次的非偏振光线追跡,而这与 DDE 光线追跡指令(模式1)相似。此外,该介面也同样属于 IBatchRayTrace 介面的一種。
-
IRayTraceNormPolData (sequential):
在这个介面中,我們可以使用归一化光瞳坐标(normalized pupil coordinate)进行批次偏振光线追跡,这个 DDE 光线追跡指令(模式2)相似。此外,这介面也同样属于 IBatchRayTrace 介面的一种。
-
IRayTraceNormUnpolData (sequential):
在这个介面中,我们可以使用归一化光瞳坐标进行批次非偏振光线追跡,这与 DDE 光线追跡指令(模式0)相似。 -
IZRDReader (non-sequential):
我们使用这个介面在 Matlab 中設定 RayDatabaseReader 並使其运作,同時读取 C#dll 中每一个区段(segment)的值。
DLL 使用范例
基本范例
-
MATLAB_BatchRayTrace_Direct.m – (SEQ Direct).
这个范例使用了 IRayTraceDirectUnpolData 介面。此外,它还同时使用了RayTrace.dll (DirectUnpol.cs) 中的 ReadDirectUnpolData 函数。范例中,系統追跡了特定透镜表面的光跡图(footprint diagram),同时绘出系统的净口径 (Clear Semi-Diameter)和机械半直径 (Mechanical Semi-Diameter)。 -
MATLAB_BatchRayTrace_Normalized.m – (SEQ Norm).
这个范例使用了IRayTraceNormUnpolData介面,而该介面还包含了RayTrace.dll (NormUnpol.cs) 中的 ReadNormUnpolData 函数。范例中,系统以超过10,000条光线追跡一個方形图案投射至像面的结果。设定上只使用了单一视场,且整个过程耗时不到一秒。 -
MATLAB_ZRDLoaderFull.m or PythonNET_ZRDLoaderFull.py – (NSC ZRD)
这个范例使用了 IZRDReader 介面,且同時使用了RayTrace.dll (ZRDLoaderFull.cs)中的ReadZRDData 函数。范例中,系统解析了 ZRD 档案並決定了特定探测器上接收到的总能量。
进阶范例
-
MATLAB_BatchRayTrace_Surface_AOI.m – (SEQ Direct).
这个范例使用了 IRayTraceDirectUnpolData 介面,且同時使用了RayTrace.dll (DirectUnpol.cs)的ReadDirectUnpolData 函数。范例中,系统追跡了光线网格投射至一个特定表面的结果。过程中使用了 LMN 方向的 cosine 向量和 Nxyz 法向量计算光线在表面上每个 XY 点的入射角。 -
MATLAB_BatchRayTrace_Ex22_Performance_Comparison.m – (SEQ Norm).
这个范例使用了 IRayTraceNormUnpolData 介面,同时还使用了RayTrace.dll (NormUnpol.cs)的ReadNormUnpolData 函数。范例中,系统使用低量化误差光线图型(dithered ray pattern) 绘制了整个视场的点列图(spot diagram)。模拟过程中,系统可以在一秒內追跡10,000条光线。相同情況下,若使用原生 MATLAB 的 for 回圈,绘制961条光线将耗时超过4秒。根据电脑的性能差异,使用 DLL 最高可将运算过程加速为原先的40倍。 -
MATLAB_ZRD_Pixelated_Detector_xybin.m – (NSC ZRD).
這個範例使用了IZRDReader介面,同時也使用了RayTrace.dll (ZRDLoaderFull.cs)的 ReadZRDData 函数。范例中的系統有矩形光源、矩形探测器,以及一个由 “LETTERF.BMP”产生的幻燈片(Slide) 物件,最後在探测器上显现出图型 “F”。接著,我们使用 ZRD 档案中的“xybin”将每个像素的光通量加总,重新在 ZRD 档案中产生一个新的探测器结果。这样的做法可使我们免于使用探测器查看器(Detector Viewer)的分析功能,直接在 MATLAB 中看到结果。
疑难排解
-
移除现有的 references (滑鼠右鍵>移除(Remove))
-
右键选取 Reference 并选择 Add References
-
点选 Browse 并找到 OpticStudio 的安装资料夹
-
以快捷鍵Shift+Click 选择 ZOSAPI 和 ZOSAPI_Interfaces,接着点选 Add
-
点选 OK 加入新的解
-
选取所有的 references,打开 Properties 接着将 Copy Local 由True 改为 False