/************************************************* * *** MC930 - COMPUTAÇÃO GRÁFICA *** * * Laboratório 7: O longo braço da lei Parte II * * Este projeto consiste em aperfeiçoar o longo * braço da lei, agora fazendo-o pegar um objeto * e levanta-lo. * OBS: As articulações foram alteradas, para melhor * se adequar à tarefa. Para checar quais são, * basta ver as definições das partes do braço. * * Autor: Volnei dos Santos (RA 010075) * 16/Nov/2004 ************************************************/ // Coroa de Arquimedes (lab 2) #include "coroa.inc" // ====================================================================== // PARÂMETROS DO MOVIMENTO // Variáveis de tamanho dos membros #declare larMembro = 0.15; // Variáveis de controle de movimento #declare alphab = 45 - clock*90; #if(clock < 0.5) #declare alphad = 0; #declare alphaa = -45 + clock*60; #declare betaa = -clock*70; #declare betam = (clock*2)*90; #else #declare alphad = 45 - clock*90; #declare alphaa = -15; #declare betaa = -35 + (clock - 0.5)*30; #declare betam = 90 - (clock - 0.5)*30; #end // ====================================================================== // CÂMERA camera { location <2, -10, 2> // location <0, 0, 10> right -1.50*x up 1.00*y sky z look_at <3, 0, 1> rotate 30*z } // ====================================================================== // FONTES DE LUZ light_source { < 0, -15, 2> color rgb 10*<1.0 ,1.0 ,1.0> } // ====================================================================== // DESCRIÇÃO DA CENA // Textura da pele da lei #declare pele = texture { pigment { rgb < 0.90, 0.90, 0.90> } finish { diffuse 0.05 } } // O "criminoso" #declare bandido = object { coroa rotate 90*x scale 0.2 } // Corpo da lei (sem braço) #declare lei = object { union { cylinder { <0, 0, 0.5>, <0, 0, -2>, 1.0 } cylinder { <0, 0, 0.5>, <0, 0, 1.0>, larMembro } sphere { <0, 0, 2.0>, 1.0 } torus { 0.9, 0.2 rotate 90*x translate z*2.3 texture { pigment {rgb 0} } } } texture { pele } } // Dedo da mão (constituirá a mão) #declare dedo = object { union { cylinder { <0, 0, 0>, <1.5, 0, 0>, 0.1 } sphere { <1.5, 0, 0>, 0.1 } } texture { pele } } // A mão da lei. A mesma articula se torcendo no eixo do antebraço. #declare mao = object { union { sphere { <0, 0, 0>, 0.25 texture { pele } } object {dedo scale <0.65, 1.5, 1.5> rotate 45*z} object {dedo rotate 15*z} object {dedo} object {dedo rotate -15*z} object {dedo rotate -30*z} } rotate betam*x // Angulo em torno do antebraço } // O antebraço da lei. O mesmo articula mexendo para cima, baixo e lados. #declare antebraco = object { union { sphere { <0, 0, 0>, 0.25 texture { pele } } cylinder { <0, 0, 0>, <2, 0, 0>, larMembro texture { pele } } object {mao translate 2.0*x} } rotate alphaa*y // Angulo na vertical rotate betaa*z // Angulo para os lados } // O braço da lei. O mesmo articula mexendo para cima e para baixo. #declare braco = object { union { sphere { <0, 0, 0>, 0.25 texture { pele } } cylinder { <0, 0, 0>, <2, 0, 0>, larMembro texture { pele } } object {antebraco translate 2*x} } rotate alphab*y // Angulo na vertical } // ====================================================================== // Desenho da cena, utilizando as figuras definidas // Fundo da cena background{ color rgb <0.6, 0.8, 0.6> } // Objetos union { // Ajusta o objeto para que ele fique na altura do pulso do braço object { bandido translate 4.5*x rotate alphad*y translate 1*x } object { lei } object { braco translate 1*x rotate 30*z} object { braco scale -1*x translate -1*x rotate 150*z} // Braço simétrico }