clear all, close all, clc
%% wall
l_wall = 2;
h_wall = 2;
x_wall = 2;
main_panel = figure;
set(main_panel,'Position',[109 114 996 836],'color','w');
freq_sig = 500;
k = 2*pi*freq_sig/343;
d = x_wall;
quadri_x = -8:0.05:8;
quadri_y = -8:0.05:8;
[x y] = meshgrid(quadri_x,quadri_y);
%
% % avant le mur
% [x21 y21] = meshgrid(-8:0.1:8,-8:0.1:-4-0.1);
% % le mur
% [x22 y22] = meshgrid(-8:0.1:8,-4:0.1:4);
% % apr�s le mur
% [x23 y23] = meshgrid(-8:0.1:8,4+0.1:0.1:8);
% x2 = [x21;x22;x23];
% y2 = [y21;y22;y23];
% r2 = [zeros(size(x21));sqrt((x22+d).^2+y22.^2);zeros(size(x23))];
r1 = sqrt((x-d).^2+y.^2);
r2 = sqrt((x+d).^2+y.^2);
p1 = zeros(size(x));
p2 = zeros(size(x));
ptot = (p1 + p2);
rptot = real(ptot);
axes('Parent',main_panel,'Units','normalized','Position',[0.1 0.1 0.6 0.6]);
uicontrol('Parent',main_panel,'style','text','units','normalized','position',[0.785 0.3 0.05 0.02],'string','reflex','fontname','times new roman',...
'fontweight','bold','foregroundcolor','k','backgroundcolor','w');
slid_reflex = uicontrol('Parent',main_panel,'style','slide','value',0,'units','normalized','position',[0.8 0.1 0.02 0.2]);
val_reflex = uicontrol('Parent',main_panel,'style','text','units','normalized','position',[0.785 0.07 0.05 0.02],'string',num2str(get(slid_reflex,'value')),'fontname','times new roman',...
'fontweight','bold','foregroundcolor','k','backgroundcolor','w');
uicontrol('Parent',main_panel,'style','text','units','normalized','position',[0.735 0.3 0.05 0.02],'string','freq','fontname','times new roman',...
'fontweight','bold','foregroundcolor','k','backgroundcolor','w');
slid_freq = uicontrol('Parent',main_panel,'style','slide','min',50,'max',500,'value',100,'units','normalized','position',[0.75 0.1 0.02 0.2]);
val_freq = uicontrol('Parent',main_panel,'style','text','units','normalized','position',[0.735 0.07 0.05 0.02],'string',num2str(get(slid_freq,'value')),'fontname','times new roman',...
'fontweight','bold','foregroundcolor','k','backgroundcolor','w');
aco_surf = surf(x,y,rptot);
title('Acoustic wave simulation','fontname','times new roman','fontsize',14,'fontweight','bold');
axis([-10 10 -10 10 -10 10])
caxis([-1 1]);
view([34 36])
shading interp
cl = colorbar;
set(cl,'units','normalized','position',[0.0177 0.1171 0.0268 0.5681],'ytick',[-1;0;1],'yticklabel',['-1';' 0';' 1']);
xlabel('dist [m]');
ylabel('dist [m]');
hold on
[yw,zw] = meshgrid(-8:0.1:8,-8:0.1:8);
wall_surf = surf(repmat(0,length(zw),1),yw,zw,'edgecolor','none','FaceColor','k');
coo_mic = [5 5 0];
plot_mic = plot3(coo_mic(1),coo_mic(2),coo_mic(3),'k.','MarkerSize',20);
hold off
axes('Parent',main_panel,'Units','normalized','Position',[0.55 0.7 0.4 0.2]);
vec_tps = 0:1/5:1000;
vec_pmic = zeros(1,length(vec_tps));
plot_pmic = plot(vec_tps,vec_pmic,'k');
ylim([-1 1])
xlim([950 1000])
grid
box on
nb = 1000;
for t = vec_tps
% take values
reflex = get(slid_reflex,'value');
freq = round(get(slid_freq,'value'));
% process wave
k = 2*pi*freq/343;
p1 = exp(i*(t-k.*r1))./r1;
p2 = exp(i*(t-k.*r2))./r2;
ptot = (p1 + reflex*p2);
rptot = real(ptot);
% process mic
pmic = rptot(find(quadri_x == coo_mic(1)),find(quadri_y == coo_mic(2)));
vec_pmic(1,end) = pmic;
vec_pmic(1,1:end-1) = vec_pmic(2:end);
%update graph
set(plot_pmic,'YData',vec_pmic);
set(aco_surf,'ZData',rptot);
set(val_reflex,'string',num2str(sprintf('%1.2f',reflex)));
set(val_freq,'string',[num2str(freq) 'Hz']);
drawnow
end