File: drums.inc

package info (click to toggle)
povray 1%3A3.7.0.10-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 147,232 kB
  • sloc: cpp: 845,011; ansic: 122,118; sh: 34,204; pascal: 6,420; asm: 3,355; ada: 1,681; makefile: 1,389; cs: 879; awk: 590; perl: 245; xml: 95
file content (238 lines) | stat: -rw-r--r-- 5,547 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
// This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
// To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a
// letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.

// Persistence Of Vision raytracer sample file.
// Include file for DRUMS.POV by Dan Farmer

// Updated: 09Aug2008 (jh) for v3.7 distribution

#declare Brass = colour red 0.88 green 0.84 blue 0.10;
#declare ChromeBlue = colour red 0.84 green 0.89 blue 1.00;

#declare BrassFinish = finish {
   reflection 0.15
   brilliance 10.0
   metallic
   phong 0.75
   phong_size 50
}

#declare Chrome = finish { Mirror }

#declare VeryShiny = finish {
   ambient 0.05  diffuse 0.75
   phong 1.0
   phong_size 100.0
   brilliance 5
   reflection 0.5
}

// The old Disk_X definition
#declare Disk_X = cylinder { <0, 0, 0>, <1, 0, 0>, 1 }

#declare X_Tube = difference {
   cylinder { -x, x, 1.0 }
   cylinder { -1.1*x, 1.1*x, 0.97 }
}

#declare Cymbal = union {            /* Overall radius of 6 units */
   sphere {                             /* Dome */
      <0, 0, 0>, 1
      scale <2.0, 0.75, 2.0>
      translate 1*y
   }
   sphere {
      <0, 0, 0>, 1
      scale <6.0, 1.0, 6.0>
   }

   finish { BrassFinish }
   pigment { Brass }

   clipped_by { plane { y, 0.25 inverse } }
}

#declare Tensioner1 =  union {
   object {
      Disk_X
      translate -0.5*x
      scale <0.5, 0.04, 0.02>
   }

   intersection {
      sphere { <0, 0, 0>, 1 scale <0.25, 0.1, 0.06> }
      plane { x, 0 }
   }

}

#declare Tensioner = union {
   object { Tensioner1 translate 0.5*x }
   object { Tensioner1 rotate 180*z translate -0.5*x }

   translate 1.03*z        /* Position for rotation around drum cylinder */

   finish { Chrome }
   pigment { ChromeBlue }
}


#declare Drum = union {
   sphere {                                       /* Top (and rear) Drumhead */
      <0, 0, 0>, 1
      scale <0.001, 1.0, 1.0>
      translate 0.75*x

      finish {
         ambient 0.1
         diffuse 0.7
         specular 0.2
         roughness 0.01
      }
      pigment { White }
   }

   object {                                       /* Chrome edge band #1 */
      X_Tube
      scale <0.05, 1.025, 1.0>
      translate -0.8*x

      texture {
         finish { Chrome }
         pigment { ChromeBlue }
      }
   }

   intersection {                         /* Drum body */
      cylinder {
         -1.1*x, 1.1*x, 1.0

         finish { VeryShiny }
         pigment { White }
      }

      cylinder {
         -1.1*x, 1.1*x, 0.97         /* Inside of the drum cylinder */
         inverse

         pigment { Tan }
         finish {
            ambient 0.05
            diffuse 0.5
         }
      }

      box { <-1, -1, -1>, <1, 1, 1>
          finish { Chrome }
          pigment { ChromeBlue }
      }


      scale <0.8, 1.0, 1.0>
   }

   object {                                       /* Chrome edge band #2 */
      X_Tube
      scale <0.05, 1.025, 1.0>
      translate 0.8*x
      texture {
         finish { Chrome }
         pigment { ChromeBlue }
      }
   }

   /* Now a bunch of (10) tensioners */

   object { Tensioner rotate 000*x }
   object { Tensioner rotate 036*x }
   object { Tensioner rotate 072*x }
   object { Tensioner rotate 108*x }
   object { Tensioner rotate 144*x }
   object { Tensioner rotate 180*x }
   object { Tensioner rotate 216*x }
   object { Tensioner rotate 252*x }
   object { Tensioner rotate 288*x }
   object { Tensioner rotate 324*x }

}

#declare BassDrum = union {
   object { Drum }

   sphere {             /* Front Drumhead for Bass */
      <0, 0, 0>, 1
      scale <0.001, 1.0, 1.0>
      translate -0.75*x

      finish {
         ambient 0.2
         diffuse 0.7
         specular 0.5
         roughness 0.05
      }
      pigment { White filter 0.25 }
   }

   scale <8.0, 10.0, 10.0>
}

/********************** not used at this time
#declare SnareDrum = object {
    Drum
    rotate 90.0*z
    scale <5.0, 4.0, 5.0>
}
***********************/

#declare TomTom = object {
   Drum
   rotate 90.0*z
   scale <5.0, 5.0, 5.0>
}

/* Combine a base and a pair of tomtoms into a half-set */
/* Object is still centered at 0,0 at this point */
#declare HalfSet = union {
   object {              /* Right bass  */
      BassDrum
      rotate -90.0*y     /* Turn it on its end */
   }

   object {
      TomTom
      rotate +30.0*x                   /* Lean it towards drummer */
      translate 16.0*y                 /* Raise it up */
      translate -7.0*x                 /* Move it left */
   }

   object {
      TomTom
      rotate +30.0*x                   /* Lean it towards drummer */
      translate 16.0*y                 /* Raise it up */
      translate +7.0*x                 /* Move it right */
   }

   union {         /* tomtom bracket */
      object {
         Disk_X                         /* Horizontal bar */
         translate -0.5*x
         scale <4, 0.25, 0.25>          /* Fits between tomtoms */
         translate 16.0*y               /* Raise to top of vertical bar*/
      }

      sphere { <0, 0, 0>, 1 translate <-4, 16, 0> scale <0.5, 1, 1> }
      sphere { <0, 0, 0>, 1 translate < 4, 16, 0> scale <0.5, 1, 1> }

      object {                   /* Vertical bar */
         Disk_Y
         scale <0.30, 6.0, 0.30>
         translate <0.0, 10.0, 0.0>
      }

      sphere { <0, 0, 0>, 1 scale <1.25, 0.5, 1.25> translate 10*y }
   }

   finish { Mirror }
   pigment { White }
}