椭偏曲线的绘制-Mayavi

2020-08-12  本文已影响0人  鹿呀鹿呀快开门

1. 电磁波的传播

电磁波是纵波,一维电磁波可以表示为y = A*np.sin(k*x-w*t)的形式,在传播方向x和传播时间t组成的平面内波动情况,用Mayavi可以很快作出图形,代码如下所示, 采用mlab.surf可以作出曲面图。

from mayavi import mlab
import numpy as np
x, t = np.mgrid[0:2*np.pi:50j, 0:2*np.pi:50j]
A, k, w = 1, 1, 1
y = A * np.sin(k*x - w*t)

mlab.surf(x, t, y)
mlab.axes()
mlab.show()
光在x-t平面内的传播

2. 光的偏振

偏振光传播时,当p光和s光之间存在相位差,表现为椭圆偏振光。圆偏振光是椭圆偏振光的一个特例。

import numpy as np
from mayavi import mlab
t=np.mgrid[-4*np.pi:4*np.pi:400j]   
t1=np.mgrid[-4*np.pi:4.2*np.pi:400j]  # t1用于时间坐标的绘制
mlab.plot3d(np.zeros_like(t1),np.zeros_like(t1),t1,color=(0.1,0.1,0.1))
mlab.plot3d(np.cos(t),np.zeros_like(t),t,color=(0.1,0.1,0.9))   # x分量
mlab.plot3d(np.zeros_like(t),np.cos(t+np.pi/2),t,color=(0.1,0.1,0.9))  # y分量
mlab.plot3d(np.cos(t),np.cos(t+np.pi/2),t,color=(0.9, 0.1, 0.1))
# mlab.axes()
mlab.show()
偏振光曲线
import numpy as np
from mayavi import mlab

t = np.linspace(0, 4*np.pi, 100)
p = np.sin(t)
s = np.sin(t)
zero = np.zeros_like(t)

mlab.plot3d(zero, p, t)
mlab.plot3d(s, zero, t)
mlab.plot3d(zero, zero, t, tube_radius='0.005')

mlab.quiver3d(zero, zero, t, zero, p, zero)
mlab.quiver3d(zero, zero, t, s, zero, zero)
mlab.outline()

mlab.show()
线偏振
import numpy as np
from mayavi import mlab

t = np.linspace(0, 4*np.pi, 100)
p = np.sin(t)
s = np.cos(t)
zero = np.zeros_like(t)

mlab.plot3d(zero, p, t)
mlab.plot3d(s, zero, t)
mlab.plot3d(zero, zero, t, tube_radius='0.005')

mlab.quiver3d(zero, zero, t, zero, p, zero)
mlab.quiver3d(zero, zero, t, s, zero, zero)
mlab.outline()

mlab.show()
圆偏振光
import numpy as np
from mayavi import mlab
t = np.linspace(0, 4*np.pi, 100)
p = np.sin(t)
s = np.cos(t)
zero = np.zeros_like(t)

mlab.plot3d(s, p, t)
mlab.plot3d(zero, zero, t, tube_radius='0.005')
mlab.quiver3d(zero, zero, t, s, p, zero)
mlab.outline()
mlab.show()
圆偏振光
上一篇 下一篇

猜你喜欢

热点阅读