%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%% PROGRAMME PRINCIPAL DU TP n°3 en L1 MIEE %%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%clear all; %on nettoie l'espace mémoire
clear thetap famille_thetas famille_a_thetas PSN thetap_est
close all; %on ferme toutes les figures
clc; %on nettoie la fenetre de commande 


%------------------------------------------------------------------%
%%% Etape 1 : Déclaration des variables nécessaires au programme %%%
%------------------------------------------------------------------%
N = 7; %nombre d'électrodes EEG
rayon_Scalp = 9.2; %(en cm) proposé dans l'article de Rush & Driscoll
% de 1968 pour un modèle de tete sphérique à 3 couches
rayon_Cerveau = 8; %(en cm) proposé dans l'article de Rush & Driscoll
% de 1968 pour un modèle de tete sphérique à 3 couches
psi = ??; %longitude du dipole épileptique comprise entre 0 et 2*pi
phi = ??; %colatitude du dipole épileptique comprise entre 0 et pi
points = 50*50; %nombre de dipôles tapissant la surface corticale parmi les lesquels
%on cherche à localiser le dipole épileptique : choisir le carré d'un
%nombre entier naturel
t = 379; % on choisit un instant t de mesure entre 1 et 9984 qui nous servira à 
% localiser le dipole épileptique

%--------------------------------------------------------------------------------------------%
%%% Etape 2 : Calcul des positions des électrodes EEG situées sur le scalp (Système 10-20) %%%
%--------------------------------------------------------------------------------------------%
[r,spher] = capteur(rayon_Scalp,N);


%---------------------------------------------------------------------%
%%% Etape 3 : Positionnement du dipôle qui sera ensuite à localiser %%%
%---------------------------------------------------------------------%
rho = rayon_Cerveau;

%Transformer les coord sphériques en coord cartésiennes 3D du dipôle
thetap(1) = rho * cos(psi) * cos(phi); 
thetap(2) = rho * sin(psi) * cos(phi); 
thetap(3) = rho * sin(phi);                       
thetap = thetap.';

%calcul du vecteur d'orientation du dipôle, orientation qui doit être normale à la surface corticale
orientation_thetap = thetap/norm(thetap);


%-------------------------------------------------------------------------------------------------------------------%
%%% Etape 4 : Construction du vecteur de transfert du dipôle situé à la position rho de vecteur d'orientation phi %%%
%-------------------------------------------------------------------------------------------------------------------%
a_thetap = gainmatrix_TPSP(r,thetap,orientation_thetap);


%-------------------------------------------------------------------------------------%
%%% Etape 5 : Chargement en mémoire de l'activité épileptique du dipôle à localiser %%%
%-------------------------------------------------------------------------------------%
??;


%-------------------------------------------------%
%%% Etape 6 : Construction des observations EEG %%%
%-------------------------------------------------%
xt = ??;


%----------------------------------------------------------------------------------%
%%% Etape 7 : Implémentation de la méthode de localisation du dipole épileptique %%%
%----------------------------------------------------------------------------------%

% Calcul de la famille (grille) de vecteurs de transfert correspondant 
% aux dipôles utilisés pour tapisser (mailler) la surface corticale 
famille_thetas = Grille_TPSP(rayon_Cerveau,sqrt(points));

for m = 1 : points
    ??;
    ??;
end

[??,??] = max(??);
??;

norme_erreur(compt) = norm(thetap - thetap_est)


%-----------------------------------------------%
%%% Etape 8 : Affichage graphique du résultat %%%
%-----------------------------------------------%

%Représentation des Observations reçues sur chaque Capteur
figure(1);
for n=1:N
    subplot(N,1,n),plot(xt(n,:))
    title('Représentation des Observations issues des électrodes EEG');
end

%Représentation de l'activité électrique du dipôle épileptique
figure(2);
plot(st(1,:));
title('Représentation de l''activité électrique du dipôle épileptique');

figure(3);
%Représentation des axes
pts = 1e2;
pas = (rayon_Scalp)/(pts-1);
plot3(zeros(1,pts),zeros(1,pts),(0:pas:rayon_Scalp),'k','LineWidth',1.5);
hold on;
plot3(zeros(1,pts),(0:pas:rayon_Scalp),zeros(1,pts),'b','LineWidth',1.5);
plot3((0:pas:rayon_Scalp),zeros(1,pts),zeros(1,pts),'r','LineWidth',1.5);
legend('Axe (0z)','Axe (0y)','Axe (0x)');
%Représentation des positions des électrodes EEG
plot3(r(1,:),r(2,:),r(3,:),'db','LineWidth',2.7,'MarkerSize',10);
%Représentation de la position du dipôle épileptique
plot3(thetap(1),thetap(2),thetap(3),'*r','LineWidth',2.7,'MarkerSize',15);
%Représentation de la sphère de surface du scalp
%plot3(spher(1,:),spher(2,:),spher(3,:),'y.');
%Représentation de la sphère corticale
plot3(famille_thetas(1,:),famille_thetas(2,:),famille_thetas(3,:),'g.');
%Représentation de la position estimée du dipôle épileptique
plot3(thetap_est(1),thetap_est(2),thetap_est(3),'ok','LineWidth',2.7,'MarkerSize',15);
hold off;
title('Localisation du dipôles épileptique (cercle noir)');

