%----------- B-format dekoder (Semestralni prace) -------------------------
%............3D regular polygonal periphonic layout loudspeaker feeds......
% 16.11.2008
% verze 1 
%--------------------------------------------------------------------------
function [varargout]=regPol3DUHJ(WF,XF,YF,ZF,eps)

    n = nargout;
    a = (2*pi)/(n/2);

%  loudspeaker at 0 rad
%           for i=0:(n-1)
%               azim1(i+1) = i*a;
%           end
        
% loudspeaker at 0 + a/2 rad
            
            b = a/2;
            for i=0:((n/2)-1)
                azim(i+1,1) = b + (i*a);
            end

% loudspeaker feeds

%       down loudspeakers
            
            for k=1:(n/2)
                varargout{k}= 0.5*((sqrt(2)*WF) + (cos(azim(k,1))*cos((-eps/2)*(pi/180))*XF) + (sin(azim(k,1))*cos((-eps/2)*(pi/180))*YF) + (sin((-eps/2)*(pi/180))*ZF));
            end

%       up loudspeakers      
           
            for k=((n/2)+1):n
                varargout{k}= 0.5*((sqrt(2)*WF) + (cos(azim(k-(n/2),1))*cos((eps/2)*(pi/180))*XF) + (sin(azim(k-(n/2),1))*cos((eps/2)*(pi/180))*YF) + (sin((eps/2)*(pi/180))*ZF));
            end

disp('Reproduktory jsou číslovány od předního levého proti směru hod. ručiček, ')
disp('přičemž polovina jich je umístěna pod úhlem -eps/2 a polovina pod úhlem +eps/2 od posluchače.')
disp('(eps je elevační úhel mezi horním a spodním reproduktorovým okruhem)')

% zapis na disk

%   down loudspeakers
% mkdir('c:\Dekoder-vystupy','regPol3DUHJ');
% 
%     for i=1:(n/2)
%         speakerFeed=varargout{i};
%         cislo=num2str(i);
%         text=['c:\Dekoder-vystupy\regPol3DUHJ\Dspeaker',cislo];
%         wavwrite(0.999*(speakerFeed/max(abs(speakerFeed))),48000,text);
%     end
%     
% %   up loudspeakers    
%     
%     for i=((n/2)+1):n
%         speakerFeed=varargout{i};
%         cislo=num2str(i-(n/2));
%         text=['c:\Dekoder-vystupy\regPol3DUHJ\Uspeaker',cislo];
%         wavwrite(0.999*(speakerFeed/max(abs(speakerFeed))),48000,text);
%     end
    
