%reflexes.m är ett program som med vissa indata ska presentera de tidiga (primära (blå )och sekundära (röda)) reflexerna i frontalplanet till nivå, tidsfördröjning och riktning.

f=[];
f1=10;
for k=1:204;
f=[f f1];
f1=f1*1.05;
end			%frekvensvektor
w=2.*pi.*f;		%motsvarande för vinkelhastigheten

a=f./f;			%frekvensgången för orginalljudet
apr=a;			%frekvensgången för direktljudet samt de Primära Reflexerna
asr=a;			%frekvensgången för direktljudet, de primära reflexerna samt de sekundära

%konstanter

c=340;			%ljudhastigheten [m/s]
SoffsetX=0.0001;	%offset för text i x-led för delay-plot
SoffsetX2=2;		%offset för text i x-led för vinkelplot
refx=90;		%referensen i x-led för cone of diffusion
refy=0;			%referensen i y-led för cone of diffusion
reflexdamp=1;		%generell dämpning för varje reflex i begränsningsytorna [dB]

fspeak=1000;		%frekvensen för vilken speakerplot ritas ut
numofrings=3;		%antalet ringar runt högtalarna som ritas ut

%först definiera lyssnarposition och rumsdimensioner

roomwidth=3.6;		%bredden på rummet (3.6m är normalbredd) [m]
roomheigth=2.4;		%höjden på rummet (2.4m är standard) [m]
speakerwidth=2.5;	%bredden mellan högtalarna (3.2m lyssningsavstånd (normalt) och 45 graders öppningsvinkel ger 2.5m [m]
speakerwalldist=0.85;	%anger kortaste avståndet mellan högtalarna och framväggen [m]
listenerwalldist=3.8;	%anger kortaste avståndet mellan lyssnaren och framväggen [m]
speakerheigth=0.8;	%anger ljudkällans höjd över golvet [m]
listenerheigth=0.9;	%anger lyssnarens höjd över golvet

speakerangle=2*atan((speakerwidth/2)/(listenerwalldist-speakerwalldist))/pi*180;
damp=10^(-reflexdamp/20);

%räkna ut saker för direktljudet som ska användas som referens.

directX=speakerwidth/2;
directY=speakerheigth-listenerheigth;
directZ=listenerwalldist-speakerwalldist;

directdist=((directX)^2+(directY)^2+(directZ)^2)^0.5;		%räknar ut avstånd lyssnare - ljudkälla
directhorisontangle=atan(directX/directZ)/pi*180;		%anger vinkeln i horisontalled till ljudkällan
directverticalangle=atan(directY/directZ)/pi*180;		%anger vinkeln i vertikalled till ljudkällan
directtime=(abs(directdist-directdist))/c;			%anger fördröjningen i relation till direktljudet
directamp=20*log10(directdist/directdist);			%anger amplituden i relation till direktljudet 

subplot(2,1,1)
%plot(directtime,[0 directamp],'k');hold on;
plot(directtime,directamp,'kd');hold on;

deltax=abs(refx-directhorisontangle);
deltay=abs(refy-directverticalangle);
v=sqrt(deltax^2+deltay^2);
x=-v:0.1:v;
y=abs(((1-x.^2./v^2).*v^2).^(1/2));
y1=-y;
subplot(2,1,2)
plot(directhorisontangle,directverticalangle,'kd'); hold on;
text((-directhorisontangle+SoffsetX2),directverticalangle,num2str(round(v)));
text((directhorisontangle+SoffsetX2),directverticalangle,num2str(round(v)));
plot(-directhorisontangle,directverticalangle,'kd');hold on;
%cones of diffusion
plot((refx+x),(y+refy),'r'); hold on;
plot((refx+x),(y1+refy),'r'); hold on;
plot((x-refx),(y+refy),'r'); hold on; 	%speglar i y-axeln
plot((x-refx),(y1+refy),'r'); hold on;	%speglar i y-axeln

%-------------------------------------------------------------------------------------------
%här följer motsvarande för de primära reflexerna

%golvreflexen
X=speakerwidth/2;
Y=-speakerheigth-listenerheigth;
Z=listenerwalldist-speakerwalldist;

dist=((X)^2+(Y)^2+(Z)^2)^0.5;		%räknar ut avstånd lyssnare - ljudkälla
horisontangle=atan(X/Z)/pi*180;		%anger vinkeln i horisontalled till ljudkällan
verticalangle=atan(Y/Z)/pi*180;		%anger vinkeln i vertikalled till ljudkällan
time=(abs(dist-directdist))/c;			%anger fördröjningen i relation till direktljudet
amp=20*log10(damp*directdist/dist);			%anger amplituden i relation till direktljudet 

apr=apr+damp*(directdist/dist).^2.*exp(i.*w.*time);

subplot(2,1,1)
plot(time,amp,'bd');hold on;
text((time+SoffsetX),amp,'Golv') 

deltax=abs(refx-horisontangle);
deltay=abs(refy-verticalangle);
v=sqrt(deltax^2+deltay^2);
x=-v:0.1:v;
y=abs(((1-x.^2./v^2).*v^2).^(1/2));
y1=-y;
subplot(2,1,2)
plot(horisontangle,verticalangle,'bd'); hold on;
text((-horisontangle+SoffsetX2),verticalangle,num2str(round(v)));
plot(-horisontangle,verticalangle,'bd');hold on;

%cones of diffusion
plot((refx+x),(y+refy),'g'); hold on;
plot((refx+x),(y1+refy),'g'); hold on;
plot((x-refx),(y+refy),'g'); hold on; 	%speglar i y-axeln
plot((x-refx),(y1+refy),'g'); hold on;	%speglar i y-axeln

%-------------------------------------------------------------------------------------------

%takreflexen
X=speakerwidth/2;
Y=(roomheigth-speakerheigth)+(roomheigth-listenerheigth);
Z=listenerwalldist-speakerwalldist;

dist=((X)^2+(Y)^2+(Z)^2)^0.5;		%räknar ut avstånd lyssnare - ljudkälla
horisontangle=atan(X/Z)/pi*180;		%anger vinkeln i horisontalled till ljudkällan
verticalangle=atan(Y/Z)/pi*180;		%anger vinkeln i vertikalled till ljudkällan
time=(abs(dist-directdist))/c;			%anger fördröjningen i relation till direktljudet
amp=20*log10(damp*directdist/dist);			%anger amplituden i relation till direktljudet 

apr=apr+damp*(directdist/dist).^2.*exp(i.*w.*time);

subplot(2,1,1)
plot(time,amp,'bd');hold on;
text((time+SoffsetX),amp,'Tak') 

deltax=abs(refx-horisontangle);
deltay=abs(refy-verticalangle);
v=sqrt(deltax^2+deltay^2);
x=-v:0.1:v;
y=abs(((1-x.^2./v^2).*v^2).^(1/2));
y1=-y;
subplot(2,1,2)
plot(horisontangle,verticalangle,'bd'); hold on;
text((-horisontangle+SoffsetX2),verticalangle,num2str(round(v)));
plot(-horisontangle,verticalangle,'bd');hold on;

%cones of diffusion
plot((refx+x),(y+refy),'g'); hold on;
plot((refx+x),(y1+refy),'g'); hold on;
plot((x-refx),(y+refy),'g'); hold on; 	%speglar i y-axeln
plot((x-refx),(y1+refy),'g'); hold on;	%speglar i y-axeln

%-------------------------------------------------------------------------------------------

%sidoväggsreflexen
X=speakerwidth/2+(roomwidth-speakerwidth);
Y=(speakerheigth)-(listenerheigth);
Z=listenerwalldist-speakerwalldist;

dist=((X)^2+(Y)^2+(Z)^2)^0.5;		%räknar ut avstånd lyssnare - ljudkälla
horisontangle=atan(X/Z)/pi*180;		%anger vinkeln i horisontalled till ljudkällan
verticalangle=atan(Y/Z)/pi*180;		%anger vinkeln i vertikalled till ljudkällan
time=(abs(dist-directdist))/c;			%anger fördröjningen i relation till direktljudet
amp=20*log10(damp*directdist/dist);			%anger amplituden i relation till direktljudet 

apr=apr+damp*(directdist/dist).^2.*exp(i.*w.*time);

subplot(2,1,1)
plot(time,amp,'bd');hold on;
text((time+SoffsetX),amp,'Sidovägg') 

deltax=abs(refx-horisontangle);
deltay=abs(refy-verticalangle);
v=sqrt(deltax^2+deltay^2);
x=-v:0.1:v;
y=abs(((1-x.^2./v^2).*v^2).^(1/2));
y1=-y;
subplot(2,1,2)
plot(horisontangle,verticalangle,'bd'); hold on;
text((-horisontangle+SoffsetX2),verticalangle,num2str(round(v)));
plot(-horisontangle,verticalangle,'bd');hold on;

%cones of diffusion
plot((refx+x),(y+refy),'g'); hold on;
plot((refx+x),(y1+refy),'g'); hold on;
plot((x-refx),(y+refy),'g'); hold on; 	%speglar i y-axeln
plot((x-refx),(y1+refy),'g'); hold on;	%speglar i y-axeln

%-------------------------------------------------------------------------------------------

%framväggsreflexen
X=speakerwidth/2;
Y=(speakerheigth)-(listenerheigth);
Z=listenerwalldist+speakerwalldist;

dist=((X)^2+(Y)^2+(Z)^2)^0.5;		%räknar ut avstånd lyssnare - ljudkälla
horisontangle=atan(X/Z)/pi*180;		%anger vinkeln i horisontalled till ljudkällan
verticalangle=atan(Y/Z)/pi*180;		%anger vinkeln i vertikalled till ljudkällan
time=(abs(dist-directdist))/c;			%anger fördröjningen i relation till direktljudet
amp=20*log10(damp*directdist/dist);			%anger amplituden i relation till direktljudet 

apr=apr+damp*(directdist/dist).^2.*exp(i.*w.*time);

subplot(2,1,1)
plot(time,amp,'bd');hold on;
text((time+SoffsetX),amp,'Framvägg') 

deltax=abs(refx-horisontangle);
deltay=abs(refy-verticalangle);
v=sqrt(deltax^2+deltay^2);
x=-v:0.1:v;
y=abs(((1-x.^2./v^2).*v^2).^(1/2));
y1=-y;
subplot(2,1,2)
plot(horisontangle,verticalangle,'bd'); hold on;
text((-horisontangle+SoffsetX2),verticalangle,num2str(round(v)));
plot(-horisontangle,verticalangle,'bd');hold on;

%cones of diffusion
plot((refx+x),(y+refy),'g'); hold on;
plot((refx+x),(y1+refy),'g'); hold on;
plot((x-refx),(y+refy),'g'); hold on; 	%speglar i y-axeln
plot((x-refx),(y1+refy),'g'); hold on;	%speglar i y-axeln

%-------------------------------------------------------------------------------------------

%sidoväggsreflexen (motstående sida)
X=speakerwidth/2+(roomwidth-speakerwidth)+speakerwidth;
Y=(speakerheigth)-(listenerheigth);
Z=listenerwalldist-speakerwalldist;

dist=((X)^2+(Y)^2+(Z)^2)^0.5;		%räknar ut avstånd lyssnare - ljudkälla
horisontangle=atan(X/Z)/pi*180;		%anger vinkeln i horisontalled till ljudkällan
verticalangle=atan(Y/Z)/pi*180;		%anger vinkeln i vertikalled till ljudkällan
time=(abs(dist-directdist))/c;			%anger fördröjningen i relation till direktljudet
amp=20*log10(damp*directdist/dist);			%anger amplituden i relation till direktljudet 

apr=apr+damp*(directdist/dist).^2.*exp(i.*w.*time);

subplot(2,1,1)
plot(time,amp,'bd');hold on;
text((time+SoffsetX),amp,'Bortre sidovägg') 

deltax=abs(refx-horisontangle);
deltay=abs(refy-verticalangle);
v=sqrt(deltax^2+deltay^2);
x=-v:0.1:v;
y=abs(((1-x.^2./v^2).*v^2).^(1/2));
y1=-y;
subplot(2,1,2)
plot(horisontangle,verticalangle,'bd'); hold on;
text((-horisontangle+SoffsetX2),verticalangle,num2str(round(v)));
plot(-horisontangle,verticalangle,'bd');hold on;

%cones of diffusion
plot((refx+x),(y+refy),'g'); hold on;
plot((refx+x),(y1+refy),'g'); hold on;
plot((x-refx),(y+refy),'g'); hold on; 	%speglar i y-axeln
plot((x-refx),(y1+refy),'g'); hold on;	%speglar i y-axeln

%-------------------------------------------------------------------------------------------
%Här följer motsvarande för de sekundära reflexerna

%framvägg och golv
X=speakerwidth/2;
Y=-speakerheigth-listenerheigth;
Z=listenerwalldist+speakerwalldist;

dist=((X)^2+(Y)^2+(Z)^2)^0.5;		%räknar ut avstånd lyssnare - ljudkälla
horisontangle=atan(X/Z)/pi*180;		%anger vinkeln i horisontalled till ljudkällan
verticalangle=atan(Y/Z)/pi*180;		%anger vinkeln i vertikalled till ljudkällan
time=(abs(dist-directdist))/c;			%anger fördröjningen i relation till direktljudet
amp=20*log10(damp^2*directdist/dist);			%anger amplituden i relation till direktljudet 

asr=apr+damp^2*(directdist/dist).^2.*exp(i.*w.*time);

subplot(2,1,1)
plot(time,amp,'rd');hold on;
text((time+SoffsetX),amp,'Golv+FV') 

deltax=abs(refx-horisontangle);
deltay=abs(refy-verticalangle);
v=sqrt(deltax^2+deltay^2);
x=-v:0.1:v;
y=abs(((1-x.^2./v^2).*v^2).^(1/2));
y1=-y;
subplot(2,1,2)
plot(horisontangle,verticalangle,'rd'); hold on;
text((horisontangle+SoffsetX2),verticalangle,num2str(round(v)));
plot(-horisontangle,verticalangle,'rd');hold on;

%cones of diffusion
plot((refx+x),(y+refy),'y'); hold on;
plot((refx+x),(y1+refy),'y'); hold on;
plot((x-refx),(y+refy),'y'); hold on; 	%speglar i y-axeln
plot((x-refx),(y1+refy),'y'); hold on;	%speglar i y-axeln

%---------------------------
%golv+sidovägg
X=speakerwidth/2+(roomwidth-speakerwidth);
Y=-speakerheigth-listenerheigth;
Z=listenerwalldist-speakerwalldist;

dist=((X)^2+(Y)^2+(Z)^2)^0.5;		%räknar ut avstånd lyssnare - ljudkälla
horisontangle=atan(X/Z)/pi*180;		%anger vinkeln i horisontalled till ljudkällan
verticalangle=atan(Y/Z)/pi*180;		%anger vinkeln i vertikalled till ljudkällan
time=(abs(dist-directdist))/c;			%anger fördröjningen i relation till direktljudet
amp=20*log10(damp^2*directdist/dist);			%anger amplituden i relation till direktljudet 

asr=asr+damp^2*(directdist/dist).^2.*exp(i.*w.*time);

subplot(2,1,1)
plot(time,amp,'rd');hold on;
text((time+SoffsetX),amp,'Golv+SV') 

deltax=abs(refx-horisontangle);
deltay=abs(refy-verticalangle);
v=sqrt(deltax^2+deltay^2);
x=-v:0.1:v;
y=abs(((1-x.^2./v^2).*v^2).^(1/2));
y1=-y;
subplot(2,1,2)
plot(horisontangle,verticalangle,'rd'); hold on;
text((horisontangle+SoffsetX2),verticalangle,num2str(round(v)));
plot(-horisontangle,verticalangle,'rd');hold on;

%cones of diffusion
plot((refx+x),(y+refy),'y'); hold on;
plot((refx+x),(y1+refy),'y'); hold on;
plot((x-refx),(y+refy),'y'); hold on; 	%speglar i y-axeln
plot((x-refx),(y1+refy),'y'); hold on;	%speglar i y-axeln

%---------------------------
%tak +framvägg
X=speakerwidth/2;
Y=(roomheigth-speakerheigth)+(roomheigth-listenerheigth);
Z=listenerwalldist+speakerwalldist;

dist=((X)^2+(Y)^2+(Z)^2)^0.5;		%räknar ut avstånd lyssnare - ljudkälla
horisontangle=atan(X/Z)/pi*180;		%anger vinkeln i horisontalled till ljudkällan
verticalangle=atan(Y/Z)/pi*180;		%anger vinkeln i vertikalled till ljudkällan
time=(abs(dist-directdist))/c;			%anger fördröjningen i relation till direktljudet
amp=20*log10(damp^2*directdist/dist);			%anger amplituden i relation till direktljudet 

asr=asr+damp^2*(directdist/dist).^2.*exp(i.*w.*time);

subplot(2,1,1)
plot(time,amp,'rd');hold on;
text((time+SoffsetX),amp,'Tak+FV') 

deltax=abs(refx-horisontangle);
deltay=abs(refy-verticalangle);
v=sqrt(deltax^2+deltay^2);
x=-v:0.1:v;
y=abs(((1-x.^2./v^2).*v^2).^(1/2));
y1=-y;
subplot(2,1,2)
plot(horisontangle,verticalangle,'rd'); hold on;
text((horisontangle+SoffsetX2),verticalangle,num2str(round(v)));
plot(-horisontangle,verticalangle,'rd');hold on;

%cones of diffusion
plot((refx+x),(y+refy),'y'); hold on;
plot((refx+x),(y1+refy),'y'); hold on;
plot((x-refx),(y+refy),'y'); hold on; 	%speglar i y-axeln
plot((x-refx),(y1+refy),'y'); hold on;	%speglar i y-axeln


%---------------------------
%tak +sidovägg
X=speakerwidth/2+(roomwidth-speakerwidth);
Y=(roomheigth-speakerheigth)+(roomheigth-listenerheigth);
Z=listenerwalldist-speakerwalldist;

dist=((X)^2+(Y)^2+(Z)^2)^0.5;		%räknar ut avstånd lyssnare - ljudkälla
horisontangle=atan(X/Z)/pi*180;		%anger vinkeln i horisontalled till ljudkällan
verticalangle=atan(Y/Z)/pi*180;		%anger vinkeln i vertikalled till ljudkällan
time=(abs(dist-directdist))/c;			%anger fördröjningen i relation till direktljudet
amp=20*log10(damp^2*directdist/dist);			%anger amplituden i relation till direktljudet 

asr=asr+damp^2*(directdist/dist).^2.*exp(i.*w.*time);

subplot(2,1,1)
plot(time,amp,'rd');hold on;
text((time+SoffsetX),amp,'Tak+SV') 

deltax=abs(refx-horisontangle);
deltay=abs(refy-verticalangle);
v=sqrt(deltax^2+deltay^2);
x=-v:0.1:v;
y=abs(((1-x.^2./v^2).*v^2).^(1/2));
y1=-y;
subplot(2,1,2)
plot(horisontangle,verticalangle,'rd'); hold on;
text((horisontangle+SoffsetX2),verticalangle,num2str(round(v)));
plot(-horisontangle,verticalangle,'rd');hold on;

%cones of diffusion
plot((refx+x),(y+refy),'y'); hold on;
plot((refx+x),(y1+refy),'y'); hold on;
plot((x-refx),(y+refy),'y'); hold on; 	%speglar i y-axeln
plot((x-refx),(y1+refy),'y'); hold on;	%speglar i y-axeln

%---------------------------
%framvägg+sidovägg
X=speakerwidth/2+(roomwidth-speakerwidth);
Y=(speakerheigth)-(listenerheigth);
Z=listenerwalldist+speakerwalldist;

dist=((X)^2+(Y)^2+(Z)^2)^0.5;		%räknar ut avstånd lyssnare - ljudkälla
horisontangle=atan(X/Z)/pi*180;		%anger vinkeln i horisontalled till ljudkällan
verticalangle=atan(Y/Z)/pi*180;		%anger vinkeln i vertikalled till ljudkällan
time=(abs(dist-directdist))/c;			%anger fördröjningen i relation till direktljudet
amp=20*log10(damp^2*directdist/dist);			%anger amplituden i relation till direktljudet 

asr=asr+damp^2*(directdist/dist).^2.*exp(i.*w.*time);

subplot(2,1,1)
plot(time,amp,'rd');hold on;
text((time+SoffsetX),amp,'FV+SV') 

deltax=abs(refx-horisontangle);
deltay=abs(refy-verticalangle);
v=sqrt(deltax^2+deltay^2);
x=-v:0.1:v;
y=abs(((1-x.^2./v^2).*v^2).^(1/2));
y1=-y;
subplot(2,1,2)
plot(horisontangle,verticalangle,'rd'); hold on;
text((horisontangle+SoffsetX2),verticalangle,num2str(round(v)));
plot(-horisontangle,verticalangle,'rd');hold on;

%cones of diffusion
plot((refx+x),(y+refy),'y'); hold on;
plot((refx+x),(y1+refy),'y'); hold on;
plot((x-refx),(y+refy),'y'); hold on; 	%speglar i y-axeln
plot((x-refx),(y1+refy),'y'); hold on;	%speglar i y-axeln

%---------------------------
%golv +sidovägg2
X=speakerwidth+(roomwidth-speakerwidth)/2+roomwidth;
Y=-speakerheigth-listenerheigth;
Z=listenerwalldist-speakerwalldist;

dist=((X)^2+(Y)^2+(Z)^2)^0.5;		%räknar ut avstånd lyssnare - ljudkälla
horisontangle=atan(X/Z)/pi*180;		%anger vinkeln i horisontalled till ljudkällan
verticalangle=atan(Y/Z)/pi*180;		%anger vinkeln i vertikalled till ljudkällan
time=(abs(dist-directdist))/c;			%anger fördröjningen i relation till direktljudet
amp=20*log10(damp^2*directdist/dist);			%anger amplituden i relation till direktljudet 

asr=asr+damp^2*(directdist/dist).^2.*exp(i.*w.*time);

subplot(2,1,1)
plot(time,amp,'rd');hold on;
text((time+SoffsetX),amp,'Golv+SV2') 

deltax=abs(refx-horisontangle);
deltay=abs(refy-verticalangle);
v=sqrt(deltax^2+deltay^2);
x=-v:0.1:v;
y=abs(((1-x.^2./v^2).*v^2).^(1/2));
y1=-y;
subplot(2,1,2)
plot(horisontangle,verticalangle,'rd'); hold on;
text((horisontangle+SoffsetX2),verticalangle,num2str(round(v)));
plot(-horisontangle,verticalangle,'rd');hold on;

%cones of diffusion
plot((refx+x),(y+refy),'y'); hold on;
plot((refx+x),(y1+refy),'y'); hold on;
plot((x-refx),(y+refy),'y'); hold on; 	%speglar i y-axeln
plot((x-refx),(y1+refy),'y'); hold on;	%speglar i y-axeln

%---------------------------
%tak +sidovägg2
X=speakerwidth+(roomwidth-speakerwidth)/2+roomwidth;
Y=(roomheigth-speakerheigth)+(roomheigth-listenerheigth);
Z=listenerwalldist-speakerwalldist;

dist=((X)^2+(Y)^2+(Z)^2)^0.5;		%räknar ut avstånd lyssnare - ljudkälla
horisontangle=atan(X/Z)/pi*180;		%anger vinkeln i horisontalled till ljudkällan
verticalangle=atan(Y/Z)/pi*180;		%anger vinkeln i vertikalled till ljudkällan
time=(abs(dist-directdist))/c;			%anger fördröjningen i relation till direktljudet
amp=20*log10(damp^2*directdist/dist);			%anger amplituden i relation till direktljudet 

asr=asr+damp^2*(directdist/dist).^2.*exp(i.*w.*time);

subplot(2,1,1)
plot(time,amp,'rd');hold on;
text((time+SoffsetX),amp,'Tak+SV2') 

deltax=abs(refx-horisontangle);
deltay=abs(refy-verticalangle);
v=sqrt(deltax^2+deltay^2);
x=-v:0.1:v;
y=abs(((1-x.^2./v^2).*v^2).^(1/2));
y1=-y;
subplot(2,1,2)
plot(horisontangle,verticalangle,'rd'); hold on;
text((horisontangle+SoffsetX2),verticalangle,num2str(round(v)));
plot(-horisontangle,verticalangle,'rd');hold on;

%cones of diffusion
plot((refx+x),(y+refy),'y'); hold on;
plot((refx+x),(y1+refy),'y'); hold on;
plot((x-refx),(y+refy),'y'); hold on; 	%speglar i y-axeln
plot((x-refx),(y1+refy),'y'); hold on;	%speglar i y-axeln

%---------------------------
%FramVägg +sidovägg2
X=speakerwidth+(roomwidth-speakerwidth)/2+roomwidth;
Y=(speakerheigth)-(listenerheigth);
Z=listenerwalldist+speakerwalldist;

dist=((X)^2+(Y)^2+(Z)^2)^0.5;		%räknar ut avstånd lyssnare - ljudkälla
horisontangle=atan(X/Z)/pi*180;		%anger vinkeln i horisontalled till ljudkällan
verticalangle=atan(Y/Z)/pi*180;		%anger vinkeln i vertikalled till ljudkällan
time=(abs(dist-directdist))/c;			%anger fördröjningen i relation till direktljudet
amp=20*log10(damp^2*directdist/dist);			%anger amplituden i relation till direktljudet 

asr=asr+damp^2*(directdist/dist).^2.*exp(i.*w.*time);

subplot(2,1,1)
plot(time,amp,'rd');hold on;
text((time+SoffsetX),amp,'FV+SV2') 

deltax=abs(refx-horisontangle);
deltay=abs(refy-verticalangle);
v=sqrt(deltax^2+deltay^2);
x=-v:0.1:v;
y=abs(((1-x.^2./v^2).*v^2).^(1/2));
y1=-y;
subplot(2,1,2)
plot(horisontangle,verticalangle,'rd'); hold on;
text((horisontangle+SoffsetX2),verticalangle,num2str(round(v)));
plot(-horisontangle,verticalangle,'rd');hold on;

%cones of diffusion
plot((refx+x),(y+refy),'y'); hold on;
plot((refx+x),(y1+refy),'y'); hold on;
plot((x-refx),(y+refy),'y'); hold on; 	%speglar i y-axeln
plot((x-refx),(y1+refy),'y'); hold on;	%speglar i y-axeln

%---------------------------
%sidovägg +sidovägg2
X=(roomwidth-speakerwidth)/2+roomwidth*1.5;
Y=(speakerheigth)-(listenerheigth);
Z=listenerwalldist-speakerwalldist;

dist=((X)^2+(Y)^2+(Z)^2)^0.5;		%räknar ut avstånd lyssnare - ljudkälla
horisontangle=atan(X/Z)/pi*180;		%anger vinkeln i horisontalled till ljudkällan
verticalangle=atan(Y/Z)/pi*180;		%anger vinkeln i vertikalled till ljudkällan
time=(abs(dist-directdist))/c;			%anger fördröjningen i relation till direktljudet
amp=20*log10(damp^2*directdist/dist);			%anger amplituden i relation till direktljudet 

asr=asr+damp^2*(directdist/dist).^2.*exp(i.*w.*time);

subplot(2,1,1)
plot(time,amp,'rd');hold on;
text((time+SoffsetX),amp,'SV+SV2') 

deltax=abs(refx-horisontangle);
deltay=abs(refy-verticalangle);
v=sqrt(deltax^2+deltay^2);
x=-v:0.1:v;
y=abs(((1-x.^2./v^2).*v^2).^(1/2));
y1=-y;
subplot(2,1,2)
plot(horisontangle,verticalangle,'rd'); hold on;
text((horisontangle+SoffsetX2),verticalangle,num2str(round(v)));
plot(-horisontangle,verticalangle,'rd');hold on;

%cones of diffusion
plot((refx+x),(y+refy),'y'); hold on;
plot((refx+x),(y1+refy),'y'); hold on;
plot((x-refx),(y+refy),'y'); hold on; 	%speglar i y-axeln
plot((x-refx),(y1+refy),'y'); hold on;	%speglar i y-axeln
%-------------------------------------------------------------------------------------------


%slutord
subplot(2,1,1)
hold off;
title('Reflexer - fördröjning och geometrisk dämpning relativt direktljudet');
xlabel('Fördröjning [s]');
ylabel('Dämpning [dB]');
grid;

%räkna ut golvlist, taklist och var vägghörnorna finns.
y1=atan(-listenerheigth/listenerwalldist)/pi*180;		%taklist
y2=atan((roomheigth-listenerheigth)/listenerwalldist)/pi*180;		%golvlist
x1=atan(roomwidth/(listenerwalldist*2))/pi*180;		%höger vägghörna
x2=-atan(roomwidth/(listenerwalldist*2))/pi*180;		%vänster vägghörna

subplot(2,1,2)
plot([x1 x2],[y1 y1],'k');hold on;
plot([x1 x2],[y2 y2],'k');hold on;
plot([x1 x1],[y1 y2],'k');hold on;
plot([x2 x2],[y1 y2],'k');hold on;
hold off;
title('Vinklar till reflexer plus respektive Cone of confusion. Rektangeln visar storleken på framväggen.');
xlabel('Horisontell avvikelse [grader]');
ylabel('Vertikal [grader]');
axis([-70 70 -50 70])
grid;


figure %rita upp skalenligt rummets främre del med lyssnare, ljudkällor samt väggar. 

%rita ut ljudkällorna
speakerplot(fspeak,(speakerwidth/2*100),((listenerwalldist-speakerwalldist)*100),numofrings);
speakerplot(fspeak,(-speakerwidth/2*100),((listenerwalldist-speakerwalldist)*100),numofrings);
%rita ut lyssnaren
headplot;
%rita ut rummets främre del
plot([(-roomwidth/2*100) (-roomwidth/2*100)],[0 listenerwalldist*100],'k');hold on;
plot([(-roomwidth/2*100) (roomwidth/2*100)],[listenerwalldist*100 listenerwalldist*100],'k');hold on;
plot([(roomwidth/2*100) (roomwidth/2*100)],[0 listenerwalldist*100],'k');hold on;
%rita ut vinkeln mellan högtalarna
plot([(0) (-speakerwidth/2*100)],[0 (listenerwalldist-speakerwalldist)*100],'b');hold on;
plot([(0) (speakerwidth/2*100)],[0 (listenerwalldist-speakerwalldist)*100],'b');hold on; 
text((-20),60,[num2str(round(speakerangle)),' grader']);
title('Rummets främre dimensioner med högtalare, väggar och lyssnare inritade');
xlabel('Avstånd [cm]');
ylabel('Avstånd [cm]');
axis square;
hold off; 


figure %rita upp den summerade frekvensgången för alla ovan beräknade källor.

Apr=20.*log10(abs(apr));
Asr=20.*log10(abs(asr));

semilogx(f,Apr,'b');hold on;
semilogx(f,Asr,'r');hold off;
title('Frekvensgång för direktljud+de primära reflexerna (blå) samt samma för de sekundära (röd)');
xlabel('Frekvens [Hz]');
ylabel('Amplitud [dB]');
axis([20 20000 -30 20]);
grid



