%RICORDA: IN zernfun.m VENGONO USATI I SEGUENTI PARAMETRI PER I POLINOMI DI
%ZERNIKE DAL 1 AL 15
%ATTENZIONE : INSERIRE SOLO k=1-2-3-6-7-12-13-14-15 POICHE' ALTRIMENTI
%zernfun.m DA ERRORE IN QUANTO GLI ALTRI GRADI HANNO NODI CON RAGGI >1
% k GRADO DI PRECISIONE
% g FINO A CHE POLINOMIO DI ZERNIKE DEVO CALCOLARE L'INTEGRALE E
% CORRISPONDE AL NUMERO DI MOMENTI CHE TROVO CALCOLANDO LA MATRICE DI
% VANDERMONDE DI GRADO g
function I=zernike_integral(k,g)

 n = [0, 1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4];
 m = [0, 1,-1,-2, 0, 2, -3, 1,-1,3,-4,-2, 0, 2, 4];


thetamin=0; thetamax=2*pi; rmin=0; rmax=1; cub_type=4;

[x,y,rep_r,r_weights,theta_weights]=integration_annulus(...
    thetamin, thetamax, rmin, rmax, k, cub_type);


[thz,rz]=cart2pol(x,y);
for i = 1:g
    f_pts=zernfun(n(i),m(i),rz,thz,'norm');
    I(i)=integral_evaluation(x,y,f_pts,rep_r,r_weights,theta_weights,k);
    %fprintf('\n \n  \t >> zernike_integral %d \n',i)
    %fprintf('\n \t INTEGRAL: %1.15e \n \n',I(i));
end
I=I';
