【Opticalpy】回折格子の設定方法[Python]

  • URLをコピーしました!

Opticalpy

前回、光線解析ライブラリOpticalpyのレンズの設定方法を紹介しました。

今回はOpticalpyで回折格子の設定方法を紹介します。

また今回は回折格子ということで、波長毎に反射後や透過後の角度が変わりますので、まずは複数の波長を含んだ光源をこんな感じで設定しました。

import opticalpy as op
import numpy as np

scene = op.Scene(xlim=(-50, 250), ylim=(-100, 100))

beam = op.elems.DivergingBeam(angle=20, wavelength=np.arange(450, 701, 10), scene=scene)

scene.plot()

実行結果

光線が黒色に見えますが、この中に450 nmから700 nmまで10 nm刻みの波長が含まれています。

この光源を使って、Opticalpyに含まれる回折格子を置いてみるとどうなるか見てみましょう。

それでは始めていきましょう。

Grating

最初は「op.elems.Grating」で設定できる反射型の回折格子です。

「Grating(aperture=回折格子のサイズ, period=回折格子のピッチ, scene=シーン, origin=[Xの位置, Yの位置], rotation=回折格子の角度)」として設定します。

import opticalpy as op
import numpy as np

scene = op.Scene(xlim=(-50, 250), ylim=(-100, 100))

beam = op.elems.DivergingBeam(angle=20, wavelength=np.arange(450, 701, 25), scene=scene)
grating = op.elems.Grating(aperture=50, period=500, scene=scene, origin=(200, 0), rotation=60)

scene.plot()

実行結果

ちなみに回折格子のピッチ「period」を変えると反射光がこんな感じに変わります。

import opticalpy as op
import numpy as np

scene = op.Scene(xlim=(-50, 250), ylim=(-100, 100))

beam = op.elems.DivergingBeam(angle=20, wavelength=np.arange(450, 701, 25), scene=scene)
grating = op.elems.Grating(aperture=50, period=1500, scene=scene, origin=(200, 0), rotation=60)

scene.plot()

実行結果

TransmissionGrating

「op.elems.TransmissionGrating」は透過型の回折格子です。

「TransmissionGrating(aperture=回折格子のサイズ, period=回折格子のピッチ, scene=シーン, origin=[Xの位置, Yの位置], rotation=回折格子の角度)」として設定します。

import opticalpy as op
import numpy as np

scene = op.Scene(xlim=(-50, 250), ylim=(-100, 100))

beam = op.elems.DivergingBeam(angle=20, wavelength=np.arange(450, 701, 25), scene=scene)
grating1 = op.elems.TransmissionGrating(aperture=50, period=1000, scene=scene, origin=(100, 0), rotation=70)

scene.plot()

実行結果

RefractionGrating

「op.elems.RefractionGrating」は屈折型の回折格子(?)のようで、多分条件によって反射がメインとなったり、透過がメインとなったりするのだと思われます。

「RefractionGrating(aperture=回折格子のサイズ, period=回折格子のピッチ, scene=シーン, origin=[Xの位置, Yの位置], rotation=回折格子の角度)」として設定します。

import opticalpy as op
import numpy as np

scene = op.Scene(xlim=(-50, 250), ylim=(-100, 100))

beam = op.elems.DivergingBeam(angle=20, wavelength=np.arange(450, 701, 25), scene=scene)
grating1 = op.elems.RefractionGrating(aperture=50, period=1000, origin=(100, 0), rotation=70, scene=scene)

scene.plot()

 実行結果

次回はOpticalpyで波長フィルタ、ダイクロイックミラーの設定方法を紹介します。

ではでは今回はこんな感じで。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする