<snapdata remixID="10855921"><project name="SnapShotKnuthTornielloS" app="Snap! 9.0, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAAAAXNSR0IArs4c6QAAAtdJREFUeF7t0rENgEAMBEHcf9H+Ijax0JCfBcPO7u7n+a3AzMzljxsBXv49/d0E2A1dCAICDHimXUCA3dCFICDAgGfaBQTYDV0IAgIMeKZdQIDd0IUgIMCAZ9oFBNgNXQgCAgx4pl1AgN3QhSAgwIBn2gUE2A1dCAICDHimXUCA3dCFICDAgGfaBQTYDV0IAgIMeKZdQIDd0IUgIMCAZ9oFBNgNXQgCAgx4pl1AgN3QhSAgwIBn2gUE2A1dCAICDHimXUCA3dCFICDAgGfaBQTYDV0IAgIMeKZdQIDd0IUgIMCAZ9oFBNgNXQgCAgx4pl1AgN3QhSAgwIBn2gUE2A1dCAICDHimXUCA3dCFICDAgGfaBQTYDV0IAgIMeKZdQIDd0IUgIMCAZ9oFBNgNXQgCAgx4pl1AgN3QhSAgwIBn2gUE2A1dCAICDHimXUCA3dCFICDAgGfaBQTYDV0IAgIMeKZdQIDd0IUgIMCAZ9oFBNgNXQgCAgx4pl1AgN3QhSAgwIBn2gUE2A1dCAICDHimXUCA3dCFICDAgGfaBQTYDV0IAgIMeKZdQIDd0IUgIMCAZ9oFBNgNXQgCAgx4pl1AgN3QhSAgwIBn2gUE2A1dCAICDHimXUCA3dCFICDAgGfaBQTYDV0IAgIMeKZdQIDd0IUgIMCAZ9oFBNgNXQgCAgx4pl1AgN3QhSAgwIBn2gUE2A1dCAICDHimXUCA3dCFICDAgGfaBQTYDV0IAgIMeKZdQIDd0IUgIMCAZ9oFBNgNXQgCAgx4pl1AgN3QhSAgwIBn2gUE2A1dCAICDHimXUCA3dCFICDAgGfaBQTYDV0IAgIMeKZdQIDd0IUgIMCAZ9oFBNgNXQgCAgx4pl1AgN3QhSAgwIBn2gUE2A1dCAICDHimXUCA3dCFICDAgGfaBQTYDV0IAgIMeKZdQIDd0IUgIMCAZ9oFBNgNXQgCAgx4pl3geoAPFBrgiMbLesgAAAAASUVORK5CYII=</thumbnail><scenes select="1"><scene name="SnapShotKnuthTornielloS"><notes></notes><hidden></hidden><headers></headers><code></code><blocks><block-definition s="ccw_arc around ( %&apos;cx&apos; , %&apos;cy&apos; ) from ( %&apos;sx&apos; , %&apos;sy&apos; ) to ( %&apos;ex&apos; , %&apos;ey&apos; ), %&apos;nsegs&apos; steps" type="command" category="pen"><comment x="0" y="0" w="194" collapsed="false">Draw a counter-clockwise arc around the specified center (cx,cy), starting at the specified starting (sx,sy), and ending _in_the_direction_of_ ending (ex,ey). &#xD;&#xD;(Note the radius is taken only from the starting point, distance to the ending point does not matter, only direction)&#xD;&#xD;The arc will be drawn as nsegs line segments. </comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input><input type="%s"></input><input type="%s"></input><input type="%s"></input><input type="%s"></input><input type="%n">20</input></inputs><script><block s="up"></block><block s="doDeclareVariables"><list><l>dx</l><l>dy</l><l>r</l><l>sa</l><l>ea</l><l>da</l></list></block><block s="doSetVar"><l>dx</l><block s="reportDifference"><block var="sx"/><block var="cx"/></block><comment w="277" collapsed="false">Radius is computed as distance from center to starting point.</comment></block><block s="doSetVar"><l>dy</l><block s="reportDifference"><block var="sy"/><block var="cy"/></block></block><block s="doSetVar"><l>r</l><block s="reportMonadic"><l><option>sqrt</option></l><block s="reportVariadicSum"><list><block s="reportVariadicProduct"><list><block var="dx"/><block var="dx"/></list></block><block s="reportVariadicProduct"><list><block var="dy"/><block var="dy"/></list></block></list></block></block></block><block s="doSetVar"><l>sa</l><block s="reportAtan2"><block var="dy"/><block var="dx"/></block><comment w="292" collapsed="false">Starting Angle is degrees CCW the line form the center to the starting point is from &apos;East&apos;</comment></block><block s="doSetVar"><l>dx</l><block s="reportDifference"><block var="ex"/><block var="cx"/></block></block><block s="doSetVar"><l>dy</l><block s="reportDifference"><block var="ey"/><block var="cy"/></block></block><block s="doSetVar"><l>ea</l><block s="reportAtan2"><block var="dy"/><block var="dx"/></block><comment w="380" collapsed="false">Same calculation for Ending Angle. We don&apos;t actually care about distance to (ex,ey)</comment></block><block s="doIf"><block s="reportVariadicLessThan"><list><block var="ea"/><block var="sa"/></list></block><script><block s="doSetVar"><l>ea</l><block s="reportVariadicSum"><list><block var="ea"/><l>360</l></list></block><comment w="380" collapsed="false">But watch out for wraparound. If these angles come out, say, from 30deg to -60deg, we need to instead call it from 30deg to 300deg</comment></block></script><list></list></block><block s="doSetVar"><l>da</l><block s="reportQuotient"><block s="reportDifference"><block var="ea"/><block var="sa"/></block><block var="nsegs"/></block></block><block s="doDeclareVariables"><list><l>a</l><l>x</l><l>y</l></list></block><block s="doSetVar"><l>x</l><block var="sx"/></block><block s="doSetVar"><l>y</l><block var="sy"/></block><block s="doSetVar"><l>a</l><block var="sa"/></block><block s="gotoXY"><custom-block s="xform %s"><block var="x"/></custom-block><custom-block s="yform %s"><block var="y"/></custom-block><comment w="270" collapsed="false">Now we&apos;re ready to draw. Go to the starting point..</comment></block><block s="down"></block><block s="doRepeat"><block var="nsegs"/><script><block s="doSetVar"><l>a</l><block s="reportVariadicSum"><list><block var="a"/><block var="da"/></list></block><comment w="253" collapsed="false">...and repeatedly increment the angle, recompute next x,y and move to it</comment></block><block s="doSetVar"><l>x</l><block s="reportVariadicSum"><list><block var="cx"/><block s="reportVariadicProduct"><list><block var="r"/><block s="reportMonadic"><l><option>cos</option></l><block var="a"/></block></list></block></list></block></block><block s="doSetVar"><l>y</l><block s="reportVariadicSum"><list><block var="cy"/><block s="reportVariadicProduct"><list><block var="r"/><block s="reportMonadic"><l><option>sin</option></l><block var="a"/></block></list></block></list></block></block><block s="gotoXY"><custom-block s="xform %s"><block var="x"/></custom-block><custom-block s="yform %s"><block var="y"/></custom-block></block></script></block><block s="up"></block></script></block-definition><block-definition s="cw_arc around ( %&apos;cx&apos; , %&apos;cy&apos; ) from ( %&apos;sx&apos; , %&apos;sy&apos; ) to ( %&apos;ex&apos; , %&apos;ey&apos; ), %&apos;nsegs&apos; steps" type="command" category="pen"><comment x="0" y="0" w="163" collapsed="false">A clockwise arc from (sx,sy) to (ex,ey) is just a counter-clockwise arc from (ex,ey) to (sx,sy)</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input><input type="%s"></input><input type="%s"></input><input type="%s"></input><input type="%s"></input><input type="%n">20</input></inputs><script><custom-block s="ccw_arc around ( %s , %s ) from ( %s , %s ) to ( %s , %s ), %n steps"><block var="cx"/><block var="cy"/><block var="ex"/><block var="ey"/><block var="sx"/><block var="sy"/><block var="nsegs"/></custom-block></script></block-definition><block-definition s="line from ( %&apos;x1&apos; , %&apos;y1&apos; ) to ( %&apos;x2&apos; , %&apos;y2&apos; )" type="command" category="pen"><comment x="0" y="0" w="143" collapsed="false">Draw a line segment between the given points</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input><input type="%s"></input><input type="%s"></input></inputs><script><block s="up"></block><block s="gotoXY"><custom-block s="xform %s"><block var="x1"/></custom-block><custom-block s="yform %s"><block var="y1"/></custom-block></block><block s="down"></block><block s="gotoXY"><custom-block s="xform %s"><block var="x2"/></custom-block><custom-block s="yform %s"><block var="y2"/></custom-block></block><block s="up"></block></script></block-definition><block-definition s="xform %&apos;x&apos;" type="reporter" category="pen"><comment x="0" y="0" w="254" collapsed="false">xform stands for transform an x coordinate; embiggen it and translate it with internal variables scalex, shiftx</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>scalex</l><l>shiftx</l></list></block><block s="doSetVar"><l>scalex</l><l>40</l></block><block s="doSetVar"><l>shiftx</l><l>-180</l></block><block s="doReport"><block s="reportVariadicSum"><list><block s="reportVariadicProduct"><list><block var="scalex"/><block var="x"/></list></block><block var="shiftx"/></list></block></block></script></block-definition><block-definition s="yform %&apos;y&apos;" type="reporter" category="pen"><comment x="0" y="0" w="178" collapsed="true">yform is just like xform, but for y</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>scaley</l><l>shifty</l></list></block><block s="doSetVar"><l>scaley</l><l>40</l></block><block s="doSetVar"><l>shifty</l><l>-180</l></block><block s="doReport"><block s="reportVariadicSum"><list><block s="reportVariadicProduct"><list><block var="scaley"/><block var="y"/></list></block><block var="shifty"><comment w="158" collapsed="true">hmmm, seems kinda shifty</comment></block></list></block></block></script></block-definition></blocks><stage name="Stage" width="480" height="480" costume="0" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="false" hyperops="true" codify="false" inheritance="true" sublistIDs="false" id="256"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAHgCAYAAAB91L6VAAAAAXNSR0IArs4c6QAAE1NJREFUeF7t1cEJAAAIxDDdf2m3sJ+4wEEQuuMIECBAgACBd4F9XzRIgAABAgQIjAB7AgIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECByj6gHhneqitAAAAABJRU5ErkJggg==</pentrails><costumes><list struct="atomic" id="257"></list></costumes><sounds><list struct="atomic" id="258"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Sprite" idx="1" x="0" y="2.2737367544323206e-13" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" hidden="true" costume="0" color="33,220,0,1" pen="tip" id="263"><costumes><list struct="atomic" id="264"></list></costumes><sounds><list struct="atomic" id="265"></list></sounds><blocks></blocks><variables></variables><scripts><script x="20" y="4"><block s="receiveGo"><comment w="362" collapsed="false">This Snap! script constructs the letter S, as specified by Francesco Torniello in 1517, as presented by Donald Knuth in his 1980 paper introducing METAFONT, titled &apos;The Letter S&apos;.&#xD;&#xD;Using the literal coordinates given by Knuth/Torniello below draws a adorably tiny S in a 9x9 square of pixels. The overall scale and translation can be controlled by script variables inside custom blocks xform/yform (in the Pen palette)</comment></block><block s="clear"></block><block s="show"></block><block s="setColor"><color>0,4,8,1</color></block><custom-block s="line from ( %s , %s ) to ( %s , %s )"><l>0</l><l>0</l><l>9</l><l>0</l></custom-block><custom-block s="line from ( %s , %s ) to ( %s , %s )"><l>9</l><l>0</l><l>9</l><l>9</l></custom-block><custom-block s="line from ( %s , %s ) to ( %s , %s )"><l>9</l><l>9</l><l>0</l><l>9</l></custom-block><custom-block s="line from ( %s , %s ) to ( %s , %s )"><l>0</l><l>9</l><l>0</l><l>0</l></custom-block><custom-block s="cw_arc around ( %s , %s ) from ( %s , %s ) to ( %s , %s ), %n steps"><l>4.5</l><l>5.5</l><l>4.5</l><l>9</l><l>6</l><l>8.66</l><l>20</l></custom-block><custom-block s="ccw_arc around ( %s , %s ) from ( %s , %s ) to ( %s , %s ), %n steps"><l>6.5</l><l>9</l><l>6.5</l><l>8.5</l><l>7</l><l>9</l><l>20</l></custom-block><custom-block s="line from ( %s , %s ) to ( %s , %s )"><l>6</l><l>7</l><l>6.94</l><l>8.76</l></custom-block><custom-block s="ccw_arc around ( %s , %s ) from ( %s , %s ) to ( %s , %s ), %n steps"><l>4</l><l>7</l><l>4</l><l>9</l><l>3</l><l>5.27</l><l>20</l></custom-block><custom-block s="line from ( %s , %s ) to ( %s , %s )"><l>3</l><l>5.27</l><l>5</l><l>4</l></custom-block><custom-block s="ccw_arc around ( %s , %s ) from ( %s , %s ) to ( %s , %s ), %n steps"><l>4.5</l><l>7.125</l><l>6</l><l>7</l><l>3.5</l><l>6</l><l>100</l></custom-block><custom-block s="line from ( %s , %s ) to ( %s , %s )"><l>3.5</l><l>6</l><l>6</l><l>4.5</l></custom-block><custom-block s="cw_arc around ( %s , %s ) from ( %s , %s ) to ( %s , %s ), %n steps"><l>4.5</l><l>2.5</l><l>6</l><l>4.5</l><l>3</l><l>.5</l><l>20</l></custom-block><custom-block s="ccw_arc around ( %s , %s ) from ( %s , %s ) to ( %s , %s ), %n steps"><l>2.5</l><l>-.37</l><l>3</l><l>.5</l><l>1.875</l><l>.41</l><l>20</l></custom-block><custom-block s="cw_arc around ( %s , %s ) from ( %s , %s ) to ( %s , %s ), %n steps"><l>4</l><l>2.27</l><l>5</l><l>4</l><l>4.5</l><l>.33</l><l>20</l></custom-block><custom-block s="cw_arc around ( %s , %s ) from ( %s , %s ) to ( %s , %s ), %n steps"><l>4.5</l><l>2.33</l><l>4.5</l><l>.33</l><l>2.53</l><l>2</l><l>20</l></custom-block><custom-block s="line from ( %s , %s ) to ( %s , %s )"><l>2.53</l><l>2</l><l>1.875</l><l>.41</l></custom-block><custom-block s="line from ( %s , %s ) to ( %s , %s )"><l>6</l><l>8.66</l><l>6.5</l><l>8.5</l></custom-block><block s="doWait"><l>1</l></block><block s="up"></block><block s="doGlide"><l>2</l><l>0</l><l>0</l></block><block s="setColor"><color>33,220,0,1</color></block><block s="doWait"><l>1</l></block><block s="floodFill"></block><block s="hide"></block></script><script x="645" y="32.83333333333339"><block s="show"></block></script><script x="602" y="33"><block s="clear"></block></script><script x="690" y="31.16666666666665"><block s="hide"></block></script><script x="19.6" y="652.1333333333334"><block s="hide"></block><block s="clear"><comment w="217.8076171875" collapsed="true">This test of ccw_arc draws a pacman</comment></block><custom-block s="line from ( %s , %s ) to ( %s , %s )"><l>4</l><l>4</l><l>6</l><l>6</l></custom-block><custom-block s="ccw_arc around ( %s , %s ) from ( %s , %s ) to ( %s , %s ), %n steps"><l>4</l><l>4</l><l>6</l><l>6</l><l>6</l><l>2</l><l>20</l></custom-block><custom-block s="line from ( %s , %s ) to ( %s , %s )"><l>6</l><l>2</l><l>4</l><l>4</l></custom-block></script><script x="153.8" y="37.53333333333334"><block s="clear"></block></script></scripts></sprite></sprites></stage><variables></variables></scene></scenes></project><media name="SnapShotKnuthTornielloS" app="Snap! 9.0, https://snap.berkeley.edu" version="2"></media></snapdata>