SSブログ

近軸光線追跡 - その8 [近軸光線追跡]

前回近軸マトリクスの計算をMathematicaでやるための設計をした。と、いうほどたいした内部構造はもっていない。今日はその構造を使って計算結果を出力する関数の形式を考えることにする。

6.3  近軸諸量の計算

近軸量の計算は
totalThickness レンズ全厚
focalPoint 焦点位置
principalPoint 主点位置
nodalPoint 節点位置
conjugatePoint 共役位置
lateralMagnification 横倍率
angularMaginification 角倍率
longitudinalMagnification 縦倍率
などを作った。これはtotalThickness以外はどれも
focalPoint[sys, imageSpace]
focalPoint[sys, objectSpace]
2種類ある。それぞれ像側と物体側の値で、像側は最終面から、物体側は第1面からの距離になる。第2引数を省略すると像側と解釈される。

また、共役同士のあいだで決まる共役位置、横倍率、角倍率、縦倍率はbuildParaxialSystemを呼んだときに設定した物体距離と像面距離が使われる。つまり、
lateralMagnification[sys, imageSpace]
とすると、物体位置l0と共役な像位置との横倍率が計算される。そのときlkは無視される。逆に
lateralMagnification[sys, objectSpace]
とすれば、像位置lkと共役な物体位置との横倍率になる。ただしその値は物体側から像側への倍率である。

buildParaxialSystemを呼んだときにl0lkに数値ではなく、シンボルを与えてあれば式のまま返されるので後から数値評価できる。

6.4  無限遠の扱い

無限遠専用のシンボルとして
infinityDistance
を用意する。これは無評価のまま残される。そのまま近軸量を計算すると結果に残る。数値評価したい場合
resolveInfinity[conjugatePoint[gauss]]
とすれば、この関数の内部で
Limit[conjugatePoint[gauss], infinityDistance->Infinity]
として評価される。

あまり美しくないけど、大きな値を指定しておくよりはスマートだと思う。

6.5  レンズ系の表示

マトリクスの計算だけではつまらないので、Mathematicaのグラフィクス機能を使ってレンズ系の表示を行うようにした。
drawParaxialSystem[sys]
で全体が表示される。表示形式はオプションに
sectionDrawing->Full
として指定する。オプションの値として
section2D
sectionHalf
sectionPie
Full
がある。section2Dを指定すると2次元断面が表示される。sectionHalfでは半分にカットされた形で、sectionPieでは手前上側の1/4がカットされた形で表示される。

drawParaxialSystemは描画にParametricPlotあるいはParametricPlot3Dを使っている。drawParaxialSystemのオプションにはsection2DではParametricPlotの、それ以外ではParametricPlot3Dのオプションを指定できる。

その他のオプションとして
drawOpticalAxis -> True
opticalAxisStyle -> Directive[Red]
がある。光軸を描くかどうか、描くならどんなスタイルで描くかを指定する。デフォルトは上の通り。

7  使用例

ということでなにか計算してみよう。

7.1  単レンズ

In[2]:= singlet = buildParaxialSystem[{1, 0}, {{r1, t, n}, {r2, 0, 1}}, {1, 0}, 1]
Out[2]= "- paraxial System -"
In[3]:= focalLength[singlet] // Simplify
Out[3]= -((n r1 r2)/((-1 + n) (n (r1 - r2 - t) + t)))
これは整理すればここにある式に一致することがわかる。

こういうの式のまま計算できるのはMathematicaを使うメリット。

また、
In[8]:= Simplify[principalPoint[singlet, imageSpace] === nodalPoint[singlet, imageSpace]]
Out[8]= True
ということで、前後の屈折率が一致していれば節点と主点は一致することが確認できる。

次回はもうちょっと面白そうな結果を示そう。
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

献立10/05献立10/06 ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。