function d=dcasetta(p) % Cube

global HFONDAMENTA;            
global HPRIMOPIANO;            
global HSECONDOPIANO;          
global HSOFFITTI;              
global HTETTO;                 
global PROFONDITA;             
global LARGHEZZA;              
global SPESSOREMURIPORTANTI;   
global ORDINATATRAMEZZA5;
global SPESSORETRAMEZZE;
global ASCISSATRAMEZZA3;
global ORDINATATRAMEZZA7;
global LARGHEZZASCALA;

fondamenta=dcube(p,0,PROFONDITA,0,LARGHEZZA,-HFONDAMENTA,0);
MuroSinistro1=dcube(p,0,PROFONDITA,0,SPESSOREMURIPORTANTI,0,HPRIMOPIANO+HSOFFITTI+HSECONDOPIANO);
MuroDietro1=dcube(p,0,SPESSOREMURIPORTANTI,0,LARGHEZZA,0,HPRIMOPIANO+HSOFFITTI+HSECONDOPIANO);
MuroDavanti1=dcube(p,PROFONDITA-SPESSOREMURIPORTANTI,PROFONDITA,0,LARGHEZZA,0,HPRIMOPIANO+HSOFFITTI+HSECONDOPIANO);
MuroDestro1=dcube(p,0,PROFONDITA,LARGHEZZA-SPESSOREMURIPORTANTI,LARGHEZZA,0,HPRIMOPIANO+HSOFFITTI+HSECONDOPIANO);
PrimoPiano=dunion(dunion(dunion(dunion(MuroSinistro1,MuroDestro1),MuroDavanti1),MuroDietro1),dtramezze(p));
Soffitto1=dcube(p,0,PROFONDITA,0,LARGHEZZA,HPRIMOPIANO,HPRIMOPIANO+HSOFFITTI);
Soffitto1=ddiff(Soffitto1,dcube(p,SPESSOREMURIPORTANTI,ORDINATATRAMEZZA5-SPESSORETRAMEZZE/2,ASCISSATRAMEZZA3+SPESSORETRAMEZZE/2,LARGHEZZA-SPESSOREMURIPORTANTI,HPRIMOPIANO,HPRIMOPIANO+HSOFFITTI));
Soffitto1=ddiff(Soffitto1,dcube(p,SPESSOREMURIPORTANTI,ORDINATATRAMEZZA7-SPESSORETRAMEZZE/2,LARGHEZZA-SPESSOREMURIPORTANTI-LARGHEZZASCALA,LARGHEZZA-SPESSOREMURIPORTANTI,HPRIMOPIANO,HPRIMOPIANO+HSOFFITTI));
d=dunion(dunion(dunion(dunion(fondamenta,PrimoPiano),dscala(p)),Soffitto1),dtetto(p));

%d=ddiff(d,dbuchiInfissi(p));

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));