#!/usr/bin/env python3
# -*- coding: utf-8 -*-


import matplotlib.pyplot as plt
import numpy as np
from scipy.integrate import odeint
import widgets
import scipy.constants as constants
from matplotlib import rc
#rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})
## for Palatino and other serif fonts use:
#rc('font',**{'family':'serif','serif':['Palatino']})
#rc('text', usetex=True)
title = "Somme de deux signaux sinusoïdaux"

#description = """RÃ©solution de l'Ã©quation diffÃ©rentielle rÃ©gissant $x$ en fonction des paramÃ¨tres du systÃ¨me"""

#===========================================================
# --- Initial parameters  ---------------------
#===========================================================

parameters = {
    'DeltaPhi' : widgets.FloatSlider(value=np.pi, description = 'Différence de phase : $\Delta \Phi$', min=0, max=2*np.pi),
    'rapport' : widgets.FloatSlider(value=1, description = 'Rapport des amplitudes', min=0.5, max=2),
     }

F=60


#===========================================================
# --- Functions to plot-------------------------------------
#===========================================================

def SSinus(F,rapport,DeltaPhi,t):
	u1 =np.sin(2*np.pi*F*t)
	u2 = rapport*np.sin(2*np.pi*F*t + DeltaPhi)
	u = u1 + u2
	return u
	
def Sinun(F,t):
	u1 =np.sin(2*np.pi*F*t)
	return u1
	
def Sindeux(F,rapport,DeltaPhi,t):
	u2 = rapport*np.sin(2*np.pi*F*t + DeltaPhi)
	return u2	

#===========================================================
# --- Plot of the updated curves ---------------------------
#===========================================================

def plot_data(rapport,DeltaPhi):
    lines['Signal 1'].set_data( t,Sinun(F,t) )
    lines['Signal 2'].set_data( t,Sindeux(F,rapport,DeltaPhi,t) )
    lines['Somme des deux'].set_data( t,SSinus(F,rapport,DeltaPhi,t) )
    fig.canvas.draw_idle()
	       
#===========================================================
# --- Initialization of the plot ---------------------------
#===========================================================

fig = plt.figure(figsize=(12,6))
fig.suptitle(title)
#plot of the text
#fig.text(0.01, .9, widgets.justify(description), multialignment='left', verticalalignment='top')

ax = fig.add_axes([0.15, 0.3, 0.75, 0.6])
ax.axhline(0, color='k')

lines = {}
lines['Signal 1'], = ax.plot([], [], lw=2, color='red')
lines['Signal 2'], = ax.plot([], [], lw=2, color='blue')
lines['Somme des deux'], = ax.plot([], [], lw=2, color='purple')


t = np.linspace(0,1000,20000)
ax.set_xlim(0,1000)
ax.set_ylim(-3, 3)

ax.set_xlabel("Temps ($s$)")
ax.set_ylabel("Amplitude du signal")

param_widgets = widgets.make_param_widgets(parameters, plot_data, slider_box=[0.35, 0.17, 0.4, 0.05])
choose_widget = widgets.make_choose_plot(lines, box=[0.015, 0.1, 0.15, 0.15])
reset_button = widgets.make_reset_button(param_widgets)

if __name__=='__main__':
   plt.show()
