摘要
為您的光學(xué)仿真提供最大的多功能性是我們的宗旨之一。在本文檔中,我們將向您展示如何編寫自定義表面:即如何定義高度函數(shù)h(x,y)。該函數(shù)是在參數(shù)化平面上用x,y坐標(biāo)來表示3D表面。我們可以使用這些表面來配置系統(tǒng)中的光學(xué)組件。在VirtualLab的默認(rèn)模板中,我們提供最基本的錐形表面; 但在本教程中,我們使用球面作為簡單的編程示例。
可編程界面所在位置:目錄
提示:您可以在界面目錄中保存自定義界面“customized interface”(作為用戶自定義“User Defined”)供以后使用。
可編程界面所在位置:組件
編寫代碼
•右側(cè)面板顯示了可用的獨立參數(shù)列表。
•x和y表示獨立變量,即平面上的2D坐標(biāo)。
•由孔直徑X“ApertureDiameterX”和孔直徑Y(jié)“ApertureDiameterY”(兩者都在界面的常規(guī)配置對話框中確定)來定義x和y的間隔。
•主函數(shù)中的代碼必須每x,y點返回一個雙精度“double”類型的值。該值表示該點的高度。所有這些高度值的集合定義了3D表面。
•使用Snippet Body將支持函數(shù)中的部分代碼分組。
提示:全局參數(shù)(Global Parameters),代碼段幫助(Snippet Help),高級設(shè)置選項卡(Advanced Settings tabs)和界面的其他方面與VirtualLab中的其他可編程元素具有等效功能。
表面梯度的定義
•精確計算界面的梯度是光學(xué)仿真的基礎(chǔ)。
•VirtualLab中的可編程界面允許兩種不同的梯度定義模式:數(shù)值模式,具有可調(diào)精度(由軟件自動執(zhí)行)或解析模式(由用戶另外編程)。
用戶自定義的表面梯度
•右側(cè)面板顯示了相同的可用獨立參數(shù)列表。
•該情況下,主函數(shù)中的代碼必須返回一個向量D“VectorD”——一個帶有兩個雙精度“double”(實值)坐標(biāo)的向量。使用Snippet Body將支持功能中的部分代碼分組。
•盡可能使用梯度的解析定義,以獲得更準(zhǔn)確的替代方案。軟件會檢查代碼的一致性,但用戶必須確保為梯度輸入的函數(shù)與相應(yīng)的界面一致!
可編程界面的輸出
•輸出是3D表面,其可用于定義系統(tǒng)中實際光學(xué)組件的界面。
•在有需要時,可在實際組件內(nèi)直接編程自定義界面。
•或者,將其保存在目錄中供后續(xù)使用。
對球形表面進(jìn)行編程
球形表面
可編程界面所在位置:目錄
可編程界面所在位置:組件
設(shè)置表面的定義區(qū)域
•在進(jìn)入編程界面之前的配置對話框中,用戶可以定義表面定義區(qū)域(參數(shù)化)的形狀和大小。
•在本例中,我們使用圓孔。
•請記住,球形表面的定義區(qū)域有一個自然限制,由其直徑給定,在其外部沒有定義表面!
進(jìn)入可編程界面
可編程界面:全局參數(shù)
•打開編輯對話框(源代碼編輯器)后,轉(zhuǎn)到全局參數(shù)選項卡。
•在那里,添加和編輯一個參數(shù):
- 雙精度“double”半徑= 10毫米(-1米,1米):球面曲率半徑。
•使用帶有小“注釋”圖標(biāo)的按鈕可以為您的自定義全局參數(shù)添加一些說明。
提示:此處可能有必要添加一些陳述文本以促進(jìn)其他使用者理解和使用代碼段。
可編程界面:代碼段幫助(Snippet Help)
•可選功能“Optional”:您可以使用“代碼段幫助”選項卡編寫指令,說明以及與代碼段相關(guān)的一些其他數(shù)據(jù)。
•此選項對于使用可編程元素跟蹤進(jìn)度非常有用。
•當(dāng)可編程元素被發(fā)送給其他用戶處理時,它的作用發(fā)揮得尤為明顯!
可編程界面:編寫代碼
可編程界面:用戶自定義梯度
可編程界面:使用您的代碼段(Snippet)
可編程界面的輸出
此表面由代碼完全解析定義——完全準(zhǔn)確“full accuracy”(達(dá)到雙精度水平)
將自定義界面保存到目錄中
提示:如果您使用目錄來定義您的自定義界面,系統(tǒng)將會自動提示您將工作保存到目錄中。
故障排除提示
您注意到自定義表面3D可視化中奇特的邊界效果“border effects”了嗎?
測試代碼!
文件信息
|