%ATTENZIONE : PER ZERNIKE INSERIRE SOLO k=1-2-3-6-7-12-13-14-15 POICHE'
%zernfun.m CONTROLLA CHE I RAGGI SIANO <1 E PER GLI ALTRI GRADI QUESTO NON
%E' VERIFICATO
%SEMPRE PER ZERNIKE CI LIMITEREMO A CONTROLLARE PER I PRIMI 15 POLINOMI LE CUI COORDINATE AZIMUTALI SONO RIPORTATE SOTTO
%koornwinder_typeIIbis(deg,pns,0.5) CALCOLA DIRETTAMENTE LA MATRICE DI
%VANDERONDE DI GRADO deg NEI PUNTI pns

function V=vandermonde(type, g, k)

format long e

switch type
    case 1 %zernike
        r=vettore_nodi(k);
        [t,r] = cart2pol(r(:,1),r(:,2));
        rt=[t,r]
        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];
        z = zeros(g,size(rt,1));
        for i = 1:g
            for j =1:size(rt,1)
                z(i,j) = zernfun(n(i), m(i), rt(j,2), rt(j,1), 'norm');
            end
        end

    case 2 %logan_shepp
        rt = vettore_nodi(k);
        for i = 1:g
            for j = 1:size(rt,1)
                z(i,j) = logan_shepp(rt(j,:), 0, i);
            end
        end
    case 3 %koornwinder
        rt=vettore_nodi(k);
        z=koornwinder_typeIIbis(g,rt,-0.5)';
end
   
V = z;
 