在 MATLAB 或 Python 中使用 ZOS-API 進行光線追跡的批次處理
什么是 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
點擊圖片查看培訓詳情
ZEMAX | 了解 ZOS-API 的主要接口——MATLAB
ZEMAX | ZOS-API、ZPL 和 DLL 之間的區別
ZEMAX | 如何使用 ZOS-API 創建飛行時間自定義分析
掃碼邀您入群
如果您對產品感興趣,或需要技術支持,歡迎致電垂詢!
電話:027-87878386
郵箱:market@ueotek.com
銷售熱線:027-87878386
咨詢郵箱:sales@ueotek.com
??點擊閱讀原文咨詢產品或技術支持。
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















