// Parte 3 do Trabalho de Laboratorio 1
// Feito em 28/09/2000 por Marilia Goulart Honorio (971259)

background{ color rgb < 1.00, 1.00, 1.00 > }

light_source {
  < 20.00, 20.00, 20.00 >
  color rgb < 1.00, 1.00, 1.00 >
} 

camera {
  location  < 20.00, 15.00, 10.00 >
  right     < 2.40, 0.00, 0.00 >
  up        < 0.00, 0.00, 1.80 >
  sky       < 0.00, 0.00, 1.00 >
  look_at   < 9.00, 4.00, 2.50 >
}

#declare White = rgb <1,1,1>;
#declare Blue = rgb <0,0,1>;
#declare DarkGray = rgb <0.45,0.45,0.45>;
#declare Green = rgb <0,1,0>;
#declare Red = rgb <1,0,0>;
#declare LightGray = rgb <0.97,0.97,0.97>;
#declare Black = rgb <0,0,0>;


#declare tintaAzul =
  texture {
    pigment { color Blue }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }

#declare tintaVerde =
  texture {
    pigment { color Green }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }

#declare tintaPreta =
  texture {
    pigment { color Black }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }

#declare tintaVermelha =
  texture {
    pigment { color Red }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }

#declare tintaBranca =
  texture {
    pigment { color White }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }

#declare tintaCinzaClara =
  texture {
    pigment { color LightGray }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }

#declare tintaCinzaEscura =
  texture {
    pigment { color DarkGray }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }

#declare corpo =
  box {
    <18, 8, 0>,
    <0, 0, 3>
    texture { tintaAzul }
  }

#declare roda =
  cylinder {
    <16, 0, 2>,     // Center of one end
    <16, 1, 2>,     // Center of other end
    2            // Radius
    texture { tintaPreta }
  }

#declare hasteGrande =
  cylinder {
    <9, 4, 5>,     // Center of one end
    <9, 4, 6.5>,     // Center of other end
    1            // Radius
    texture { tintaCinzaEscura }
  }

#declare hastePequena =
  cylinder {
    <9, 4, 6.5>,     // Center of one end
    <9, 4, 7.75>,     // Center of other end
    0.5            // Radius
    texture { tintaCinzaEscura }
  }

#declare pa =
  box {
    <5.5, 1, 7.75>,
    <0, 0, 8>
    texture { tintaCinzaClara }
  }

#declare vidroLateral =
  box {
    <16.5, 8, 3.5>,
    <1.5, 8, 4.5>
    texture { tintaBranca }
  }

#declare vidro =
  box {
    <0,7,3.5>,
    <0,1,4.5>
    texture { tintaBranca }
  }



// Aqui está a cena, finalmente:


object { corpo
         translate <0, 0, 2>
       }

difference { object { roda
                      translate <0, 7, 0>
                    }
             object { corpo
                      translate <0, 0, 2>
                    }
           }

difference { object { roda
                    }
             object { corpo
                      translate <0, 0, 2>
                    }
           }

difference { object { roda
                      translate <-14, 0, 0>
                    }
             object { corpo
                      translate <0, 0, 2>
                    }
           }

difference { object { roda
                      translate <-14, 7, 0>
                    }
             object { corpo
                      translate <0, 0, 2>
                    }
           }

object { hasteGrande
       }
object { hastePequena
       }

object { pa
         translate <9, 3.5, 0>
       }

object { pa
         translate <3.5, 3.5, 0>
       }

object { pa
         rotate <0, 0, 90>
         translate <9.5, 3.5, 0>
       }

object { pa
         rotate <0, 0, 90>
         translate <9.5, -1.0, 0>
       }

object { vidroLateral }

object { vidro }

object { vidro
         translate <18,0,0>
       }