function h=hcubo(p,geps)

global HPRIMOPIANO;            
global HSECONDOPIANO;
global HSOFFITTI;              
global PROFONDITA;             
global LARGHEZZA;              
global HFONDAMENTA;
global SPESSOREMURIPORTANTI;

SPESSOREMURIPORTANTI=0.5;
LARGHEZZA=2;
HFONDAMENTA=0.5;
PROFONDITA=2;
HPRIMOPIANO=2;
HSOFFITTI=0.5;
HSECONDOPIANO=0;

Raggio=0.5;
DesnsitaNormale=8;
DensitaSpigoli=3;

N=size(p,1);
h=DesnsitaNormale*ones(size(p,1),1);

IndiciSpigoli=find((p(:,1)>=SPESSOREMURIPORTANTI-Raggio & p(:,1)<=PROFONDITA-SPESSOREMURIPORTANTI+Raggio) & ( (p(:,2)-SPESSOREMURIPORTANTI*ones(N,1)).^2+p(:,3).^2<=Raggio^2 ));
K=size(IndiciSpigoli,1);
h(IndiciSpigoli)= min(h(IndiciSpigoli) ,DensitaSpigoli*ones(K,1)+((DesnsitaNormale-DensitaSpigoli)/Raggio)*sqrt((p(IndiciSpigoli,2)-SPESSOREMURIPORTANTI*ones(K,1)).^2+p(IndiciSpigoli,3).^2));

IndiciSpigoli=find((p(:,1)>=SPESSOREMURIPORTANTI-Raggio & p(:,1)<=PROFONDITA-SPESSOREMURIPORTANTI+Raggio) & ( (p(:,2)-SPESSOREMURIPORTANTI*ones(N,1)).^2+(p(:,3)-(HPRIMOPIANO+HSOFFITTI+HSECONDOPIANO)*ones(N,1)).^2<=Raggio^2 ));
K=size(IndiciSpigoli,1);
h(IndiciSpigoli)= min(h(IndiciSpigoli) ,DensitaSpigoli*ones(K,1)+((DesnsitaNormale-DensitaSpigoli)/Raggio)*sqrt((p(IndiciSpigoli,2)-SPESSOREMURIPORTANTI*ones(K,1)).^2+(p(IndiciSpigoli,3)-(HPRIMOPIANO+HSOFFITTI+HSECONDOPIANO)*ones(K,1)).^2));

IndiciSpigoli=find((p(:,1)>=SPESSOREMURIPORTANTI-Raggio & p(:,1)<=PROFONDITA-SPESSOREMURIPORTANTI+Raggio) & ( (p(:,2)-(LARGHEZZA-SPESSOREMURIPORTANTI)*ones(N,1)).^2+p(:,3).^2<=Raggio^2 ));
K=size(IndiciSpigoli,1);
h(IndiciSpigoli)= min(h(IndiciSpigoli) ,DensitaSpigoli*ones(K,1)+((DesnsitaNormale-DensitaSpigoli)/Raggio)*sqrt((p(IndiciSpigoli,2)-(LARGHEZZA-SPESSOREMURIPORTANTI)*ones(K,1)).^2+p(IndiciSpigoli,3).^2));

IndiciSpigoli=find((p(:,1)>=SPESSOREMURIPORTANTI-Raggio & p(:,1)<=PROFONDITA-SPESSOREMURIPORTANTI+Raggio) & ( (p(:,2)-(LARGHEZZA-SPESSOREMURIPORTANTI)*ones(N,1)).^2+(p(:,3)-(HPRIMOPIANO+HSOFFITTI+HSECONDOPIANO)*ones(N,1)).^2<=Raggio^2 ));
K=size(IndiciSpigoli,1);
h(IndiciSpigoli)= min(h(IndiciSpigoli) ,DensitaSpigoli*ones(K,1)+((DesnsitaNormale-DensitaSpigoli)/Raggio)*sqrt((p(IndiciSpigoli,2)-(LARGHEZZA-SPESSOREMURIPORTANTI)*ones(K,1)).^2+(p(IndiciSpigoli,3)-(HPRIMOPIANO+HSOFFITTI+HSECONDOPIANO)*ones(K,1)).^2));

IndiciSpigoli=find((p(:,2)>=SPESSOREMURIPORTANTI-Raggio & p(:,2)<=LARGHEZZA-SPESSOREMURIPORTANTI+Raggio) & ( (p(:,1)-SPESSOREMURIPORTANTI*ones(N,1)).^2+p(:,3).^2<=Raggio^2 ));
K=size(IndiciSpigoli,1);
h(IndiciSpigoli)= min(h(IndiciSpigoli) ,DensitaSpigoli*ones(K,1)+((DesnsitaNormale-DensitaSpigoli)/Raggio)*sqrt((p(IndiciSpigoli,1)-SPESSOREMURIPORTANTI*ones(K,1)).^2+p(IndiciSpigoli,3).^2));

IndiciSpigoli=find((p(:,2)>=SPESSOREMURIPORTANTI-Raggio & p(:,2)<=LARGHEZZA-SPESSOREMURIPORTANTI+Raggio) & ( (p(:,1)-SPESSOREMURIPORTANTI*ones(N,1)).^2+(p(:,3)-(HPRIMOPIANO+HSOFFITTI+HSECONDOPIANO)*ones(N,1)).^2<=Raggio^2 ));
K=size(IndiciSpigoli,1);
h(IndiciSpigoli)= min(h(IndiciSpigoli) ,DensitaSpigoli*ones(K,1)+((DesnsitaNormale-DensitaSpigoli)/Raggio)*sqrt((p(IndiciSpigoli,1)-SPESSOREMURIPORTANTI*ones(K,1)).^2+(p(IndiciSpigoli,3)-(HPRIMOPIANO+HSOFFITTI+HSECONDOPIANO)*ones(K,1)).^2));

IndiciSpigoli=find((p(:,2)>=SPESSOREMURIPORTANTI-Raggio & p(:,2)<=LARGHEZZA-SPESSOREMURIPORTANTI+Raggio) & ( (p(:,1)-(PROFONDITA-SPESSOREMURIPORTANTI)*ones(N,1)).^2+p(:,3).^2<=Raggio^2 ));
K=size(IndiciSpigoli,1);
h(IndiciSpigoli)= min(h(IndiciSpigoli) ,DensitaSpigoli*ones(K,1)+((DesnsitaNormale-DensitaSpigoli)/Raggio)*sqrt((p(IndiciSpigoli,1)-(PROFONDITA-SPESSOREMURIPORTANTI)*ones(K,1)).^2+p(IndiciSpigoli,3).^2));

IndiciSpigoli=find((p(:,2)>=SPESSOREMURIPORTANTI-Raggio & p(:,2)<=LARGHEZZA-SPESSOREMURIPORTANTI+Raggio) & ( (p(:,1)-(PROFONDITA-SPESSOREMURIPORTANTI)*ones(N,1)).^2+(p(:,3)-(HPRIMOPIANO+HSOFFITTI+HSECONDOPIANO)*ones(N,1)).^2<=Raggio^2 ));
K=size(IndiciSpigoli,1);
h(IndiciSpigoli)= min(h(IndiciSpigoli) ,DensitaSpigoli*ones(K,1)+((DesnsitaNormale-DensitaSpigoli)/Raggio)*sqrt((p(IndiciSpigoli,1)-(PROFONDITA-SPESSOREMURIPORTANTI)*ones(K,1)).^2+(p(IndiciSpigoli,3)-(HPRIMOPIANO+HSOFFITTI+HSECONDOPIANO)*ones(K,1)).^2));

IndiciSpigoli=find((p(:,3)>=SPESSOREMURIPORTANTI-Raggio & p(:,3)<=HPRIMOPIANO+HSOFFITTI+HSECONDOPIANO+Raggio) & ( (p(:,1)-SPESSOREMURIPORTANTI*ones(N,1)).^2+(p(:,2)-SPESSOREMURIPORTANTI*ones(N,1)).^2<=Raggio^2 ));
K=size(IndiciSpigoli,1);
h(IndiciSpigoli)= min(h(IndiciSpigoli) ,DensitaSpigoli*ones(K,1)+((DesnsitaNormale-DensitaSpigoli)/Raggio)*sqrt((p(IndiciSpigoli,1)-SPESSOREMURIPORTANTI*ones(K,1)).^2+(p(IndiciSpigoli,2)-SPESSOREMURIPORTANTI*ones(K,1)).^2));

IndiciSpigoli=find((p(:,3)>=SPESSOREMURIPORTANTI-Raggio & p(:,3)<=HPRIMOPIANO+HSOFFITTI+HSECONDOPIANO+Raggio) & ( (p(:,1)-SPESSOREMURIPORTANTI*ones(N,1)).^2+(p(:,2)-(LARGHEZZA-SPESSOREMURIPORTANTI)*ones(N,1)).^2<=Raggio^2 ));
K=size(IndiciSpigoli,1);
h(IndiciSpigoli)= min(h(IndiciSpigoli) ,DensitaSpigoli*ones(K,1)+((DesnsitaNormale-DensitaSpigoli)/Raggio)*sqrt((p(IndiciSpigoli,1)-SPESSOREMURIPORTANTI*ones(K,1)).^2+(p(IndiciSpigoli,2)-(LARGHEZZA-SPESSOREMURIPORTANTI)*ones(K,1)).^2));

IndiciSpigoli=find((p(:,3)>=SPESSOREMURIPORTANTI-Raggio & p(:,3)<=HPRIMOPIANO+HSOFFITTI+HSECONDOPIANO+Raggio) & ( (p(:,1)-(PROFONDITA-SPESSOREMURIPORTANTI)*ones(N,1)).^2+(p(:,2)-SPESSOREMURIPORTANTI*ones(N,1)).^2<=Raggio^2 ));
K=size(IndiciSpigoli,1);
h(IndiciSpigoli)= min(h(IndiciSpigoli) ,DensitaSpigoli*ones(K,1)+((DesnsitaNormale-DensitaSpigoli)/Raggio)*sqrt((p(IndiciSpigoli,1)-(PROFONDITA-SPESSOREMURIPORTANTI)*ones(K,1)).^2+(p(IndiciSpigoli,2)-SPESSOREMURIPORTANTI*ones(K,1)).^2));

IndiciSpigoli=find((p(:,3)>=SPESSOREMURIPORTANTI-Raggio & p(:,3)<=HPRIMOPIANO+HSOFFITTI+HSECONDOPIANO+Raggio) & ( (p(:,1)-(PROFONDITA-SPESSOREMURIPORTANTI)*ones(N,1)).^2+(p(:,2)-(LARGHEZZA-SPESSOREMURIPORTANTI)*ones(N,1)).^2<=Raggio^2 ));
K=size(IndiciSpigoli,1);
h(IndiciSpigoli)= min(h(IndiciSpigoli) ,DensitaSpigoli*ones(K,1)+((DesnsitaNormale-DensitaSpigoli)/Raggio)*sqrt((p(IndiciSpigoli,1)-(PROFONDITA-SPESSOREMURIPORTANTI)*ones(K,1)).^2+(p(IndiciSpigoli,2)-(LARGHEZZA-SPESSOREMURIPORTANTI)*ones(K,1)).^2));
