// MC930 - Exemplo de main.pov para o trabalho final
// Last edited on 2000-12-14 09:07:40 by mc726

// MONUMENTO

#include "colors.inc"

#declare centro_do_monumento = < 0.00, 0.00, 1.50 >;

#declare gomo =
  union {
    box {
      < 0.00, -1.00, -2.00 >,
      < 0.20, -0.70, 1.80 >
      pigment { color rgb < 1.00, 0.30, 0.10 > }
    }
    box {
      < 0.00, -0.60, -2.00 >,
      < 0.20, -0.50, 1.80 >
      pigment { color Gray }
    }
    box {
      < 0.00, -0.40, -2.00 >,
      < 0.20, -0.30, 1.80 >
      pigment { color Gray }
    }
    box {
      < 0.00, -0.20, -2.00 >,
      < 0.20, -0.10, 1.80 >
      pigment { color Gray }
    }
    box {
      < 0.00, -0.70, 0.30 >,
      < 0.20, 0.00, 0.40 >
      pigment { color Gray }
    }
    box {
      < 0.00, -0.70, 1.00 >,
      < 0.20, 0.00, 1.10 >
      pigment { color Gray }
    }

  }

#declare dif_janelas =
  box {
    < -0.10 , -3.50 , -2.00 >
    < 0.30, 3.50, 1.80 >
    pigment { color Gray }
  }

#declare parte_predio =
  union {
    difference {
      difference {
        superellipsoid {
          < 0.02, 0.10 >
          pigment { Gray }
          scale < 3.50, 3.50, 2.00 >
        }
        object {
          dif_janelas
          translate < 3.30, 0.00, 0.00 >
        }
      }
      object {
        dif_janelas
        translate < -3.50, 0.00, 0.00 >
      }
    }
    object {
      gomo
      translate < -3.50, -1.50, 0.00 >
    }
    object {
      gomo
      translate < 3.30, -1.50, 0.00 >
    }
    object {
      gomo
      translate < -3.50, 0.50, 0.00 >
    }
    object {
      gomo
      translate < 3.30, 0.50, 0.00 >
    }
    object {
     gomo
       translate < -3.50, 1.50, 0.00 >
    }
    object {
      gomo
      translate < 3.30, 1.50, 0.00 >
    }
    object {
      gomo
      translate < -3.50, 2.50, 0.00 >
    }
    object {
      gomo
      translate < 3.30, 2.50, 0.00 >
    }
    object {
      gomo
      translate < -3.50, 3.50, 0.00 >
    }
    object {
      gomo
     translate < 3.30, 3.50, 0.00 >
    }

    object {
      gomo
      translate < -3.50, -2.50, 0.00 >
    }

    object {
      gomo
      translate < 3.30, -2.50, 0.00 >
    }
    object {
      gomo
      translate < -3.50, -0.50, 0.00 >
    }
    object {
      gomo
      translate < 3.30, -0.50, 0.00 >
    }
  }
#declare parte_miolo =
  prism {
    conic_sweep
    linear_spline
    0, // height 1
    1, // height 2
    5, // the number of points making up the shape...
    <4,4>,<-4,4>,<-4,-4>,<4,-4>,<4,4>
    rotate < 180, 0, 0 >
    translate < 0.00, 1.00, 0.00 >
    scale < 1, 4, 1 >
    pigment { color Gray }
  }

#declare dif_miolo =
  box {
    < -4.00, -4.00, 0.50>,
    < 4.00, 4.00, 2.15 >
    pigment { color Gray }
  }

#declare dif_teto_miolo =
  box {
    < -1.80, -1.80, 2.60 >
    < 1.80, 1.80, 2.75 >
    pigment { color Gray }
  }

#declare quad_miolo =
  box {
    < -0.15, -0.15, 2.50 >
    < 0.15, 0.15, 2.70 >
      pigment { color White }
  }


#declare miolo =
  union {
    difference {
      difference {
        difference {
          object {
            parte_miolo
            rotate < 90.00, 0.00, 0.00 >
            translate < 0.00, 0.00, 0.75 >
          }
          object {
            dif_miolo
          }
        }
        object {
          dif_miolo
          scale <1.00, 1.00, 2.00 >
          translate  < 0.00, 0.00, 1.75 >
        }
      }
      object {
        dif_teto_miolo
      }
    }
    object {
      quad_miolo
      translate  < -1.00, -1.40, 0.00 >
      rotate < 0.00, 0.00, 45.00 >
    }
    object {
      quad_miolo
      translate  < -1.00, -0.40, 0.00 >
    }
    object {
      quad_miolo
      translate  < -1.00, 0.40, 0.00 >
    }
    object {
      quad_miolo
      translate  < -1.00, 1.20, 0.00 >
    }
    object {
      quad_miolo
      translate  < 1.00, -1.50, 0.00 >
      rotate < 0.00, 0.00, -60.00 >
    }
    object {
      quad_miolo
      translate  < 1.00, -0.40, 0.00 >
    }
    object {
      quad_miolo
      translate  < 1.00, 0.40, 0.00 >
    }
    object {
      quad_miolo
      translate  < 1.00, 1.20, 0.00 >
    }
  }

#declare monumento =
  union {
    object {
      parte_predio
      translate < 0.00, -4.50, 0.50 >
    }
    object {
      parte_predio
      translate < 0.00, 4.50, 0.50 >
    }
    object {
    miolo
     translate < 0.00, 0.00, 0.65 >
    }
 }


// PAVIMENTO

#declare pavimento =
  plane {z,0
    texture {
      pigment {
        color < 0.00, 1.00, 0.00 >
      }
      finish {
        ambient 0.10
        diffuse 0.90
      }
      normal {
        granite 0.50
      }
    }
    scale 10
  }


// FUNDO

background{ color rgb < 0.90, 0.92, 0.95 > }

// EIXOS

#declare eixos_cartesianos =
  union {
    cylinder { <-10,0,0>, <10,0,0>, 0.05 pigment { color rgb <1,0,0> } }
    cylinder { <0,-10,0>, <0,10,0>, 0.05 pigment { color rgb <0,1,0> } }
    cylinder { <0.00,0.00,-10>, <0.00,0.00,10>, 0.05 pigment { color rgb <0,0,1> } }
  }

//object { eixos_cartesianos }
object { pavimento }
object { monumento }

// CaMeRA

#declare centro_da_cena = centro_do_monumento;
#declare raio_da_cena = 5.0;
#declare direcao_da_camera = vnormalize( < 2.00, 2.00, 1.00 > );

#declare dist_da_camera = 6.0 * raio_da_cena
#declare pos_da_camera = centro_da_cena + dist_da_camera * direcao_da_camera;
camera {
  location  pos_da_camera
  right     <  -0.64,  0.00,  0.00 >
  up        <   0.00,  0.48,  0.00 >
  sky       z
  look_at   centro_da_cena
}

// ILUMINAÇÃO

#declare direcao_da_luz = vrotate(direcao_da_camera, < 10, 10, 10 >);
#declare intens_da_luz = 3.00;

light_source {
  //< 2.00, 2.00, 10.00 >
  20 * raio_da_cena * direcao_da_luz
  color rgb intens_da_luz * < 1, 1, 1 >
}