我們已經討論過鏡頭或眼睛藉著近攝鏡或放大鏡觀物的現象。通常是以『有』、『無』輔助設備來作對照立論。如此方能避開特定的人與相機,彰顯那個設備之功用與目的。由於這個模式
物 →人眼或相機 →像
物 →裝置 → 距離 L →人眼或相機 → 像
常見且重要,所以在此專章說說。或許在經歷複雜數學計算之後,讀者得以體會 SymPy 符號運算的好處。
pi@raspberrypi:~ X_oI_ooImgX_o\frac{X_o f_o}{X_o - f_o}I_o > 0 X_o > f_ooImgX_c\frac{f_c \cdot (L - X_o)}{L - X_o - f_c}X_c > 0L < X_oL > X_o + f_cX_c = 0L = X_of_c\to 0^+\to 0^-L \to 0X_c_{(L \to 0)} = \frac{- f_c X_o}{-(X_o +f_c)} = \frac{X_o}{\frac{X_o}{f_c} + 1}\frac{X_o}{f_c} + 1 L > X_o + f_cf_{eq.} = \frac{f_c f_o}{(f_c + f_o) -L}$ 會是『負』的??難道發散亦能成『實像』的耶!! 若說事因不同參考系而起,何不親自動手驗證看看呢!!??# 前主平面 In [21]: p1 = (1-clens.D.simplify())/clens.C.simplify() In [22]: p1 Out[22]: ⎛ -L + fo⎞ fc⋅fo⋅⎜1 - ───────⎟ ⎝ fo ⎠ ─────────────────── L - fc - fo # 後主平面 In [23]: p2 = (1-clens.A.simplify())/clens.C.simplify() In [24]: p2 Out[24]: ⎛ -L + fc⎞ fc⋅fo⋅⎜1 - ───────⎟ ⎝ fc ⎠ ─────────────────── L - fc - fo # 主平面參考系之物距 Xc' In [25]: (Sol[0].subs(Ic, oImg).simplify() - p1).simplify() Out[25]: fc⋅(L⋅(-L + Xo + fc) - (L - Xo)⋅(-L + fc + fo)) ─────────────────────────────────────────────── (-L + Xo + fc)⋅(-L + fc + fo) # 主平面參考系之像距 oImg' In [26]: (oImg - p2).simplify() Out[26]: fo⋅(L⋅(Xo - fo) + Xo⋅(-L + fc + fo)) ──────────────────────────────────── (Xo - fo)⋅(-L + fc + fo) # 手動簡化? In [27]: E = fc*(L*(-L + Xo + fc) - (L - Xo)*(-L + fc + fo)) In [28]: E.expand().simplify() Out[28]: fc⋅(-L⋅fo + Xo⋅fc + Xo⋅fo) In [29]: F = fo*(L*(Xo - fo) + Xo*(-L + fc + fo)) In [30]: F.expand().simplify() Out[30]: fo⋅(-L⋅fo + Xo⋅fc + Xo⋅fo) # 主平面成像公式驗證。 Xc' = E/E1 , oImg' = F/F1 In [31]: E = E.expand().simplify() In [32]: F = F.expand().simplify() In [33]: E1 = (-L + Xo + fc)*(-L + fc + fo) In [34]: F1 = (Xo - fo)*(-L + fc + fo) # 果然成立乎! In [35]: (E1/E + F1/F).simplify() Out[35]: -L + fc + fo ──────────── fc⋅fo In [36]: