什么是 RayTrace.dll?
IRayTraceNormUnpolData (sequential):
在这个介面中,我们可以使用归一化光瞳坐标进行批次非偏振光线追跡,这与 DDE 光线追跡指令(模式0)相似。
IZRDReader (non-sequential):
我们使用这个介面在 Matlab 中設定 RayDatabaseReader 並使其运作,同時读取 C#dll 中每一个区段(segment)的值。
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