#include "camlight.inc" #include "eixos.inc" #include "textures.inc" #include "retalho.inc" #include "objs.inc" // ====================================================================== // DESCRICAO DA CENA #declare raio = 1.000; #declare PI = 3.14159; #declare space = 2.000; /////////////////// braco //////////////////// /////////////////// pescoco //////////////////// // Partes da cena: #macro emenda_vert(X, Y) #declare X[0][0] = (X[1][0] + Y[2][0]) / 2; #declare X[0][1] = (X[1][1] + Y[2][1]) / 2; #declare X[0][2] = (X[1][2] + Y[2][2]) / 2; #declare X[0][3] = (X[1][3] + Y[2][3]) / 2; #declare Y[3][0] = X[0][0]; #declare Y[3][1] = X[0][1]; #declare Y[3][2] = X[0][2]; #declare Y[3][3] = X[0][3]; #end #macro emenda_braco(W, Z) #declare Z[0][0] = W[3][0]; #declare Z[0][1] = W[2][0]; #declare Z[0][2] = W[1][0]; #declare Z[0][3] = W[0][0]; #declare Z[1][0] = (2 * Z[0][0]) - W[3][1]; #declare Z[1][1] = (2 * Z[0][1]) - W[2][1]; #declare Z[1][2] = (2 * Z[0][2]) - W[1][1]; #declare Z[1][3] = (2 * Z[0][3]) - W[0][1]; #end #macro encosto(h1, h2, l) #local E = array[4][4]; #local incl = 2; #local E[0][0] = <0, 0, 0>; // calculada #local E[0][1] = <0, 0, 0>; // calculada #local E[0][2] = <0, 0, 0>; // calculada #local E[0][3] = <0, 0, 0>; // calculada #local E[1][0] = ; #local E[1][1] = ; #local E[1][2] = <0, -incl, h1 - 1>; #local E[1][3] = <0, -incl, h1 - 1>; #local E[2][0] = ; #local E[2][1] = ; #local E[2][2] = <0, -incl, h2 + 1>; #local E[2][3] = <0, -incl, h2 + 1>; #local E[3][0] = ; #local E[3][1] = ; #local E[3][2] = <0, -2*incl, h2>; #local E[3][3] = <0, -2*incl, h2>; E #end #macro assento(h1, h2, l) #local A = array[4][4]; #local incl = 2; #local A[0][0] = ; #local A[0][1] = ; #local A[0][2] = <0, 2*l, h1>; #local A[0][3] = <0, 2*l, h1>; #local A[1][0] = ; #local A[1][1] = ; #local A[1][2] = <0, 2*l - 1 , h1 - 1>; #local A[1][3] = <0, 2*l - 1 , h1 - 1>; #local A[2][0] = ; #local A[2][1] = ; #local A[2][2] = <0, 0 + 1, h1 + 1>; #local A[2][3] = <0, 0 + 1, h1 + 1>; #local A[3][0] = <0, 0, 0>; // calculada #local A[3][1] = <0, 0, 0>; // calculada #local A[3][2] = <0, 0, 0>; // calculada #local A[3][3] = <0, 0, 0>; // calculada A #end #macro perna(h1, h2, l) #local P = array[4][4]; #local incl = 5; #local P[0][0] = ; #local P[0][1] = ; #local P[0][2] = <0, (2*l) + incl, 1>; #local P[0][3] = <0, (2*l) + incl, 1>; #local P[1][1] = ; #local P[1][0] = ; #local P[1][2] = <0, (2*l) + incl - 1, 0>; #local P[1][3] = <0, (2*l) + incl - 1, 0>; #local P[2][0] = ; #local P[2][1] = ; #local P[2][2] = <0, 2*l + 1 , h1 + 1>; #local P[2][3] = <0, 2*l + 1 , h1 + 1>; #local P[3][0] = ; #local P[3][1] = ; #local P[3][2] = <0, 2*l, h1>; #local P[3][3] = <0, 2*l, h1>; P #end #macro braco(h1, h2, l) #local B = array[4][4]; #local h3 = 6; #local incl = 1; #local B[0][0] = ; #local B[0][1] = ; #local B[0][2] = ; #local B[0][3] = ; #local B[1][1] = ; #local B[1][0] = ; #local B[1][2] = ; #local B[1][3] = ; #local B[2][0] = ; #local B[2][1] = ; #local B[2][2] = ; #local B[2][3] = ; #local B[3][0] = ; #local B[3][1] = ; #local B[3][2] = ; #local B[3][3] = ; B #end #local grid = 0.05; #local h1 = 4; #local h2 = 12; #local l = 2; #declare chao = box{ <-50,-50,-1>, <+50,+50,0> } #declare E = encosto(h1, h2, l) #declare A = assento(h1, h2, l) #declare P = perna(h1, h2, l) #declare B = braco(h1, h2, l) emenda_vert(E, A); emenda_vert(A, P); emenda_braco(A, B) union { object { eixos(5) } object { retalho(E, grid, tx_branca, tx_verde, 0, 1, 0, 1) translate < 0,0,0 > } object { retalho(A, grid, tx_branca, tx_roxa, 0, 1, 0, 1) translate < 0,0,0 > } object { retalho(P, grid, tx_branca, tx_verde, 0, 1, 0, 1) translate < 0,0,0 > } object { retalho(B, grid, tx_branca, tx_verde, 0, 1, 0, 1) translate < 0,0,0 > } object { retalho(E, grid, tx_branca, tx_verde, 0, 1, 0, 1) translate < 0,0,0 > scale <-1, 0, 0> } object { retalho(A, grid, tx_branca, tx_roxa, 0, 1, 0, 1) translate < 0,0,0 > scale <-1, 0, 0> } object { retalho(P, grid, tx_branca, tx_verde, 0, 1, 0, 1) translate < 0,0,0 > scale <-1, 0, 0> } object { retalho(B, grid, tx_branca, tx_verde, 0, 1, 0, 1) translate < 0,0,0 > scale <-1, 0, 0> } object { chao translate < 0,0,0 > texture{ tx_xadrez } } } #declare centro_cena = < 0.00, 0.00, 5.00 >; #declare raio_cena = 15.0; #declare dir_camera = < 45.00, 45.00, 45.00 >; #declare dist_camera = 10 * raio_cena; #declare intens_luz = 1.0; camlight(centro_cena, raio_cena, dir_camera, dist_camera, z, intens_luz)