#!/usr/bin/env python
# -*- coding: utf8 -*-
# Soubor:  vlna.py
# Datum:   12.1.2014 20:01
# Autor:   Marek Nožka, marek <@t> tlapicka <d.t> net
# Licence: GNU/GPL 
# Úloha:   vlna, wave
#######################################################

import matplotlib as mpl

#mpl.use('GTKAgg')
mpl.use('Qt4Agg')

#mpl.rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})
## for Palatino and other serif fonts use:
#mpl.rc('font',**{'family':'serif','serif':['Palatino']})
#mpl.rc('lines', linewidth=2, color='r')

mpl.rcParams['text.usetex']=True
mpl.rcParams['text.latex.unicode']=True

import numpy as np
import scipy as sci
import pylab as lab
from pylab import pi

import matplotlib.animation as animation

fig = lab.figure()
lab.title(u'Závislost okamžitého napětí vlny na vzdálenosti od počátku v čase', size=16, )
lab.grid()
lab.xlabel(r'$\mathrm{x\,[m]} \rightarrow$', x=0.9)
lab.ylabel(r'$\mathrm{u(t,x)\,[V]} \rightarrow$', y=0.9, rotation=90)

f = 2
x = lab.linspace(0,3,100)
y = lab.linspace(3,6,100)
t = 0
lamda = 1.4
Um = 2

u1 = Um*lab.sin(2*pi*(f*t-x/lamda))
xx=x[10::10]
pp = Um*lab.sin(2*pi*(f*t-xx/lamda))


m=max(u1) 
lab.ylim(1.1*-m,1.1*m)

line1, = lab.plot(x,u1, 'b-', linewidth=2)
line3, = lab.plot(xx,pp,'ro', )


def step(i):
    global t
    t +=0.007
    u1=Um*lab.exp(-x/2.)*lab.sin(2*pi*(f*t-x/lamda)) 
    line1.set_ydata( u1 )
    pp=Um*lab.exp(-xx/2.)*lab.sin(2*pi*(f*t-xx/lamda)) 
    line3.set_ydata( pp )
    if i==200:
        lab.plot(x, Um*lab.exp(-x/2.), color='green', alpha=0.5, linewidth=2, linestyle='--')
        lab.plot(x,-Um*lab.exp(-x/2.), color='green', alpha=0.5, linewidth=2, linestyle='--')
        for j in xx:
            lab.axvline(j, color='green', alpha=0.5, linewidth=2, linestyle='--')

ani = animation.FuncAnimation(fig, step, range(500), interval=70 )
#ani.save('vlna_utlum.mp4', bitrate=400, codec='h264')
lab.show()
