// MC930 - POV-Ray, Exercicio 10 // Last edited on 2003-06-28 11:17:33 by stolfi // Fabio de Souza Azevedo - RA 952215 // Aula de 22/05/2003 #include "colors.inc" background { color rgb < 0.07, 0.30, 0.30 > + 0.3*<1,1,1> } // Para ver de frente ----- #declare cam = < 0.0, 3.0, -12.0 >; #declare ctr = < 0, 0, 0 >; camera { location ctr + 1.25*cam right 1.0*x up 0.75*y sky y look_at ctr } light_source { 100*vrotate(cam + 10*y, -45*y) color rgb 1.2*< 1.00, 1.00, 1.00 > } light_source { 100*vrotate(cam + 5*y, +35*y) color rgb 0.8*< 1.00, 1.00, 1.00 > } light_source { 100*vrotate(cam + 1*y, +5*y) color rgb 0.4*< 1.00, 1.00, 1.00 > } #declare plano = plane { <0,1,0>, 0 pigment { checker color rgb < 0.75, 0.75, 1.0 >, color rgb < 0.75, 0.75, 1.0 > - 0.2*<1,1,1> } } // -- Peca B #declare cil_furo = cylinder { <0, 0, -2>, <0, 0, +2>, 0.5 pigment { Green } } #declare peca_b = difference { prism { linear_spline 0, 2, 7, <2, 0>, <1, 1.732>, <-1, 1.732>, <-2, 0>, <-1, -1.732>, <1, -1.732>, <2, 0> pigment { color 0.8*Cyan } } object { cil_furo translate <0, 1, 0> } } // -- Peca A #declare cil_1 = cylinder { <-1, 0, 0>, <+1, 0, 0>, 0.5 pigment { checker Yellow, Orange scale 0.5 } } #declare cil_2 = cylinder { <-0.3, 0, 0>, <+0.3, 0, 0>, 1.0 pigment { checker Yellow, Orange scale 0.5 } } #declare peca_a = union { object { cil_1 } object { cil_2 translate <1, 0, 0> } } // -- Peca C #declare peca_c = prism { linear_spline 0, 5, 10, <2.5, -2.5>, <2.5, 2.5>, <-2.5, 2.5>, <-2.5, -2.5>, <2.5, -2.5>, <2.3, -2.3>, <2.3, 2.3>, <-2.3, 2.3>, <-2.3, -2.3>, <2.3, -2.3> pigment { color 0.5*Blue + 0.5*Cyan } } // -- Tampa basculante #declare hex_furo = prism { linear_spline 0, 0.6, 7, <2, 0>, <1, 1.732>, <-1, 1.732>, <-2, 0>, <-1, -1.732>, <1, -1.732>, <2, 0> pigment { color 0.5*Blue + 0.5*White } } #declare basc = difference { prism { linear_spline 0, 0.5, 5, <2.3, -2.3>, <2.3, 2.3>, <-2.3, 2.3>, <-2.3, -2.3>, <2.3, -2.3> pigment { color 0.5*Blue + 0.5*White } } object { hex_furo } } #if (clock < 0.5) #declare rot_b = -90*(2*clock); #declare dx_basc = -4.6 + 4.6*(2*clock); #declare dx_a = 3.5 - 3.5*(2*clock); #else #declare rot_b = 90*(2*clock); #declare dx_basc = 4.6 - 4.6*(2*clock); #declare dx_a = 0; #end // ---- Aqui está a cena, finalmente: object { plano translate <0, -5, 0> } object { peca_b rotate <0, rot_b, 0>} object { peca_a translate } object { peca_c rotate <0,0,90> translate <-2.5, 0, 0> } object { basc translate }