Initial checkin - Alex
[terminatorX.git] / knob / tX_knob.pov
1 // terminatorX - realtime audio scratching software
2 // Copyright (C) 1999-2004  Alexander K├Ânig <alex@lisas.de>
3 //
4 // This program is free software; you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation; either version 2 of the License, or
7 // (at your option) any later version.
8
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 // GNU General Public License for more details.
13
14 // You should have received a copy of the GNU General Public License
15 // along with this program; if not, write to the Free Software
16 // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 // 
18 // This is a povray scene that renders a knob for the terminatorX user
19 // interface.
20
21 // -w320 -h240 -icon
22 // -w800 -h600 +a0.3
23
24 #include "colors.inc"
25 #include "metals.inc"
26 #include "textures.inc"
27
28 global_settings { assumed_gamma 2.2 }
29
30 #declare chrome = texture { T_Chrome_2E }
31 #declare silver = texture { Silver_Metal }
32
33 #declare knob_height=2;
34
35 #declare black_plastic =
36 texture {
37     pigment { color rgb <0, 0, 0> }
38     finish {ambient 0.1 diffuse 0.8 phong 0.5 phong_size 100 }
39 }
40
41 #declare orange_plastic =
42 texture {
43     pigment { color rgb <1, 0.2, 0> }
44     finish {ambient 0.1 diffuse 0.8 phong 0.5 phong_size 100 }
45 }
46
47 #declare white_plastic =
48 texture {
49     pigment { color rgb <1, 1, 1> }
50     finish {ambient 0.1 diffuse 0.8 phong 0.5 phong_size 100 }
51 }
52
53 #if(1=1)
54   camera { orthographic location -z*3.3 look_at 0 }
55 #else
56   camera { orthographic location -x*5 look_at 0 }
57 #end
58
59 plane {
60   z, 0.01
61   hollow on
62   pigment {BACKGROUND}
63 }
64
65 light_source { <-60, 80, -500> color Gray85}
66 light_source { <50,  10, -900> color Gray65}
67
68 #declare zyl=0;
69
70 union {
71         difference {
72                 intersection {
73                         union {
74                                 cylinder {<0,0,0>,<0,0,-knob_height>,1}
75
76 #declare w=0.2;
77 #declare h=2.2;
78
79 #declare A = 0;
80 #while (A<9)
81                                 box {
82                                         <-w/2,-h/2,0>,<w/2,h/2,-knob_height>
83                                         rotate z*(A*20)
84                                 }
85 #declare A=A+1;
86 #end
87                         }
88
89                         sphere {
90                                 <0,0,0>,knob_height
91                         }
92                 
93                 }
94 #if(zyl=1)              
95                 cylinder {<0,0,0>,<0,0,-2*knob_height>,0.75}
96 #end
97                 
98                 texture { silver }
99         }
100
101         difference {
102                 cylinder {<0,0,0>,<0,0,-knob_height>,0.9}
103                 cylinder {<0,0,-1>,<0,0,-knob_height-1>,0.75}
104                 texture { silver }
105         }
106
107 #if(zyl=1)
108         intersection {
109 #if(1=1)        
110                 cylinder {<0,-1,-.7>,<0,1,-.7>,1.3}
111 #else
112                 union {
113 #declare A = 0;
114 #while (A<9)
115                         torus {
116                                 A*0.1, 0.1
117                                 rotate -90*x
118                                 translate <0,0,-knob_height*0.8>
119                         }
120 #declare A=A+1;
121 #end
122                 }
123 #end
124                 cylinder {<0,0,0>,<0,0,-2*knob_height>,0.75}
125                 texture { silver }
126         }
127 #end
128   
129         box {
130                 <-0.1,0,0>,<0.1,1.1,-knob_height-.01>
131                 texture {orange_plastic}
132         }
133
134         rotate z*ROT_ANGLE
135         MASKOPTION
136 }
137
138 difference {
139         cylinder {
140                 <0,0,0>,<0,0,-0.005>,1.5
141         }
142         
143         cone {
144                 <0, 0, 0>, 0    // Center and radius of one end
145                 <0, -1.5, 0>, 0.85    // Center and radius of other end
146         }
147         
148         texture {black_plastic} 
149 }
150
151 union {
152 #declare tiny_height=0.25;
153 #declare tiny_width=0.1;
154
155 #declare big_height=0.3;
156 #declare big_width=0.2;
157
158 #declare A = 1;
159 #while (A<16)
160         box {
161 #if((A=1) | (A=8) | (A=15))
162                 <-big_width/2,-big_height/2,-0.01>,<big_width/2,big_height/2,-0.01>
163 #else
164                 <-tiny_width/2,-tiny_height/2,-0.01>,<tiny_width/2,tiny_height/2,-0.01>
165 #end
166                 translate <0,1.3,0>
167                 rotate z*(A*20+20+180)
168         }
169 #declare A=A+1;
170 #end
171                 texture {white_plastic} 
172 }