美文网首页
椭偏曲线的绘制-Mayavi

椭偏曲线的绘制-Mayavi

作者: 鹿呀鹿呀快开门 | 来源:发表于2020-08-12 11:14 被阅读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光之间存在相位差,表现为椭圆偏振光。圆偏振光是椭圆偏振光的一个特例。

    • 光用Mayavi画椭圆偏振光曲线,可以分别画出ps分量和合成的圆偏振光。代码如下,采用mlab.plot3d可以画出空间曲线。
    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()
    
    偏振光曲线
    • 用mlab.quiver3d函数可以作出空间的矢量。如下代码所示,mlab.quiver3d(x, y, z, u, v, w)中,x, y, z 代表矢量起始点的空间坐标,u,v,w为方向矢量。当p光和s光之间没有相位差时为线偏振状态。
    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()
    
    线偏振
    • 当p光和s光之间的相位差为pi/2,且p光与s光的振幅相等时,为圆偏振光。p光和s光的分量作图如下
    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()
    
    圆偏振光

    相关文章

      网友评论

          本文标题:椭偏曲线的绘制-Mayavi

          本文链接:https://www.haomeiwen.com/subject/qrepdktx.html