/* Tea-carrelage.inc */

// carrelage texture et forme
#declare Teste=0;
#if(Teste)#include "colors.inc"#end
//---------------------------------------------------------
#declare Ep=.03; // utilisé dans la macro et le placement des carrés 

// -------- CSG box sphere et cylindres pour un carreau

#macro Carreau(T_,S)// Macro pour jouer avec les textures et dimensions
// épaisseur et texture des bords
     #local Scl=.9;
     #local Blanc=texture{pigment{rgb <1,1,.9>}finish{ambient 0.3 phong 1 reflection{0,.01}}}

merge {
  //  cylinder {<-.5,0,-.5><-.5,0,.5>Ep texture{Blanc} scale <Scl,1,1> }
  //  cylinder {<.5,0,-.5><.5,0,.5>Ep   texture{Blanc}  scale <Scl,1,1>}
  //  cylinder {<-.5,0,-.5><.5,0,-.5>Ep texture{Blanc} scale <1,1,Scl>}
  //  cylinder {<-.5,0,.5><.5,0,.5>Ep   texture{Blanc} scale <1,1,Scl>}
  //  sphere {<-.5,0,-.5>Ep texture{Blanc}scale <Scl,1,Scl>}
  //  sphere {<-.5,0,.5>Ep texture{Blanc} scale <Scl,1,Scl>}
  //  sphere {<.5,0,-.5>Ep texture{Blanc} scale <Scl,1,Scl>}
  //  sphere {<.5,0,.5>Ep texture{Blanc}  scale <Scl,1,Scl>}

      cylinder {<0,0,0><0,0,1>Ep texture{Blanc} scale <Scl,1,1> translate <-.5,0,-.5>}
      cylinder {<0,0,0><0,0,1>Ep texture{Blanc} scale <Scl,1,1> translate <. 5,0,-.5>}
      cylinder {<0,0,0><1,0,0>Ep texture{Blanc} scale <1,1,Scl> translate <-.5,0,-.5>}
      cylinder {<0,0,0><1,0,0>Ep texture{Blanc} scale <1,1,Scl> translate <-.5,0, .5>}

      sphere {0,Ep texture{Blanc} scale <Scl,1,Scl> translate <-.5,0,-.5>}
      sphere {0,Ep texture{Blanc} scale <Scl,1,Scl> translate <-.5,0, .5>}
      sphere {0,Ep texture{Blanc} scale <Scl,1,Scl> translate < .5,0,-.5>}
      sphere {0,Ep texture{Blanc} scale <Scl,1,Scl> translate < .5,0, .5>}

     box { <-.5,0,-.5><.5,Ep,.5>}
     texture { T_ }
     scale S
     translate <0.5,0,0.5>*1.5
}
#end
// ---------------------------------------------------------
// Couleurs de bases
#declare F=<1,1,.9>;
#declare A=NavyBlue;
#declare B=MediumBlue;

// ------------------- 
#declare Scl_pigment=0.1; // Dimensionne les Pigments

#declare PChK=pigment{checker
pigment{checker
          pigment{checker
     		     pigment{checker A,F rotate y*45 }
     		     pigment{checker A,F  }
     			scale Scl_pigment
		}

           pigment{checker
     				pigment{checker B,F rotate y*45 }
     				pigment{checker B,F }
     				scale Scl_pigment
     		}
     		scale .25
}
pigment{checker
          pigment{checker
     		     pigment{checker A,F rotate y*45 }
     		     pigment{checker A,F  }
     			scale Scl_pigment
		}

           pigment{checker
     				pigment{checker B,F rotate y*45 }
     				pigment{checker B,F }
     				scale Scl_pigment
     		}
     		scale .5
}
}
// Finition de texture 
#declare F_tile=finish{ambient 0.3 phong 1 reflection{0,.01}}

// ---------------------------------------------------------Mise en place des textures
#declare TPChK0=texture{pigment{PChK} finish{F_tile}}
#declare TPChK1=texture{pigment{PChK translate <.5,0,.5>}  finish{F_tile}}
#declare TPChK2=texture{pigment{PChK translate <1.5,0,.5>} finish{F_tile}}
#declare TPChK3=texture{pigment{PChK translate <-.5,0,.5>} finish{F_tile}}

// ---------------------------------------------------------Patchwork  de carrés 
#declare Petit_Carreau=
     union{
     #local S0=0.5;
     #local Eps0=Ep+0.007;
     #local Ecar0=(S0+Eps0);
     object{Carreau(texture{TPChK1  scale 1/S0},S0) }
     object{Carreau(texture{TPChK2  scale 1/S0},S0) translate <Ecar0,0,0> }
     object{Carreau(texture{TPChK2  scale 1/S0},S0) translate <0,0,Ecar0>}
     object{Carreau(texture{TPChK1  scale 1/S0},S0) translate <Ecar0,0,Ecar0> }
     scale <1.45,1.3,1.45>
     translate <-0.73,.03,-0.73>
}

// Placement des carrés de carreau
#declare Carrelage=
     union{
     #local S1=1.5;
     #local Eps=Ep+0.04;
     #local Ecar=(1.5+Eps);

     // le support
     box{<-2,0,-2><2,0.01,2> pigment{White} scale 3}

     object{Petit_Carreau }
     object{Carreau(texture{TPChK3},S1) translate <-Ecar,0,0>}
     object{Petit_Carreau translate <-Ecar,0,0>*2}
     object{Carreau(texture{TPChK1},S1) translate < Ecar,0,0>}

     object{Carreau(texture{TPChK3},S1) translate <0,0,Ecar> }
     object{Petit_Carreau translate <-Ecar,0,Ecar>}
     object{Carreau(texture{TPChK1},S1) translate <-Ecar*2,0,Ecar>}
     object{Petit_Carreau translate <Ecar,0,Ecar>}


     object{ Petit_Carreau translate <    0,0,Ecar*2>}
     object{Carreau(texture{TPChK1},S1)translate <-Ecar,0,Ecar*2>}
     object{Petit_Carreau  translate <-Ecar*2,0,Ecar*2>}
     object{Carreau(texture{TPChK3},S1)translate < Ecar,0,Ecar*2>}


     object{Carreau(texture{TPChK1},S1) translate <    0,0,-Ecar>}
     object{Petit_Carreau translate <-Ecar,0,-Ecar>}
     object{Carreau(texture{TPChK3},S1)translate <-Ecar*2,0,-Ecar>}
     object{Petit_Carreau  translate < Ecar,0,-Ecar>}

     translate x*.3
     translate y*-.035
}

// Un carré de carrelage 
object{Carrelage}
//----------------------------------------------------------TESTE
#if(Teste)
#declare CamD =camera{location <.3,5,-6> look_at <.0,.7,-.3> right x*image_width/image_height angle 25}
#declare CamH=camera{location <.0,20,1.5> look_at <.0,.0,1.5> right x*image_width/image_height angle 25}
camera{CamH}
//----------------------------------------------------------Light
light_source{ <.3,5,-6>*y*2 1.2}
//--------------------------------
#end //teste
// EOF