RF Polarization

 

 

 

 

 

< Code 1 >

 

import os

import numpy as np

import matplotlib.pyplot as plt

import mpl_toolkits.mplot3d.axes3d as axes3d

import matplotlib.gridspec as gridspec

 

 

 

def drawAxis(ax,max = 4*np.pi) :

    ax.plot([0,max],[0,0],[0,0],'k')

    ax.plot([0,0],[-2,2],[0,0],'g')

    ax.plot([0,0],[0,0],[-2,2],'b')

    return

 

 

 

def drawHwave(ax,max = 4*np.pi, offset = 0, Hshift = 0, Hamp = 1.0):

    #t = np.linspace(0 + offset, max + offset, 100)

    #x = t - offset

    t = np.linspace(-offset, max, 100)

    x = t + offset

    y = Hamp * np.cos(t - Hshift)

    z = 0 * t

    ax.plot(x, y, z,'g')

    return

 

 

 

def drawVwave(ax,max = 4*np.pi, offset = 0, Vshift = 0, Vamp = 1.0):

    #t = np.linspace(0 + offset, max + offset, 100)

    t = np.linspace(-offset, max, 100)

    x = t + offset

    y = 0 * t

    z = Vamp * np.cos(t - Vshift)

    ax.plot(x, y, z,'b')

    return

 

 

 

def drawSumwave(ax,max = 4*np.pi, offset = 0, Hshift = 0, Vshift = 0, Hamp = 1.0, Vamp = 1.0):

    t = np.linspace(-offset, max, 100)

    x = t + offset

    yH = 0 * t

    yV = Hamp * np.cos(t - Hshift)

    zH = 0 * t

    zV = Vamp * np.cos(t - Vshift)

    #y = yH + yV

    #z = zH + zV

    y = yV

    z = zV

    ax.plot(x, y, z,'r')

    return

 

 

 

def drawVectorSum(ax, offset = 0, Hshift = 0, Vshift = 0 , Hamp = 1.0, Vamp = 1.0):

    t = -offset

    yH = 0 * t

    yV = Hamp * np.cos(t - Hshift)

    zH = 0 * t

    zV = Vamp * np.cos(t - Vshift)

    #y = yH + yV

    #z = zH + zV

    y = yV

    z = zV

    

    x1 = 0

    y1 = y

    z1 = 0

    x2 = 0

    y2 = y

    z2 = z

 

    ax.plot([x1,x2], [y1,y2], [z1,z2],'g--')

 

 

    x1 = 0

    y1 = 0

    z1 = z

    x2 = 0

    y2 = y

    z2 = z

 

    ax.plot([x1,x2], [y1,y2], [z1,z2],'b--')

 

    x1 = 0

    y1 = 0

    z1 = 0

    x2 = 0

    y2 = y

    z2 = z

 

    ax.plot([x1,x2], [y1,y2], [z1,z2],'r')

    ax.plot([x2,x2],[y2,y2],[z2,z2],'ro')

 

    return

 

 

def drawPropagatingWave(ax,off = 0,Hoffset = 0, Voffset = 0, Ha = 1.0, Va = 1.0, plotMax = 4*np.pi):

 

    drawAxis(ax, max = 4*np.pi)

    drawHwave(ax, max = plotMax , offset = off,Hshift = Hoffset, Hamp = Ha)

    drawVwave(ax, max = plotMax, offset = off,Vshift = Voffset, Vamp = Va)

    drawSumwave(ax, max = plotMax, offset = off, Hshift  = Hoffset, Vshift = Voffset,

                Hamp = Ha, Vamp = Va)

    drawVectorSum(ax, offset = off,Hshift  = Hoffset, Vshift = Voffset, Hamp = Ha, Vamp = Va)

 

 

    ax.grid(False)

    ax.axis('off')

    ax.set_xticks([])

    ax.set_yticks([])

    ax.set_zticks([])

 

    return

 

 

 

def drawPhaseDiagram(ax,max = 2*np.pi, offset = 0, Hoffset = 0, Voffset = 0, Ha = 1.0, Va = 1.0):

 

    xmax = 1.2

    ymax = 1.2

 

    ax.plot([-xmax,xmax],[0,0],'g')

    ax.plot([0,0],[-ymax,ymax],'b')  

 

    t = np.linspace(-offset, max, 100)

    x = Ha * np.cos(t-Hoffset)

    y = Va * np.cos(t-Voffset)

 

    ax.plot(x,y,'k')  

 

    t = -offset

    x = Ha * np.cos(t-Hoffset)

    y = Va * np.cos(t-Voffset)

 

    ax.plot(x,y,'ro')

    ax.plot([x,x],[0,y],'g--')

    ax.plot([0,x],[y,y],'b--')

    ax.plot([0,x],[0,y],'r')

 

    ax.set_xlim(-xmax,xmax)

    ax.set_ylim(-ymax,ymax)

    ax.set_aspect('equal')

 

    ax.grid(False)

    ax.set_xticks([])

    ax.set_yticks([])

    return

 

 

 

fig = plt.figure(figsize=(8,3))

 

gs = gridspec.GridSpec(1, 2, width_ratios=[3, 1], left=-0.02, wspace=0.1)

 

ax1 = plt.subplot(gs[0],projection='3d')

ax2 = plt.subplot(gs[1])

 

for i in range(81) :

    startAngle = i*np.pi/20

    hOff = 0*np.pi/20.0

    Hamp = 0.5

    Vamp = 1.0

 

    pMax = 0*4*np.pi/40

 

    if pMax > 40*np.pi/10:

       pMax = startAngle - 40*np.pi/10

 

    drawPropagatingWave(ax1,off = startAngle, Hoffset = hOff, Ha = Hamp, Va = Vamp, plotMax = pMax)  

    drawPhaseDiagram(ax2,max = 4*np.pi, offset = startAngle, Hoffset = hOff, Ha = Hamp, Va = Vamp)

 

    fig.canvas.draw()

    fname = 'RF_Propagration_H_1_0_V_1_0_Hamp_0_50'+'{:02d}'.format(i)+'.png'

    #fname = 'RF_Propagration_H_1_0_V_1_0_hOff_'+'{:02d}'.format(i)+'.png'

    plt.savefig(os.path.abspath(os.getcwd()) +'\\temp\\'+fname)

 

    ax1.clear()

    ax2.clear()