function [r,r2] = capteur(rayon,N)
%function [r,r2] = capteur(rayon,N)

%---------------------------------------------------------------------------------------------
% Fonction : Calcul des positions des capteurs de surface (coord cartésiennes XYZ)
% (cf: R. Oostenveld and P. Praamstra, Clin. Neurophysiol., 2001, vol 112, pp 713-719)
%---------------------------------------------------------------------------------------------
% Entrées :
% rayon -> rayon de la sphère du scalp (hypothèse: centre=[0;0;0]).
% N     -> nombre de capteurs de surface.
%
% Sorties :
% r     -> matrice (3xN) des coord cartésiennes 3D des capteurs de surface
% r2    -> matrice (3xM) des coord cartésiennes 3D pour construire la sphère du scalp
%---------------------------------------------------------------------------------------------

%*********************************************************************************************

% I) Coordonnées XYZ des électrodes de scalp

% Rem: N = nb total de capteurs = (N-1) capteurs "actifs" + 1 référence (Nz, en fin de liste)

if ( (N~=7) && (N~=10) && (N~=19) && (N~=32) && (N~=64) && (N~=96) && (N~=128) )
    
    disp('Erreur : nombre de capteurs inconnu!') ;
    
    r=-1 ; r2=-1 ; return ;

end ;

% I-1) Pour une sphère de rayon R=1 (cf. fichiers texte de R. Oostenveld)

r = zeros(3,N) ; label = cell(N) ;

fid = fopen(sprintf('mtg%d.dat',N),'rt') ;

for i=1:1:size(r,2)
    label{i} = fscanf(fid,'%s %['']') ;
    r(1,i) = fscanf(fid,'%f %['']') ;
    r(2,i) = fscanf(fid,'%f %['']') ;
    r(3,i) = fscanf(fid,'%f %['']') ;
end

fclose(fid) ;

% I-2) Pour une sphère de rayon R=rayon (passage par coord sphériques)

for i=1:1:size(r,2)
    [th,phi,radius] = cart2sph(r(1,i),r(2,i),r(3,i));
    [r(1,i),r(2,i),r(3,i)] = sph2cart(th,phi,rayon) ;
end

%*********************************************************************************************

% II) Construction de la sphère du scalp (-> pour visualisation)

pts = 40;

sphe2 = [rayon*ones(1,pts^2);...
    kron(ones(1,pts),0:2*pi/(pts-1):2*pi);... %theta1 theta2 theta3 theta4
    kron(0:pi/(pts-1):pi,ones(1,pts))];       %phi1   phi2   phi3   phi4

r2(1,:) = sphe2(1,:) .* sin(sphe2(3,:)) .* cos(sphe2(2,:)) ; % x=r*sin(theta)*cos(phi)
r2(2,:) = sphe2(1,:) .* sin(sphe2(3,:)) .* sin(sphe2(2,:)) ; % y=r*sin(theta)*sin(phi)
r2(3,:) = sphe2(1,:) .* cos(sphe2(3,:)) ; % z=r*cos(theta)

%*********************************************************************************************
