// Cores

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

#declare vermelho =
  texture {
    pigment { color rgb < 1.00, 0.00, 0.00 > }
  }
  
#declare verde =
  texture {
    pigment { color rgb < 0.00, 1.00, 0.00 > }
  }
  
#declare azul =
  texture {
    pigment { color rgb < 0.00, 0.00, 1.00 > }
  }
  
#declare cinza =
  texture {
    pigment { color rgb < 0.33, 0.33, 0.33 > }
  }
  
#declare Metallic_Finish =
  finish {
    metallic
    ambient 0.1
    diffuse 0.65
    specular 0.85
    roughness 0.01
    reflection 0.45
    brilliance 1.5
  }

#declare Aluminum =
  texture {
    pigment { rgb <0.55, 0.5, 0.45> }
    finish { Metallic_Finish }
  }
  
#declare Starfield =
  texture {
    pigment {
      granite
      color_map {
	[0.72 rgb 0.00]
	[0.72 rgb 0.20]
	[0.75 rgb 0.40]
	[0.78 rgb 0.60]
	[0.81 rgb 0.80]
	[0.85 rgb 0.95]
	[0.91 rgb 1.00]
	[0.91 rgb 0.00]
      }
      scale 0.015
    }
    finish { ambient 1 }
  }

// Descricao da cena

#include "eixos.inc"

#macro obra(texto)

  text {
    ttf "arial.ttf" texto 0.15, 0.00
    texture { cinza }
    rotate 180 * z
    rotate -90 * x
  }

#end

#macro pedQuadrado(altura, larY, compX, textura)

  union {
    
    box {
      <0.00, 0.00, 0.00>,
      <compX, larY, altura>
      texture { textura }
    }
    
    box {
      <-0.10, -0.10, 0.00>,
      <compX + 0.10, larY + 0.10, 0.10>
      texture { textura }
    }
    
    box {
      <-0.05, -0.05, 0.10>,
      <compX + 0.05, larY + 0.05, 0.20>
      texture { textura }
    }
    
    box {
      <-0.10, -0.10, altura>,
      <0.10 + compX, 0.10 + larY, altura - 0.10>
      texture { textura }
    }
    
  }
  
#end

#macro pedWelcome()

  union {
  
    cylinder {
      <2.50, 0.05, 2.80>,
      <2.50, 0.05, 3.00>,
      0.30
      texture { Aluminum }
    }
    
    cylinder {
      <2.50, 0.05, 0.00>,
      <2.50, 0.05, 0.20>,
      0.35
      texture { Aluminum }
    }
    
    cylinder {
      <2.50, 0.05, 0.00>,
      <2.50, 0.05, 0.10>,
      0.40
      texture { Aluminum }
    }
    
    cylinder {
      <2.50, 0.05, 0.00>,
      <2.50, 0.05, 3.00 >,
      0.25
      texture { Aluminum }
    }
  
    box {
      <5.00, 0.00, 3.00>,
      <0.00, 0.10, 4.00>
      texture { Aluminum }
    }
  }

#end

union {
  object { eixos( 3.00 ) }
  union {
    object { pedQuadrado(2.00, 1.00, 1.00, Starfield) }
    object { 
      obra("Penso,")
      translate 5.00 * z
      translate 2.00 * x
      rotate -45 * z
      scale 0.50
    }
    object {
      obra("logo existo.")
      translate 4.20 * z
      translate 3.00 * x
      rotate -45 * z
      scale 0.50
    }
    translate 1.00 * y
  }
  
  difference {
    object { pedWelcome() }
    object { 
      obra("Welcome") 
      translate 4.50 * x
      translate 3.10 * z
    }
    rotate -45 * z
    translate 3.00 * y
    translate 1.00 * x
  }
  
}

#include "camlight.inc"
#declare centro_cena = < 0.00, 0.00, 0.00 >;
#declare raio_cena = 10.00;
#declare dir_camera = < 7.00, 14.00, 4.00 >;
#declare dist_camera = 10.00;
#declare intens_luz = 1.00;
camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)