function [cams voxels]=mark2vox(mark,cams,voxels,space,latovoxel)
%se non è un quadrato devo considerare quani voxel ci stanno per lato

%potrei salvarle come variabili static... tanto sono sempre le stesse
%global latox latoy latoz latovoxel 
%global voxels cams markers
latox=space(1);
latoy=space(2);
latoz=space(3);

vox_x= latox/latovoxel;
vox_y= latoy/latovoxel;
vox_z= latoz/latovoxel;

%devo inizilizzare (se sono nel primo frame) o resettarlo a zero per i frame
%succesivi
if isfield(voxels,'setmarkers')
%elimino i campi....non so in che altro modo farlo...
    voxels=rmfield(voxels,'setmarkers');
end
if isfield(cams,'setmarkers')
    cams  =rmfield(cams,'setmarkers');
end

voxels(1).setmarkers=[];
cams(1).setmarkers=[];

for i=1:size(mark,2)
   %attraverso la seguente operazione mi trovo il numero della rigax, della
   %rigay e della rigaz dove si trova il marker
   pos     =  floor(mark(:,i)/latovoxel)+1;
   %allora l'etichetta del voxel a cui corrispondono tali coordinate è
   etichetta= pos(1)+(pos(2)-1)*vox_x+(pos(3)-1)*vox_x*vox_y;
   if (etichetta)<= size(voxels,2) & etichetta > 0

       %trovato il voxel a cui appartiene posso inserirlo nel suo campo
       %setmarkers 
       %NB se voglio passare la posizione metto markers(:,i), ma è meglio
       %passare solo l'etichetta cioè i (o se preferite si definisce un campo
       %labek per ogni marker....in tal caso passo markers(i).label)
       voxels(etichetta).setmarkers = [voxels(etichetta).setmarkers i];
       
% %        %%...oppure posso definire i campi in marker che mi indicano
% %        %b)la posizione
% %        markers(i).position= mark(i,:);
% %        %a)a quale voxel apparitiene
% %        markers(i).voxels = etichetta;
% %        %b)da quali telecamere è visto
% %        markers(i).setcameras = voxels(etichetta).setcameras;

       %%...o ancora: se preferite per ogni telecamera vista dal voxel che 
       % contiene il marker, si può definire direttamente un campo
       for j=1:size(voxels(etichetta).setcameras,2)
           %controllare che setcameras contenga le etichette e non le posizioni
           %delle telecamere
           temp=voxels(etichetta).setcameras(j); 
           if temp~=0
            cams(temp).setmarkers =[cams(temp).setmarkers i];

                %posso creare un campo in cams 
               for k=1:size(voxels(etichetta).setcameras,2)
                    cams(temp).association(k)=1;
               end
           end
       end 
   end;
end;
