optics op• 資料種類:vector × normals → normals
• 呼叫: import fullseye as fs; fs.ledger.refract(d, n, eta1=1.0, eta2=1.5)(要直接呼叫實作,import match3d; match3d.refract(d, n, eta1=1.0, eta2=1.5);從台帳取用則 ops3d.get("refract"))
Snell 折射(向量形式)。d=入射(朝向面),n=入射側外法線,折射率 eta1→eta2。
嚴格計算穿過透明體的光線的彎折。全反射(TIR)時為 None。用於計算玻璃/透鏡/水中的像畸變。約定為單一向量。(N,3) 批次也能通過,但只要有 1 條 TIR,整個批次就是 None (不做 per-ray 遮罩)。★批次時不要逐條 1 根地迴圈,
請使用 glassmirror.refract_rays —— 它對每條光線判定 TIR, 回傳 (方向, TIR 遮罩)(TIR 的光線以鏡面反射填補)。本函式作為「只要缺 1 條就不給出答案」的 fail-closed 一側的入口而保留。
d, n 以最後一個軸為向量進行單位化。n 請依入射側(使 d·n < 0 的朝向) 傳入。反向傳入會使 cos θi 為負,不拋例外地回傳錯誤的方向。回傳值為單位向量(eta·d + (eta·cosθi − cosθt)·n,eta = eta1/eta2)。eta1 == eta2 時 d 原樣回傳。以角度處理時用 snell_angle,反射率用 fresnel_reflectance(cos_i, eta1, eta2)。
• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。
• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。
• snell_refraction — py -3.11 examples_3d/snell_refraction.py
normals 作為輸入)icp_point2plane · compute_fpfh · shot_descriptor · fuse_to_voxel · reflect · normal_consistency · ransac_cylinder · orient_normals
optics)reflect · fresnel_reflectance · normal_from_reflection · snell_angle
*Provenance: match3d.py — 3D 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.