# Import some boilerplate libraries
%matplotlib inline
from IPython.display import Image
from IPython.html.widgets import interact
from numpy import pi, cos, sin
import numpy as np
import pylab as plt
import seaborn as sns
def plot_fringe(bl_length, wavelength, source_spacing):
""" Plot the fringe function for a baseline with 2 sources (see Fig 1)
bl_length: distance between antennas, in m
wavelength: wavelength, in m
source_spacing: distance between sources, in degrees
"""
theta = np.linspace(-np.pi, np.pi, 401)
l = sin(theta)
l_spc = sin(source_spacing / 57.3)
# first baseline
F_src1_bl1 = cos(2 * pi * bl_length * l / wavelength)
F_src2_bl1 = cos(2 * pi * bl_length * (l - l_spc) / wavelength)
F_bl1 = F_src1_bl1 + F_src2_bl1
# second baseline
F_src1_bl2 = cos(2 * pi * 2 * bl_length * l / wavelength)
F_src2_bl2 = cos(2 * pi * 2* bl_length * (l - l_spc) / wavelength)
F_bl2 = F_src1_bl2 + F_src2_bl2
plt.plot(l, F_bl1, c='#cc0000', label="Baseline 1-2")
plt.plot(l, F_bl2, c='#0000cc', label="Baseline 1-3")
plt.xlabel("$sin(\\theta)$")
plt.ylabel("Fringe amplitude")
plt.ylim(-2, 2)
plt.legend()
f = interact(plot_fringe, bl_length=(1, 100), wavelength=(1, 100), source_spacing=(0, 90))