#N struct template10b float x float y float w symbol s;
#N struct template10a float x float y float a float b float c;
#N canvas 376 70 492 330 12;
#N canvas 894 66 363 341 data10 1;
#X scalar template10b 226 148 25 why? \;;
#X scalar template10a 143 225 65 57.1429 32 \;;
#X scalar template10a 78 102 45 34.2857 40 \;;
#X coords 0 341 1 340 0 0 0;
#X restore 92 284 pd data10;
#N canvas 315 107 562 552 template10a 0;
#X obj 60 18 struct template10a float x float y float a float b float c;
#X obj 92 423 bng 17 250 50 0 empty empty empty 0 -6 0 8 #dfdfdf #000000 #000000;
#X obj 92 449 t b b;
#X obj 278 475 pointer;
#X msg 278 444 traverse pd-data10 \, bang;
#X obj 92 506 append template10a x y a b c;
#X msg 92 476 50 50 30 20 40;
#X obj 59 107 drawpolygon 0 1 0 10 0 a(0:100)(10:110) -5 a(0:100)(5:105) 0 a(0:100)(10:110) 5 a(0:100)(5:105);
#X obj 61 326 drawcurve 0 1 0 -2 0 3 5 3 5 -8 -13 -8 -13 21;
#X obj 61 276 drawpolygon 0 1 10 0 c(0:100)(10:110) 0 c(0:100)(5:105) -5 c(0:100)(10:110) 0 c(0:100)(5:105) 5;
#X obj 61 192 drawpolygon 0 1 7 7 b(0:100)(7:77) b(0:100)(7:77) b(0:100)(0:70) b(0:100)(7:77) b(0:100)(7:77) b(0:100)(7:77) b(0:100)(7:77) b(0:100)(0:70);
#X text 59 49 'a' controls an arrow pointing upward. The main segment goes from (0.10) to (0 \, a+10). Then we hike 5 units down and left \, back to the point \, and then 5 units down and right.;
#X text 61 359 It's a good practice to put a small patch like this one in each template that you can use to make the first one (and will often find yourself wanting to use again later):;
#X text 64 153 Slightly more complicated construction to make an arrow at 45 degrees with the 'b' field:;
#X text 62 251 'c' controls an arrow pointing to the right.;
#X connect 1 0 2 0;
#X connect 2 0 6 0;
#X connect 2 1 4 0;
#X connect 3 0 5 5;
#X connect 4 0 3 0;
#X connect 6 0 5 0;
#X restore 92 234 pd template10a;
#N canvas 288 217 500 359 template10b 0;
#X obj 79 226 bng 15 250 50 0 empty empty empty 0 -6 0 8 #fcfcfc #000000 #000000;
#X obj 79 246 t b b;
#X obj 237 274 pointer;
#X msg 237 244 traverse pd-data10 \, bang;
#X obj 41 26 struct template10b float x float y float w symbol s;
#X msg 79 277 50 50 30;
#X obj 79 306 append template10b x y w;
#X obj 41 61 filledpolygon 900 0 2 w(0:100)(0:38) w(0:100)(0:92) w(0:100)(0:92) w(0:100)(0:38) w(0:100)(0:92) w(0:100)(0:-38) w(0:100)(0:38) w(0:100)(0:-92) w(0:100)(0:-38) w(0:100)(0:-92) w(0:100)(0:-92) w(0:100)(0:-38) w(0:100)(0:-92) w(0:100)(0:38) w(0:100)(0:-38) w(0:100)(0:92);
#X obj 42 167 drawsymbol s w(0:100)(10:-90) 10 0;
#X connect 0 0 1 0;
#X connect 1 0 5 0;
#X connect 1 1 3 0;
#X connect 2 0 6 3;
#X connect 3 0 2 0;
#X connect 5 0 6 0;
#X restore 92 259 pd template10b;
#X text 30 18 Screen dimensions can be tailored to specific ranges by adding suffixes in the drawing instructions. For example \, in "template10a" \, a coordinate such as "b(0:100)(7:77)" instructs the drawpolygon object to rescale b from the range 0-100 to the range 7-77.;
#X text 29 100 The application is to introduce an offset to a coordinate. For example \, the construction "a(0:100)(10:110)" just gives a+10., f 60;
#X text 29 154 Each of the three arrows of template10a is controlled by a single parameter (a \, b \, or c) and the entire red octagon in template10b likewise., f 60;
