// Last edited on 2003-12-09 03:40:33 by stolfi // Professor, na aula passada tinha feito meu inseto somente com graus de liberade // para cima e para baixo. Alem de o ter feito deitado "de barriga para cima". // Foi a primeira ideia que me veio a cabeça com o texto (gregor acordar e perceber // a metamorfose de seu corpo)... // // Nao consegui em tempo alterar o trabalho passado de modo a ter o ponto inicial // do trabalho atual, de modo que o maximo que consegui fazer foi movimentar // as patinhas da minha barata, mostrando seu desespero tentando se virar e caminhar :-)) // OK, mas... quem fez tudo direito merece mais nota de quem não fez, certo? --stolfi // ====================================================================== #declare ctr = < 0.00, -5.00, 0.00 >; #declare camDir = < 10.00, 30.00, 20.00 >; // sphere{ ctr, 5 texture{ pigment{ color rgb <1,0,1> } finish { ambient 0.6 diffuse 0.4 } } } camera { location ctr + 1.00*camDir right -1.00*x up 0.75*y sky z look_at ctr } // ====================================================================== // FONTES DE LUZ light_source { 10 * < +50.0, +30.0, +50.0 > // Posição da lâmpada. color rgb 1.2 * < 1.00, 1.00, 1.00 > // Intensidade e cor da luz. } light_source { 10 * < +50.0, -10.0, +10.0 > // Posição da lâmpada. color rgb 0.8 * < 1.00, 1.00, 1.00 > // Intensidade e cor da luz. } // ====================================================================== // DESCRIÇÃO DA CENA #include "colors.inc" background{ color rgb < 0.75, 0.80, 0.85 > } #declare R = seed(12345); #declare distancia = 0; #declare numeroPernas = 0; #declare limitePernas = 6; cylinder { <0, 0, 0>, // Center of one end <0, -30, 0>, // Center of other end 5 // Radius pigment { Silver } translate <-1,0.7,-3> } #while (numeroPernas < limitePernas ) #declare gama = -45*rand(R); #declare alfa = -45*rand(R); #declare beta = -90*rand(R); #declare delta = -45*rand(R); #declare parte4 = union { cylinder { <0, 0, 0>, // Center of one end <3, 0, 0>, // Center of other end 0.5 // Radius pigment { Silver } } sphere { <0,0,0>, 0.5 translate <3,0,0> pigment { Silver } } } # declare parte3 = union { cylinder { <0, 0, 0>, // Center of one end <3, 0, 0>, // Center of other end 0.5 // Radius pigment { Silver } } object { parte4 #declare tialfa = alfa/180; #declare tibeta = beta/180; #declare tigama = gama/180; #declare tidelta = delta/180; #if ( (tialfa + clock) <= 1) #declare t1 = (tialfa + clock); #if (t1 <= 0.5) rotate -(t1*180)*y #else rotate -(1-t1)*180*y #end #else #declare t2 = mod((tialfa + clock), 1); #if (t2 <= 0.5) rotate -(t2*180)*y #else rotate -(1-t2)*180*y #end #end translate <3,0,0> } sphere { <0,0,0>, 0.5 translate <3,0,0> pigment { Silver } } } # declare parte2 = union { cylinder { <0, 0, 0>, // Center of one end <3, 0, 0>, // Center of other end 0.5 // Radius pigment { Silver } } object { parte3 #if ( (tibeta + clock) <= 1) #declare t3 = (tibeta + clock); #if (t3 <= 0.5) rotate (t3*180)*y #else rotate (1-t3)*180*y #end #else #declare t4 = mod((tibeta + clock), 1); #if (t4 <= 0.5) rotate (t4*180)*y #else rotate (1-t4)*180*y #end #end translate <3,0,0> } sphere { <0,0,0>, 0.5 translate <3,0,0> pigment { Silver } } } # declare parte1 = union { cylinder { <0, 0, 0>, // Center of one end <3, 0, 0>, // Center of other end 0.5 // Radius pigment { Silver } } object { parte2 #if ( (tigama + clock) <= 1) #declare t5 = (tigama + clock); #if (t5 <= 0.5) rotate -(t5*90)*y #else rotate -(1-t5)*90*y #end #else #declare t6 = mod((tigama + clock), 1); #if (t6 <= 0.5) rotate -(t6*90)*y #else rotate -(1-t6)*90*y #end #end translate <3,0,0> } sphere { <0,0,0>, 0.5 translate <3,0,0> pigment { Silver } } } #declare tamanhoCorpo = -10; #declare pernas = union { object { parte1 #if ( (tidelta + clock) <= 1) #declare t7 = (tidelta + clock); #if (t7 <= 0.5) rotate -(t7*180)*y #else rotate -(1-t7)*180*y #end #else #declare t8 = mod((tidelta + clock), 1); #if (t8 <= 0.5) rotate -(t8*180)*y #else rotate -(1-t8)*180*y #end #end translate <0,0,0> } object { parte1 #if ( (tidelta + clock) <= 1) #declare t9 = (tidelta + clock); #if (t9 <= 0.5) rotate -(t9*180)*y #else rotate -(1-t9)*180*y #end #else #declare t10 = mod((tidelta + clock), 1); #if (t10 <= 0.5) rotate -(t10*180)*y #else rotate -(1-t10)*180*y #end #end rotate 180*z translate } } object { pernas translate <4,-distancia,-3> } #declare numeroPernas=numeroPernas+1; #declare distancia = distancia + 5; #end