function [] = ccdplot( pt, hidden, connmatrix )
%CCDPLOT disegna i punti proiettati sul piano immagine e le loro
%connessioni.
%   ccdplot( pt, hidden, connmatrix ).
%   pt è una matrice 2xN le cui colonne rappresentano i punti su un piano.
%   hidden è un vettore riga 1xN che indica se il punto è visibile o meno.
%   connmatrix è una matrice di connessione NxN. Dovrebbe essere una 
%   matrice triangolare inferiore, quindi non viene presa in considerazione
%   la maetà superiore.
%   Gli elementi connmatrix(i,j) rappresentano la connessione tra i punti 
%   i-esimo e j-esimo: se connmatrix(i,j)=0, il collegamento non viene
%   disegnato; se connmatrix(i,j)='#' il collegamento tra i due punti viene
%   disegnato usando il colore '#'. '#' può essere un qualunque carattere
%   rappresentante un valido colore per la funzione plot:
%            b     blue
%            g     green
%            r     red
%            c     cyan  
%            m     magenta
%            y     yellow
%            k     black
%            w     white

% if (nargin == 4)
%     fixed_axis=1;
% end

hold off;
for row = 1:length(hidden)
    for col = 1:row                 

        if (connmatrix(row,col)==1) % Sostituisco un'eventuale notazione
            connmatrix(row,col)='r';% Booleana con un colore valido
        end
        
        
        if ( col==row )          % Diagonale della matrice di connessione
            if not (hidden(row)) % Se il pt row-esimo non è nascosto
                plot(pt(1,col), pt(2,col),...       % lo disegno del colore 
                    'o', 'color', connmatrix(col,col));       % specificato
                hold on;   
%                 if (fixed_axis)
%                     axis(gaxis);
%                 end
            end
        else                           % Non sono sulla diagonale quindi 
            if (connmatrix(row,col))   % se i punti row-esimo e col-esimo
                                       % sono collegati, 
                if not (hidden(row) | hidden(col))  % e se sono visibili
                               % disegno un tratto
                               
                    plot([pt(1,row) pt(1,col)], [pt(2,row) pt(2,col)],...
                        'color',connmatrix(row,col));
%                     if (fixed_axis)
%                         axis(gaxis);
%                     end
                    hold on; 
                end
% PROBLEMA: SE UNO DEI DUE PUNTI È ESTERNO AL PIANO IMMAGINE, POTREI
% DISEGNARE LO STESSO IL COLLEGAMENTO E POI TAGLIARE IL GRAFICO ALLA
% DIMENSIONE DEL PIANO IMMAGINE. MA SE UNO DEI DUE PUNTI È _DIETRO_ AL
% PIANO IMMAGINE, ALLORA IL COLLEGAMENTO...VERREBBE SBAGLIATO?...COME FARE?
            end
        end
    end 
end

end

