chiark / gitweb /
c2421d1890439c13d22b91b858b27a3228292967
[dep-ui] / rolling.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
2           "http://www.w3c.org/TR/html4/strict.dtd">
3 <html>
4 <head>
5   <title>Rolling wire-strip calculator</title>
6   <script type="text/javascript" src="dep.js"></script>
7   <script type="text/javascript" src="dep-ui.js"></script>
8   <meta name=viewport content="width=device-width initial-scale=1.0">
9   <link rel=stylesheet type="text/css" href="dep-ui.css">
10   <link rel=stylesheet type="text/css" href="rolling.css">
11 <head>
12 <body>
13
14 <h1>Rolling wire-strip calculator</h1>
15
16 <div id=trace style="white-space: pre"></div>
17 <script type="text/javascript"><!--
18 --></script>
19
20 <table class=widgets>
21   <tr><td colspan=2><h3>Required size</h3>
22   <tr>
23     <td class=label><label for=width>Width: </label>
24     <td><input id=width>
25     <script type="text/javascript"><!--
26         var width = new DEP.Dep();
27         DEP_UI.input_field('width', width, DEP_UI.convert_to_numeric);
28     --></script>
29   <tr>
30     <td class=label><label for=thick>Thickness: </label>
31     <td><input id=thick>
32     <script type="text/javascript"><!--
33         var thick = new DEP.Dep();
34         DEP_UI.input_field('thick', thick, DEP_UI.convert_to_numeric);
35     --></script>
36   <tr>
37     <td class=label><label for=length>Length: </label>
38     <td><input id=length>
39     <script type="text/javascript"><!--
40         var length = new DEP.Dep();
41         DEP_UI.input_field('length', length, DEP_UI.convert_to_numeric);
42     --></script>
43
44   <tr><td colspan=2><h3>You should start with</h3>
45   <tr>
46     <td class=label><label for=sq-size>Square side: </label>
47     <td><input id=sq-size readonly>
48     <script type="text/javascript"><!--
49         var sq_size = new DEP.Dep(function () {
50           return Math.pow(Math.pow(width.value(), 2) * thick.value(), 1/3);
51         });
52         DEP_UI.output_field('sq-size', sq_size, DEP_UI.convert_from_numeric);
53     --></script>
54   <tr>
55     <td class=label><label for=rnd-diam>Round diameter: </label>
56     <td><input id=rnd-diam readonly>
57     <script type="text/javascript"><!--
58         var rnd_diam = new DEP.Dep(function () {
59           return 2*sq_size.value()/Math.sqrt(Math.PI);
60         });
61         DEP_UI.output_field('rnd-diam', rnd_diam,
62                             DEP_UI.convert_from_numeric);
63     --></script>
64   <tr>
65     <td class=label><label for=start-length>Length: </label>
66     <td><input id=start-length readonly>
67     <script type="text/javascript"><!--
68         var volume = new DEP.Dep(function () {
69           return width.value() * thick.value() * length.value();
70         });
71         volume.name = 'volume';
72         var start_length = new DEP.Dep(function () {
73           return volume.value()/(Math.pow(sq_size.value(), 2));
74         });
75         DEP_UI.output_field('start-length', start_length,
76                             DEP_UI.convert_from_numeric);
77     --></script>
78
79   <tr><td colspan=2><h3>Initial stock</h3>
80   <tr><td colspan=2>
81     <input type=radio name=stock-type value=round id=stock-round checked>
82     <label for=stock-round>Round section</label>
83     <script type="text/javascript"><!--
84         var stock_type = new DEP.Dep();
85         DEP_UI.input_radio('stock-round', stock_type);
86     --></script>
87   <tr><td colspan=2>
88     <input type=radio name=stock-type value=square id=stock-square>
89     <label for=stock-square>Square section</label>
90     <script type="text/javascript"><!--
91         DEP_UI.input_radio('stock-square', stock_type);
92     --></script>
93   <tr>
94     <td class=label><label for=stock-size>Stock size: </label>
95     <td><input id=stock-size>
96     <script type="text/javascript"><!--
97         var stock_size = new DEP.Dep();
98         DEP_UI.input_field('stock-size', stock_size,
99                            DEP_UI.convert_to_numeric);
100     --></script>
101   <tr>
102     <td class=label><label for=stock-length>Stock length: </label>
103     <td><input id=stock-length readonly>
104     <script type="text/javascript"><!--
105         var stock_length = new DEP.Dep(function () {
106           var cross;
107           switch (stock_type.value()) {
108             case 'round':
109               cross = 1/4 * Math.PI * Math.pow(stock_size.value(), 2);
110               break;
111             case 'square':
112               cross = Math.pow(stock_size.value(), 2);
113               break;
114             default:
115               dep_bad();
116           }
117           return volume.value()/cross;
118         });
119         DEP_UI.output_field('stock-length', stock_length,
120                             DEP_UI.convert_from_numeric);
121     --></script>
122 </table>
123
124 <script type="text/javascript"><!--
125         function toggle_help() {
126           var e = DEP_UI.elt('help');
127           var b = DEP_UI.elt('toggle-help');
128           if (e.className.match(/\bconceal\b/)) {
129             b.textContent = 'Hide help';
130             DEP_UI.rm_elt_class(e, 'conceal');
131           } else {
132             b.textContent = 'Show help';
133             DEP_UI.add_elt_class(e, 'conceal');
134           }
135         }
136         document.write(
137           '<button id=toggle-help onclick="toggle_help()">' + 
138           'Show help</button>');
139 --></script>
140 <div id=help>
141 <script type="text/javascript"><!--
142         DEP_UI.add_elt_class(DEP_UI.elt('help'), 'conceal');
143 --></script>
144 <h2>What this program does</h2>
145
146 <div id=js-note>
147 <script type="text/javascript"><!--
148         DEP_UI.add_elt_class(DEP_UI.elt('js-note'), 'conceal');
149 --></script>
150 <p>This page is only really interesting because it contains a Javascript
151 program.  You seem to have Javascript turned off, so it won't work very
152 well.
153 </div>
154
155 <h3>Background</h3>
156
157 <p>When you pass round or square wire through flat rolls it gets flatter
158 and longer, but it also gets wider.  You can exploit this to make thin
159 wire strip of almost any dimensions, but it&rsquo;s rather difficult to
160 predict the result.  That&rsquo;s what this calculator does.
161
162 <p>You specify the width and thickness of the strip you want, and the
163 program calculates what size round or square wire you should start with.
164 Additionally, if you specify the length of strip you need, it will
165 calculate the length of the input wire.
166
167 <p>The chances are that you don&rsquo;t actually have the required
168 thickness of round or square wire to start with, but you do have some
169 that&rsquo;s thicker.  Just enter the size of the round or square
170 initial stock that you do have and the program will calculate how much
171 of it you need to create the required starting size that you can then
172 roll down to the required thickness of strip.
173
174 <p>For best results, roll the strip in as few passes as you can handle.
175
176 <p>You can see the <a href="rolling-eqn.html">detailed equations</a>
177 used for this calculation if you're interested.
178
179 <h3>Use</h3>
180
181 <p>Boxes with light red or white backgrounds are entry boxes for you to
182 type in your requirements; boxes with dark red or grey backgrounds are
183 where the calculator puts its answers.  White and grey mean that the box
184 is showing useful information: an input box contains a valid number, for
185 example, and an output box has calculated a correct answer.  Red, on the
186 other hand, means that there&rsquo;s something wrong: either the
187 calculator can&rsquo;t understand what you&rsquo;ve typed in an input
188 box, or it&rsquo;s hit trouble &ndash; usually this means that some
189 necessary input is missing.
190
191 <p>You specify the width and thickness of the strip you want, and the
192 program calculates what size round or square wire you should start with.
193 Additionally, if you specify the length of strip you need, it will
194 calculate the length of the input wire.
195
196 <p>You can use whatever units you like, as long as they are consistent,
197 but you cannot use wire gauges.  If you use millimetres, the results
198 will be in millimetres; if you use inches, the results will be in
199 inches.  Whatever you use, the results are displayed to only 3 decimal
200 places.
201
202 <h3>Code and credits</h3>
203
204 <p>The code which makes this page work
205 is <a href="http://www.gnu.org/philosophy/free-sw.html">free
206 software</a>.  You
207 can <a href="http://git.distorted.org.uk/~mdw/dep-ui/">browse or download
208 it</a>, modify it, and/or redistribute it under the terms of the
209 <a href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html">GNU
210 General Public License, version 2</a> or, at your option, any later
211 version.
212
213 <p>If you make interesting changes, I&rsquo;d be very grateful to know
214 about them.  Please <a href="mailto:mdw@distorted.org.uk">mail me
215 patches</a>.
216
217 <p>The JavaScript machinery on this page was written by Mark Wooding;
218 the text was written by Mark Wooding and Gary Wooding.  The data used
219 to derive the computation was provided by Gary Wooding.
220
221 </div>
222 </body>
223 </html>