// // kurpitsa-ani-2 // // POVRAY (3.1) model of Viestikallio Kurpitsa, v.1 by OH2MQK on 9-May-2002 // // Commandline to use to do the animation: // // povray +Ikurpitsa-ani-2.pov +KC +UL +UV +W800 +H600 -V +D +A +FP +Okurpitsa-ani-2.ppm +KI0.0 +KF0.71 +KFI0 +KFF7 // // And then ImageMagic's convert: // // convert -loop 0 -delay 200 kurpitsa-ani-2?.ppm kurpitsa-ani-2.gif // #declare XlucentGray = texture { pigment { color rgbf < 1 1 1 0.75> } finish { ambient 0.3 specular 0.1 roughness 0.03125 } } #declare XlucentGray2 = texture { pigment { color rgbf < 1 1 1 0.75> } finish { ambient 0.6 specular 0.1 roughness 0.03125 } } #declare SolidWhite = texture { pigment { color rgbf < 1 1 1 0> } finish { ambient 0.3 specular 0.5 roughness 0.078125 } } #declare SolidRed = texture { pigment { color rgbf < 1 0 0 0> } finish { ambient 0.4 specular 0.5 roughness 0.078125 } } #declare SolidGreen = texture { pigment { color rgbf < 0 1 0 0> } finish { ambient 0.3 specular 0.5 roughness 0.078125 } } #declare SolidBlue = texture { pigment { color rgbf < 0 0 1 0> } finish { ambient 0.3 specular 0.5 roughness 0.078125 } } #declare SolidYellow = texture { pigment { color rgbf < 1 1 0 0> } finish { ambient 0.3 specular 0.5 roughness 0.078125 } } #declare SolidRed2 = texture { pigment { color rgbf < 0.8 0 0 0> } finish { ambient 0.8 specular 0.5 roughness 0.078125 } } #declare XlucentRed2 = texture { pigment { color rgbf < 0.8 0 0 0.0> } finish { ambient 0.7 specular 0.502 roughness 0.03125 } } global_settings { assumed_gamma 1.3 } camera { // orthographic location <160, 80, 80> look_at <0, 8, 0> angle 15 } union { // -------------------- long wrapper for animation rotation ---------------- light_source { <-400, 400, -400> color rgb <1,1,1> } height_field { pgm "kurpitsa-ani-hf.pgm" // smooth texture { SolidWhite } scale <40, 10, 40> translate <-20, -3.5, -20> } // Foundation blocks union { cylinder {<-4.94, 0.0, -6.80>, <-4.94, -3.0, -6.80>, 0.3 } cylinder {< 0.00, 0.0, -8.40>, < 0.00, -3.0, -8.40>, 0.3 } cylinder {< 4.94, 0.0, -6.80>, < 4.94, -3.0, -6.80>, 0.3 } cylinder {< 8.00, 0.0, -2.60>, < 8.00, -3.0, -2.60>, 0.3 } cylinder {< 8.00, 0.0, 2.60>, < 8.00, -3.0, 2.60>, 0.3 } cylinder {< 4.94, 0.0, 6.80>, < 4.94, -3.0, 6.80>, 0.3 } cylinder {< 0.00, 0.0, 8.40>, < 0.00, -3.0, 8.40>, 0.3 } cylinder {<-4.94, 0.0, 6.80>, <-4.94, -3.0, 6.80>, 0.3 } cylinder {<-8.00, 0.0, 2.60>, <-8.00, -3.0, 2.60>, 0.3 } cylinder {<-8.00, 0.0, -2.60>, <-8.00, -3.0, -2.60>, 0.3 } texture { SolidGreen } } // foundation walls union { box { <-10.0, -3, -9.2>, <-9.8, -0.2, 9.2> } box { <-10.0, -3, -9.2>, < 9.0, -0.2, -8.8> } box { < 8.8, -3, -9.2>, < 9.0, -0.2, 9.2> } box { <-10.0, -3, 8.8>, < 9.0, -0.2, 9.2> } box { <-10.0, -3, -3.2>, < 9.0, -0.2, -2.8> } box { <-10.0, -3, 3.2>, < 9.0, -0.2, 2.8> } #if (clock >= 0.6) box { <-10.0, -3, -20 >, < 9.0, -0.2, -9.0> } box { <-10.0, -3, 9.0>, < 9.0, -0.2, 15.0> } #end texture { SolidGreen } } // #if (clock >= 0.1) // Base pillar for telescope cylinder { <0, -3, 0>, <0, 9.9, 0>, 1.25 texture { SolidRed } } // #end // Base slab for the building difference { union { //#if (clock >= 0.1) //cylinder { // <0, -0.3, 0>, // <0, 0, 0>, // 8.5 // texture { SolidYellow } //} //#end #if (clock >= 0.1) box { <-10, -.3, -9>, <9, 0, 9> texture { SolidYellow } } #end #if (clock >= 0.6) box { <-10, -.3, -20>, <9, 0, 15> texture { SolidYellow } } #end } // and the hole: cylinder { <0, -3, 0>, <0, 3, 0>, 2 } } // Wall trusses #if (clock >= 0.2) #if (clock < 0.3) union { difference { cylinder { <0, 4.8, 0>, <0, 5.0, 0>, 8.5 } cylinder { <0, 4.8, 0>, <0, 5.0, 0>, 8.3 open } } difference { cylinder { <0, 0.0, 0>, <0, 0.2, 0>, 8.5 } cylinder { <0, 0.0, 0>, <0, 0.2, 0>, 8.3 open } } cylinder {<-4.94, 0.0, -6.80>, <-4.94, 4.8, -6.80>, 0.1 } cylinder {<-4.94, 0.0, -6.80>, <0.00, 4.8, -8.40>, 0.1 } cylinder {< 0.00, 0.0, -8.40>, < 0.00, 4.8, -8.40>, 0.1 } cylinder {< 4.94, 0.0, -6.80>, < 4.94, 4.8, -6.80>, 0.1 } cylinder {< 8.00, 0.0, -2.60>, < 4.94, 4.8, -6.00>, 0.1 } cylinder {< 8.00, 0.0, -2.60>, < 8.00, 4.8, -2.60>, 0.1 } // Door aperture cylinder {< 8.00, 0.0, 2.60>, < 8.00, 4.8, 2.60>, 0.1 } cylinder {<8.00, 0.0, 2.60>, < 4.94, 4.8, 6.80>, 0.1 } cylinder {< 4.94, 0.0, 6.80>, < 4.94, 4.8, 6.80>, 0.1 } cylinder {< 0.00, 0.0, 8.40>, < 0.00, 4.8, 8.40>, 0.1 } cylinder {<-4.94, 0.0, 6.80>, <0.00, 4.8, 8.40>, 0.1 } cylinder {<-4.94, 0.0, 6.80>, <-4.94, 4.8, 6.80>, 0.1 } cylinder {<-8.00, 0.0, 2.60>, <-8.00, 4.8, 2.60>, 0.1 } cylinder {<-8.00, 0.0, 2.60>, <-8.00, 4.8, -2.60>, 0.1 } cylinder {<-8.00, 0.0, -2.60>, <-8.00, 4.8, -2.60>, 0.1 } texture { SolidGreen } } #end #end // Door #if (clock >= 0.3) box { <7.9, 0, -2>, <9.1, 3, 2> texture { SolidBlue } } #end // Cylinderical walls #if (clock >= 0.3) difference { cylinder { <0, 0, 0>, <0, 5, 0>, 8.5 } cylinder { <0, 0, 0>, <0, 5, 0>, 8.3 open } texture { SolidGreen } } #end // Telescope and radome center lifted to 11.9 meters. #if (clock >= 0.4) // Telescope object { union { union { lathe { linear_spline 17, <0.4, 0.0>, <1.7, 0.25>, <2.8, 0.47>, <3.8, 0.8>, <5.1, 1.4>, // 5 <6.4, 2.1>, <6.9, 2.6>, <6.9, 2.5>, <6.4, 2.0>, <5.1, 0.3>, // 10 <1.8, -1.6>, <1.8, -1.8>, <1.6, -1.8>, <1.6, -1.6>, <0.5, -0.1>, // 15 <0.4, -0.1>, <0.4, 0.0> // 17 texture { SolidYellow } } lathe { linear_spline 4, <0.0, 5.8>, <0.6, 6.0>, <0.6, 6.2>, <0.0, 6.2> texture { SolidGreen } } translate <0, 3.2, 0> rotate <0-90, 0, 0> } box { <-1, -2, -1>, <1, 1, 1> texture { SolidGreen } } box { <-1, -2, 1>, <1, -1, 4> texture { SolidGreen } } // Spin the system around the AZ rotate <0, 155, 0> // rotate <0, 360*clock, 0> // Shift it up to the top of the pole translate <0, 11.9, 0> } } #end #if (clock >= 0.5) // Radome model; Translucent 0.20 thick surface difference { sphere { // Outer surface <0, 11.9, 0>, 10 } union { // Inner form to be extracted cylinder { <0,0,0>, <0,7,0>, 8.3 } sphere { <0, 11.9, 0>, 9.80 } } texture { XlucentGray } hollow } #end #if (clock >= 0.6) // Building difference { // Constructed thing // union { prism { linear_sweep linear_spline -15, 20, 6, <-10, 0>, <-10, 3>, <0, 5>, <8.6, 3>, <8.6, 0>, <-10, 0> rotate <-90, 0, 0> } //} // Thing to be extracted //union { difference { cylinder { <0, 0, 0>, <0, 5, 0>, 8.0 } union { box { <-9, -1, -9>, < 9, 6, -5> } // box { <-9, -1, -9>, <-5, 6, 9> } // box { <-9, -1, 9>, < 9, 6, 6> } // } } //} texture { XlucentRed2 } // TRANSLUCENT! } #end // rotate <0, 360*clock, 0> } // ------------------- end of animation rotation wrapper ---------------------