global_settings { assumed_gamma 2.2 }
#include "colors.inc"
#include "shapes.inc"
//#include "stones1.inc"
//#include "textures.inc"
#declare cal_x = 0;
#declare cal_y = 0;
#declare cal_z = 2;
#declare pos_caleidociclo = <cal_x, cal_y, cal_z>;
#declare tempo = clock;//0.17;
#declare cam_dist = 4.0; //coordenadas esféricas//
#declare cam_phi = 70.1; //angulo em relação a 'z'
#declare cam_theta = 135.1; //angulo em relação a 'x'
#declare DEG = pi/180;
#declare cam_x = cal_x + cam_dist * sin(cam_phi*DEG) * cos(cam_theta*DEG);
#declare cam_y = cal_y + cam_dist * sin(cam_phi*DEG) * sin(cam_theta*DEG);
#declare cam_z = cal_z + cam_dist * cos(cam_phi*DEG);
camera {
location <cam_x, cam_y, cam_z>
right <4/3, 0, 0>
up <0, 0, 1>
sky <0, 0, 1>
//angle 20
look_at pos_caleidociclo
}
light_source { < 30, 5, 50> color White }
light_source { <cam_x, cam_y, cam_z> color White }
background { color SkyBlue }
#declare A = <0, -1/2, 0>;
#declare B = <0, 1/2, 0>;
#declare C = <1, 0, 0>;
#declare D = <1/2, 0, sqrt(3)/2>;
#declare A1 = triangle { A, B, C
pigment {agate}//pigment { colour Yellow }
}
#declare A2 = triangle { C, B, D
pigment {granite}//pigment { colour Green }
}
#declare A3 = triangle { D, B, A
pigment {wood turbulence .25 scale .5}//pigment { colour Blue }
}
#declare A4 = triangle { D, A, C
pigment {marble turbulence .8}//pigment { colour Red }
}
#declare Tetraedro =
union { object { A1 } object { A2 } object { A3 } object { A4 }
finish { ambient .3 diffuse .6 }
}
#macro alfa (xxx) //dois seg's de reta: (0,0) -> (1,240) -> (2,0)
240*(1-abs(xxx-1))
#end
#macro beta (xxx)
#if (tempo<=1)
(2*asin( 1/(2*sin((pi+3*240*xxx*DEG)/6)) )/DEG -60 )
#else
(240-(2*asin( 1/(2*sin((pi+3*240*(xxx-1)*DEG)/6)) )/DEG -60))
//(240-(2*asin( 1/(2*sin((pi+3*480*(240*(xxx-1)*DEG)/6)) )/DEG -60))
#end
#end
#declare Bloco = union {
object { Tetraedro rotate <0, 60+alfa(tempo), 0> }
object { Tetraedro scale <1, 1, -1> rotate <0, -60, 0>}
rotate <0, 30, 0>
translate <-sqrt(3)/2,0,0>
}
#declare Caleidociclo = union {
union {
object { Bloco }
object { Bloco scale <-1, 1, 1> rotate <0, 0, 120-beta(tempo)>}
rotate <0, 0, -120+beta(tempo)>
translate <-sqrt(3)/2,0,0>
rotate <0, -150+alfa(tempo)+30, 0>
translate <-sqrt(3)/2,0,0>
}
object { Bloco scale <-1, 1, 1> rotate <0, 0, 120-beta(tempo)>}
}
object { Caleidociclo translate pos_caleidociclo }
#declare r = .01;
#declare Eixo =
cylinder {
<0,0,0>, <1,0,0>, r
}