function d=dcubo(p) % Cube

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;

fondamenta=dcube(p,0,PROFONDITA,0,LARGHEZZA,-HFONDAMENTA,0);
MuroSinistro1=dcube(p,0,PROFONDITA,0,SPESSOREMURIPORTANTI,-HFONDAMENTA,HPRIMOPIANO+2*HSOFFITTI+HSECONDOPIANO);
MuroDietro1=dcube(p,0,SPESSOREMURIPORTANTI,0,LARGHEZZA,-HFONDAMENTA,HPRIMOPIANO+2*HSOFFITTI+HSECONDOPIANO);
MuroDavanti1=dcube(p,PROFONDITA-SPESSOREMURIPORTANTI,PROFONDITA,0,LARGHEZZA,-HFONDAMENTA,HPRIMOPIANO+2*HSOFFITTI+HSECONDOPIANO);
MuroDestro1=dcube(p,0,PROFONDITA,LARGHEZZA-SPESSOREMURIPORTANTI,LARGHEZZA,-HFONDAMENTA,HPRIMOPIANO+2*HSOFFITTI+HSECONDOPIANO);
Soffitto=dcube(p,0,PROFONDITA,0,LARGHEZZA,HPRIMOPIANO+HSOFFITTI+HSECONDOPIANO,HPRIMOPIANO+2*HSOFFITTI+HSECONDOPIANO);

d=dunion(dunion(dunion(dunion(dunion(fondamenta,Soffitto),MuroDestro1),MuroDavanti1),MuroDietro1),MuroSinistro1);

function d=dcube(p,x1,x2,y1,y2,z1,z2) % Cubo
[a b]=size(p);
d=-min(min(min(min(min(-y1*ones(a,1)+p(:,2),y2*ones(a,1)-p(:,2)),-x1*ones(a,1)+p(:,1)),x2*ones(a,1)-p(:,1)),-z1*ones(a,1)+p(:,3)),z2*ones(a,1)-p(:,3));

