// Exemplo de arquivo de descricao de cena para POV-ray
// Last edited on 2003-10-22 04:15:44 by stolfi

global_settings { max_trace_level 10 }

// ======================================================================
// CÂMERA 

#declare ctr = < 30.00, 15.00, 10.00 >;
#declare camdir = < -50.00, 45.00, 10.00 >;

camera {
  location ctr + 1.00*camdir // Posição do observador.
  right     -1.00*x
  up        0.75*y
  sky z
  look_at ctr     // Para onde a câmera está apontando.
} 



// ======================================================================
// FONTES DE LUZ

light_source {
    100 * < -10.00, 12.00, 10.00 >               // Posição da lâmpada.
    color rgb 1.2*< 1.00, 1.00, 1.00 > // Intensidade e cor da luz.
} 

light_source {
    100 * < 15.00, 40.00, 50.00 >               // Posição da lâmpada.
    color rgb 0.7*< 1.00, 1.00, 1.00 > // Intensidade e cor da luz.
} 

light_source {
    100 * < -50.00, -12.00, 50.00 >                 // Posição da lâmpada.
    color rgb 0.4*< 1.00, 1.00, 1.00 > // Intensidade e cor da luz.
} 

// ======================================================================
// DESCRIÇÃO DA CENA 

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

#declare tinta_Verde = 
    texture {
        pigment { color rgb < 0.00, 1.00, 0.00 > }
        finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
    }

#declare tinta_Azul = 
    texture {
        pigment { color rgb < 0.00, 0.00, 1.00 > }
        finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
    }

#declare tinta_Vermelha = 
    texture {
        pigment { color rgb < 1.00, 0.00, 0.00 > }
        finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
    }

#declare tinta_Amarela = 
    texture {
        pigment { color rgb < 1.00, 1.00, 0.00 > }
        finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
    }

#declare transparente =
    texture {
        finish {
            ambient 0.1
            diffuse 0.1
            reflection 0.25
            specular 1
            roughness 0.001
        }
        pigment {
            color rgb < 0.60, 0.35, 0.98 >
            filter 1
        }
    }


#declare cor_espelho = < 0.40, 0.41, 0.40 > ;

#declare espelhado =
    texture {
        pigment {
            rgb cor_espelho
        }
        finish {
            ambient 0.05
            diffuse 0.05
            reflection cor_espelho
            specular 0.20
            roughness 0.05
        }
    }

#declare plano_xy =
    plane {
        < 0, 0, 1 >,
        0
    }

#declare coluna_vertical = 
  box {
    < 0.00, 0.00, 0.00 >,
    < 1.00, 1.00, 10.00 >
    texture { transparente }
  }

#declare coluna_horizontal1 = 
    box {
        < 0.00, 0.00, 0.00 >,
        < 1.00, 21.00, 1.00 >
        texture { transparente }
    }

#declare coluna_horizontal2 = 
    box {
        < 0.00, 0.00, 0.00 >,
        < 21.00, 1.00, 1.00 >
        texture { transparente }
    }

#declare torre1 =
union {
    cylinder {
        < 0.00, 0.00, 0.00 >
        < 0.00, 0.00, 15.00 >
        3.00
	pigment {
            brick rgb < 0.40, 0.43, 0.23 >, rgb < 0.73, 0.60, 0.31 >
            brick_size 3
        }
    }

    cone {
        < 0.00, 0.00, 15.00 >
        3.00
        < 0.00, 0.00, 17.00 >
        5.00
	pigment {
            brick rgb < 0.40, 0.43, 0.23 >, rgb < 0.73, 0.60, 0.31 >
            brick_size 3
        }
    }

    cone {
        < 0.00, 0.00, 17.00 >
        5.00
        < 0.00, 0.00, 19.00 >
        2.00
	pigment {
            brick rgb < 0.40, 0.43, 0.23 >, rgb < 0.73, 0.60, 0.31 >
            brick_size 3
        }
    }

    cylinder {
        < 0.00, 0.00, 19.00 >
        < 0.00, 0.00, 25.00 >
        2.00
	pigment {
            brick rgb < 0.40, 0.43, 0.23 >, rgb < 0.73, 0.60, 0.31 >
            brick_size 3
        }
    }

    cone {
        < 0.00, 0.00, 25.00 >
        2.00
        < 0.00, 0.00, 27.00 >
        4.00
	pigment {
            brick rgb < 0.40, 0.43, 0.23 >, rgb < 0.73, 0.60, 0.31 >
            brick_size 3
        }
    }

    cone {
        < 0.00, 0.00, 27.00 >
        4.00
        < 0.00, 0.00, 31.00 >
        0.00
        texture { espelhado }
    }
}

#declare torre2 =
union {
    cylinder {
        < 0.00, 0.00, 0.00 >
        < 0.00, 0.00, 23.00 >
        2.50
	pigment {
            brick rgb < 0.40, 0.43, 0.23 >, rgb < 0.73, 0.60, 0.31 >
            brick_size 3
        }
    }

    torus {
        4.00,
        1.50
	pigment {
            brick rgb < 0.40, 0.43, 0.23 >, rgb < 0.73, 0.60, 0.31 >
            brick_size 3
        }
        rotate < 90, 0, 0 >
        translate < 0, 0, 15 >
    }

    cone {
        < 0.00, 0.00, 23.00 >
        2.50
        < 0.00, 0.00, 25.00 >
        4.00
	pigment {
            brick rgb < 0.50, 0.50, 0.50 >, rgb < 0.10, 0.10, 0.10 >
            brick_size 3
        }
    }

    cone {
        < 0.00, 0.00, 25.00 >
        4.00
        < 0.00, 0.00, 29.00 >
        0.00
        texture { espelhado }
    }
}

#declare predio =
union {
    object {
       coluna_vertical
       translate < 10.00, 5.00, 0.00 >
    }

    object {
       coluna_vertical
       translate < 30.00, 5.00, 0.00 >
    }

    object {
       coluna_vertical
       translate < 10.00, 25.00, 0.00 >
    }

    object {
       coluna_vertical
       translate < 30.00, 25.00, 0.00 >
    }

    object {
       coluna_horizontal1
       translate < 10.00, 5.00, 10.00 >
    }

    object {
       coluna_horizontal1
       translate < 30.00, 5.00, 10.00 >
    }

    object {
       coluna_horizontal2
       translate < 10.00, 5.00, 10.00 >
    }

    object {
       coluna_horizontal2
       translate < 10.00, 25.00, 10.00 >
    }
}




// Aqui está a cena, finalmente:
union {
    object {
        plano_xy
	pigment {
            checker rgb < 0.70, 0.90, 0.90 >, < 0.80, 1.00, 1.00 >
            scale 4
        }
    }

    plane {
        < -1, 1, 0 >,
        -50
	pigment {
            checker rgb < 0.90, 0.70, 0.90 >, < 1.00, 0.85, 1.00 >
            // checker rgb < 1.00, 0.50, 0.70 >, < 0.80, 1.00, 0.60 >
            scale 4
        }
    }

    object {
        predio
        interior { ior 1.5 }
    }

    object {
       torre1
       translate < 20.00, 15.00, 0.00 >
    }

    object {
       torre2
       translate < 45.00, 32.00, 0.00 >
    }
}