920a1d57920e571f56614f0c13f8f6c739474b6a
[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 // -w1600 -h1280 +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(KNOB_VIEW=1)
54   camera { orthographic location -z*3.3 look_at 0 }
55 #else
56         camera { location <+1.6,-1,-4> look_at 0 }
57 //  camera { orthographic location -x*5 look_at 0 }
58 #end
59
60 plane {
61   z, 0.01
62   hollow on
63 #if(KNOB_VIEW=1)
64   pigment {BACKGROUND}
65 #else
66   texture { chrome }
67 #end
68 }
69
70 light_source { <-60, 80, -500> color Gray85}
71 light_source { <50,  10, -900> color Gray65}
72
73 #declare zyl=0;
74
75 union {
76         difference {
77                 intersection {
78                         union {
79                                 cylinder {<0,0,0>,<0,0,-knob_height>,1}
80
81 #declare w=0.2;
82 #declare h=2.2;
83
84 #declare A = 0;
85 #while (A<9)
86                                 box {
87                                         <-w/2,-h/2,0>,<w/2,h/2,-knob_height>
88                                         rotate z*(A*20)
89                                 }
90 #declare A=A+1;
91 #end
92                         }
93
94                         sphere {
95                                 <0,0,0>,knob_height
96                         }
97                 
98                 }
99 #if(zyl=1)              
100                 cylinder {<0,0,0>,<0,0,-2*knob_height>,0.75}
101 #end
102                 
103                 texture { silver }
104         }
105
106         difference {
107                 cylinder {<0,0,0>,<0,0,-knob_height>,0.9}
108                 cylinder {<0,0,-1>,<0,0,-knob_height-1>,0.75}
109                 texture { silver }
110         }
111
112 #if(zyl=1)
113         intersection {
114 #if(1=1)        
115                 cylinder {<0,-1,-.7>,<0,1,-.7>,1.3}
116 #else
117                 union {
118 #declare A = 0;
119 #while (A<9)
120                         torus {
121                                 A*0.1, 0.1
122                                 rotate -90*x
123                                 translate <0,0,-knob_height*0.8>
124                         }
125 #declare A=A+1;
126 #end
127                 }
128 #end
129                 cylinder {<0,0,0>,<0,0,-2*knob_height>,0.75}
130                 texture { silver }
131         }
132 #end
133   
134         box {
135                 <-0.1,0,0>,<0.1,1.1,-knob_height-.01>
136                 texture {orange_plastic}
137         }
138
139         rotate z*ROT_ANGLE
140         MASKOPTION
141 }
142
143 difference {
144         cylinder {
145                 <0,0,0>,<0,0,-0.005>,1.5
146         }
147         
148         cone {
149                 <0, 0, 0>, 0    // Center and radius of one end
150                 <0, -1.5, 0>, 0.85    // Center and radius of other end
151         }
152         
153         texture {black_plastic} 
154 }
155
156 union {
157 #declare tiny_height=0.25;
158 #declare tiny_width=0.1;
159
160 #declare big_height=0.3;
161 #declare big_width=0.2;
162
163 #declare A = 1;
164 #while (A<16)
165         box {
166 #if((A=1) | (A=8) | (A=15))
167                 <-big_width/2,-big_height/2,-0.01>,<big_width/2,big_height/2,-0.01>
168 #else
169                 <-tiny_width/2,-tiny_height/2,-0.01>,<tiny_width/2,tiny_height/2,-0.01>
170 #end
171                 translate <0,1.3,0>
172                 rotate z*(A*20+20+180)
173         }
174 #declare A=A+1;
175 #end
176                 texture {white_plastic} 
177 }