function bolgeSumAnimering2

% Et lite program for å vise hvordan en innfallende og en reflektert bølge 
% sammen setter opp en delvid eller fullstendig stående bølge (forutsatt at
% man har faseendring 180 grader ved en grenseflate). Det trengs litt
% endring i linjetykkelser og farger for å følge prosessen trinn for trinn.
% Program skrevet for å bruke på forelesning i FYS2130 i april 2008
% Arnt Inge Vistnes

clear all;
a = 1.0;        % Aplitude utgående bølge
b = -0.7;        % Amplitude reflektert bølge (fortegn gir evt faseskift)
topi = 2.0*pi;
k = topi;
w = 2.0*topi;
N = 256;
x = linspace(0,4,N);
y = linspace(0,4,N);
y1 = linspace(0,4,N);
y1prev = linspace(0,0.1,N);
y2 = linspace(0,4,N);
y2prev = linspace(0,0.1,N);
linjex = [4.0, 4.0];
linjey = [-2.0, 2.0];
aksex = [0.0, 4.2];
aksey = [0.0, 0.0];

% Her følger så animeringen av hvordan bølgen utvikler seg med tiden
p = plot(x,y,'-b','EraseMode','xor','LineWidth',2); 
axis([0 4.2 -2.1 2.1])
hold on
for i=1:100       % Løkke for å tegne bølge ved økende tidspunkt
    t = i*0.02;
    for j = 1:N   % Løkke for å tegne bølge vs posisjon for ny tid
        y1(j) = a*sin(k*x(j)-w*t);              % Innkommende bølge
        y2(N+1-j) = b*sin(k*x(N) + k*x(j)-w*t); % Reflektert bølge
        y(j) = y1(j)+y2(j);                     % Total bølge
    end;
    set(p,'XData',x,'YData',y) 
    drawnow;
    plot(x,y1prev,'-w','LineWidth',1)  % Sletter forrige innkommende bølge
    plot(x,y1,'-r','LineWidth',1)  % Plotter ny innkommende bølge
    y1prev = y1;
    plot(x,y2prev,'-w','LineWidth',1)  % Sletter forrige reflekterte bølge
    plot(x,y2,'-g','LineWidth',1)  % Plotter ny reflektert bølge
    y2prev = y2;
    plot(linjex,linjey,'-k');   % Plotter grenseskikt hvor refleksjon foregår
    plot(aksex,aksey,'-k');     % Plotter x-aksen
    xlabel('Posisjon');
    ylabel('Amplitude');
    pause(0.15);  % Forsinker fremvisningen av bølgen (juster denne for din pc)
end