// Last edited on DATE TIME by USER
// Processed by remove-cam-lights
#include "colors.inc"
#include "golds.inc"
  
 

background { color rgb<0.3, 0.5, 0.8>  }

plane { <0, 1, 0>, -1
    pigment {
      checker color Black, color White
    }
  }  
  
 
 

 
  

#declare ponta =
  lathe {
    
    quadratic_spline
    15,
    <0.35, 0.00>, 
    <1.55, 1.40>, 
    <2.10, 1.70>, 
    <2.50, 2.40>, 
    <3.25, 3.00>, 
    <4.70, 3.25>, 
    <5.25, 3.45>, 
    <5.95, 3.47>, 
    <5.45, 3.50>, 
    <4.95, 3.33>, 
    <3.50, 3.25>, 
    <2.75, 2.90>, 
    <2.35, 2.50>, 
    <1.80, 1.65>, 
    <0.6, 0.00>  
  }
  
#declare ponta2 =
  lathe {
    quadratic_spline
    9,
    <0.00, 0.00>, 
    <1.55, 1.40>, 
    <2.10, 1.70>, 
    <2.50, 2.40>, 
    <3.25, 3.00>, 
    <4.70, 3.25>, 
    <5.25, 3.45>, 
    <5.95, 3.47>, 
    <0.00, 3.47>  
  }
    

#declare primeiro_tubo = 
   cylinder {
        <0.00, 0.00, 0.00>, <0.00, -30.00, 0.00>, 1.00
   }

#declare primeiro_tubo_curvado =
   difference {
        torus {
                2.0, 1.0
        }
        box {
                <-30.0, -10.0, 0.00>, <30, 10, 30.0>
        }     
   }
   

#declare segundo_tubo =
   cylinder {
        <0.00, 0.00, 0.00>, <0.00, -24.00, 0.00>, 1.00
   }
   
   

#declare soprador = 
   difference{
        sphere {
                <0.00, 0.00, 0.00>, 2.00
        }
        box {
                <10.00, 0.00, 10.00>, <-10.00, -10.00, -10.00>
        }
   }

#declare botoes =
   union {
        
        cylinder {
                <0.00, 0.00, 0.00>, <0.00, 8.00, 0.00>, 0.80
        }
        cylinder {
                <-3.00, 0.00, 0.00>, <-3.00, 8.00, 0.00>, 0.8
        }
        cylinder {
                <3.00, 0.00, 0.00>, <3.00, 8.00, 0.00>, 0.8
        }
        
        
        cylinder {
                <0.00, 0.00, 0.00>, <0.00, -2.00, 0.00>, 0.4
        }
        cylinder {
                <-3.00, 0.00, 0.00>, <-3.00, -2.00, 0.00>, 0.4
        }
        cylinder {
                <3.00, 0.00, 0.00>, <3.00, -2.00, 0.00>, 0.4
        }
        
        
        cylinder {
                <0.00, -1.20, 0.00>, <0.00, -2.00, 0.00>, 0.8
        }
        cylinder {
                <-3.00, -1.20, 0.00>, <-3.00, -2.00, 0.00>, 0.8
        }
        cylinder {
                <3.00, -1.20, 0.00>, <3.00, -2.00, 0.00>, 0.8
        }
   }

  
  

declare caixa1 = 
object{
    prism {
      linear_sweep
      quadratic_spline
      0, 
      10, 
      6,
      <1,20>,<0,0>, <40,0>, <50,24>, <10,24>, <0,0>  
      pigment { Blue }
      rotate <0.00, 0.00, -90.00>
      rotate <0.00, -90.00, 0.00>
      translate <10.00, 12.00, -0.25>
    }
  }
  
declare caixa2 = 
object{
    prism {
      linear_sweep
      quadratic_spline
      0, 
      10, 
      6,
      <1,20>, <0,0>, <40,0>, <50,24>, <10,24>, <0,0>  
      pigment { Blue }
      rotate <0.00, 0.00, -90.00>
      rotate <0.00, -90.00, 0.00>
      translate <10.00, 12.00, -10.25>
    }
  }

#declare trompete =
union{
  object{ponta scale <1.8, 1.8, 1.6> }
  object{primeiro_tubo}
  object{primeiro_tubo_curvado rotate < -90.0, 0.0, 0.0 > translate < -2.0, -30.0, 0.0 > }
  object{segundo_tubo translate < -4.0, -6.00, 0.00 >}
  object{primeiro_tubo_curvado rotate < 90.0, -45.0, 0.0 > translate < -2.4, -6.0, 1.4 > }
  object{primeiro_tubo translate < -1.00, -6.00, 2.80 >}
  object{soprador translate < -1.00, -36.00, 2.80 >}
  object{botoes rotate <0.00, 0.00, 90.00> translate < 3.00, -15.00, 0.00>}
}

#declare caixa_baixo =
  difference {
        object { caixa1 }
        object { trompete }
  }
  
#declare caixa_alto =
  difference {
        object { caixa2 }
        object { trompete }
  }

#declare cena =
        union{
                object{ trompete 
                        texture { T_Gold_2A }
                        
                }
                object{ caixa_baixo translate < 0.00, 0.00, 12.00 > }
                object{ caixa_alto translate < 0.00, 0.00, -12.00 > rotate <0.00, -90.00, 0.00> }
        }
        
        
union{
 object{cena rotate < 90.00, -60.00, 0.00 > translate <0.00, 16.00, 0.00>}
 }

  

// Original camera parameters:
// #local cam_ctr = <2,28,0>
// #local cam_vec = (<-50,100,-10>-<2,28,0>)
// #local cam_sky = y

#include "camlight.inc"
camlight(<2,28,0>,<10,10,10>,20.0,y,1.0)