摘要
為您的光學仿真提供最大的多功能性是我們的宗旨之一。在本文檔中,我們將向您展示如何編寫自定義表面:即如何定義高度函數h(x,y)。該函數是在參數化平面上用x,y坐標來表示3D表面。我們可以使用這些表面來配置系統中的光學組件。在VirtualLab的默認模板中,我們提供最基本的錐形表面; 但在本教程中,我們使用球面作為簡單的編程示例。

可編程界面所在位置:目錄
提示:您可以在界面目錄中保存自定義界面“customized interface”(作為用戶自定義“User Defined”)供以后使用。
可編程界面所在位置:組件
編寫代碼
•右側面板顯示了可用的獨立參數列表。
•x和y表示獨立變量,即平面上的2D坐標。
•由孔直徑X“ApertureDiameterX”和孔直徑Y“ApertureDiameterY”(兩者都在界面的常規配置對話框中確定)來定義x和y的間隔。
•主函數中的代碼必須每x,y點返回一個雙精度“double”類型的值。該值表示該點的高度。所有這些高度值的集合定義了3D表面。
•使用Snippet Body將支持函數中的部分代碼分組。
提示:全局參數(Global Parameters),代碼段幫助(Snippet Help),高級設置選項卡(Advanced Settings tabs)和界面的其他方面與VirtualLab中的其他可編程元素具有等效功能。
表面梯度的定義
•精確計算界面的梯度是光學仿真的基礎。
•VirtualLab中的可編程界面允許兩種不同的梯度定義模式:數值模式,具有可調精度(由軟件自動執行)或解析模式(由用戶另外編程)。
用戶自定義的表面梯度
•右側面板顯示了相同的可用獨立參數列表。
•該情況下,主函數中的代碼必須返回一個向量D“VectorD”——一個帶有兩個雙精度“double”(實值)坐標的向量。使用Snippet Body將支持功能中的部分代碼分組。
•盡可能使用梯度的解析定義,以獲得更準確的替代方案。軟件會檢查代碼的一致性,但用戶必須確保為梯度輸入的函數與相應的界面一致!
可編程界面的輸出
•輸出是3D表面,其可用于定義系統中實際光學組件的界面。
•在有需要時,可在實際組件內直接編程自定義界面。
•或者,將其保存在目錄中供后續使用。
對球形表面進行編程
球形表面
可編程界面所在位置:目錄
可編程界面所在位置:組件
設置表面的定義區域
•在進入編程界面之前的配置對話框中,用戶可以定義表面定義區域(參數化)的形狀和大小。
•在本例中,我們使用圓孔。
•請記住,球形表面的定義區域有一個自然限制,由其直徑給定,在其外部沒有定義表面!
進入可編程界面

可編程界面:全局參數
•打開編輯對話框(源代碼編輯器)后,轉到全局參數選項卡。
•在那里,添加和編輯一個參數:
- 雙精度“double”半徑= 10毫米(-1米,1米):球面曲率半徑。
•使用帶有小“注釋”圖標的按鈕可以為您的自定義全局參數添加一些說明。
提示:此處可能有必要添加一些陳述文本以促進其他使用者理解和使用代碼段。
可編程界面:代碼段幫助(Snippet Help)
•可選功能“Optional”:您可以使用“代碼段幫助”選項卡編寫指令,說明以及與代碼段相關的一些其他數據。
•此選項對于使用可編程元素跟蹤進度非常有用。
•當可編程元素被發送給其他用戶處理時,它的作用發揮得尤為明顯!

可編程界面:編寫代碼

可編程界面:用戶自定義梯度
可編程界面:使用您的代碼段(Snippet)

可編程界面的輸出

此表面由代碼完全解析定義——完全準確“full accuracy”(達到雙精度水平)
將自定義界面保存到目錄中

提示:如果您使用目錄來定義您的自定義界面,系統將會自動提示您將工作保存到目錄中。
故障排除提示

您注意到自定義表面3D可視化中奇特的邊界效果“border effects”了嗎?

測試代碼!
文件信息

|