turtlestitch/libraries/geometryBlocks.xml

27 wiersze
117 KiB
XML

<blocks app="TurtleStitch 2.6, http://www.turtlestitch.org" version="1"><block-definition s="reflectionAngle angle %&apos;angle&apos; line %&apos;line&apos;" type="reporter" category="sensing"><header></header><code></code><translations>zh_CN:入射角 _ 和线段 _ 的反射角&#xD;</translations><inputs><input type="%n">60</input><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>lineAngle1</l><l>normalAngle</l><l>lineAngle2</l></list></block><block s="doSetVar"><l>lineAngle1</l><block s="reportDifference"><l>90</l><custom-block s="calcAngle start %l end %l"><block s="reportListItem"><l>2</l><block var="line"/></block><block s="reportListItem"><l>1</l><block var="line"/></block></custom-block></block></block><block s="doSetVar"><l>lineAngle2</l><block s="reportDifference"><l>90</l><custom-block s="calcAngle start %l end %l"><block s="reportListItem"><l>1</l><block var="line"/></block><block s="reportListItem"><l>2</l><block var="line"/></block></custom-block></block></block><block s="doReport"><block s="reportSum"><block var="lineAngle1"/><block s="reportDifference"><l>180</l><block s="reportDifference"><block var="angle"/><block var="lineAngle2"/></block></block></block></block></script></block-definition><block-definition s="calcAngle start %&apos;start&apos; end %&apos;end&apos;" type="reporter" category="sensing"><header></header><code></code><translations>zh_CN:倾斜角 起点 _ 终点 _&#xD;</translations><inputs><input type="%l"></input><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>relativeX</l><l>relativeY</l><l>angle</l></list></block><block s="doSetVar"><l>relativeY</l><block s="reportDifference"><block s="reportListItem"><l>2</l><block var="end"/></block><block s="reportListItem"><l>2</l><block var="start"/></block></block></block><block s="doSetVar"><l>relativeX</l><block s="reportDifference"><block s="reportListItem"><l>1</l><block var="end"/></block><block s="reportListItem"><l>1</l><block var="start"/></block></block></block><block s="doIf"><block s="reportAnd"><block s="reportEquals"><block var="relativeX"/><l>0</l></block><block s="reportEquals"><block var="relativeY"/><l>0</l></block></block><script><block s="doReport"><l>90</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="relativeX"/><l>0</l></block><script><block s="doIfElse"><block s="reportGreaterThan"><block var="relativeY"/><l>0</l></block><script><block s="doReport"><l>90</l></block></script><script><block s="doReport"><l>270</l></block></script></block></script></block><block s="doSetVar"><l>angle</l><block s="reportMonadic"><l><option>atan</option></l><block s="reportQuotient"><block var="relativeY"/><block var="relativeX"/></block></block></block><block s="doIfElse"><block s="reportGreaterThan"><block var="angle"/><l>0</l></block><script><block s="doIfElse"><block s="reportGreaterThan"><block var="relativeX"/><l>0</l></block><script><block s="doReport"><block var="angle"/></block></script><script><block s="doReport"><block s="reportSum"><l>180</l><block var="angle"/></block></block></script></block></script><script><block s="doIfElse"><block s="reportLessThan"><block var="relativeX"/><l>0</l></block><script><block s="doReport"><block s="reportSum"><l>180</l><block var="angle"/></block></block></script><script><block s="doReport"><block s="reportSum"><l>360</l><block var="angle"/></block></block></script></block></script></block></script></block-definition><block-definition s="hasCrossPoint line %&apos;line&apos;" type="predicate" category="sensing"><header></header><code></code><translations>zh_CN:将和线段 _ 产生交点?&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>angle1</l><l>angle2</l><l>point</l><l>direction</l></list></block><block s="doSetVar"><l>point</l><block s="reportNewList"><list><block s="xPosition"></block><block s="yPosition"></block></list></block></block><block s="doSetVar"><l>angle1</l><custom-block s="calcAngle start %l end %l"><block var="point"/><block s="reportListItem"><l>1</l><block var="line"/></block></custom-block></block><block s="doSetVar"><l>angle2</l><custom-block s="calcAngle start %l end %l"><block var="point"/><block s="reportListItem"><l>2</l><block var="line"/></block></custom-block></block><block s="doSetVar"><l>direction</l><block s="reportModulus"><block s="reportSum"><block s="reportDifference"><l>90</l><block s="direction"></block></block><l>360</l></block><l>360</l></block></block><block s="doIfElse"><block s="reportGreaterThan"><block var="angle1"/><block var="angle2"/></block><script><block s="doIf"><block s="reportLessThan"><block s="reportDifference"><block var="angle1"/><block var="angle2"/></block><l>180</l></block><script><block s="doIf"><block s="reportOr"><block s="reportGreaterThan"><block var="direction"/><block var="angle1"/></block><block s="reportLessThan"><block var="direction"/><block var="angle2"/></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block><block s="doIf"><block s="reportGreaterThan"><block s="reportDifference"><block var="angle1"/><block var="angle2"/></block><l>180</l></block><script><block s="doIf"><block s="reportAnd"><block s="reportLessThan"><block var="direction"/><block var="angle1"/></block><block s="reportGreaterThan"><block var="direction"/><block var="angle2"/></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block></script><script><block s="doIf"><block s="reportLessThan"><block s="reportDifference"><block var="angle2"/><block var="angle1"/></block><l>180</l></block><script><block s="doIf"><block s="reportOr"><block s="reportGreaterThan"><block var="direction"/><block var="angle2"/></block><block s="reportLessThan"><block var="direction"/><block var="angle1"/></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block><block s="doIf"><block s="reportGreaterThan"><block s="reportDifference"><block var="angle2"/><block var="angle1"/></block><l>180</l></block><script><block s="doIf"><block s="reportAnd"><block s="reportLessThan"><block var="direction"/><block var="angle2"/></block><block s="reportGreaterThan"><block var="direction"/><block var="angle1"/></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block></script></block><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block-definition><block-definition s="distanceToLine line %&apos;line&apos; crossPoint %&apos;crossPoint&apos;" type="reporter" category="sensing"><header></header><code></code><translations>zh_CN:到线段 _ 的距离,交点为 _&#xD;</translations><inputs><input type="%l"></input><input type="%upvar"></input></inputs><script><block s="doDeclareVariables"><list><l>angle1</l><l>angle2</l><l>includedAngle1</l><l>edgeLength</l><l>includedAngle2</l><l>angle3</l><l>angle4</l><l>point</l><l>vDistance</l><l>includeAngle3</l><l>distance</l><l>hypotenuse</l></list></block><block s="doIf"><block s="reportNot"><custom-block s="hasCrossPoint line %l"><block var="line"/></custom-block></block><script><block s="doSetVar"><l>crossPoint</l><block s="reportNewList"><list></list></block></block><block s="doReport"><l>9999</l></block></script></block><block s="doSetVar"><l>point</l><block s="reportNewList"><list><block s="xPosition"></block><block s="yPosition"></block></list></block></block><block s="doSetVar"><l>angle1</l><custom-block s="calcAngle start %l end %l"><block s="reportListItem"><l>1</l><block var="line"/></block><block s="reportListItem"><l>2</l><block var="line"/></block></custom-block></block><block s="doSetVar"><l>angle2</l><custom-block s="calcAngle start %l end %l"><block s="reportListItem"><l>1</l><block var="line"/></block><block var="point"/></custom-block></block><block s="doSetVar"><l>angle3</l><custom-block s="calcAngle start %l end %l"><block var="point"/><block s="reportListItem"><l>1</l><block var="line"/></block></custom-block></block><block s="doSetVar"><l>angle4</l><block s="reportModulus"><block s="reportSum"><block s="reportDifference"><l>90</l><block s="direction"></block></block><l>360</l></block><l>360</l></block></block><block s="doSetVar"><l>includedAngle1</l><block s="reportMonadic"><l><option>abs</option></l><block s="reportDifference"><block var="angle2"/><block var="angle1"/></block></block></block><block s="doSetVar"><l>includedAngle2</l><block s="reportMonadic"><l><option>abs</option></l><block s="reportDifference"><block var="angle3"/><block var="angle4"/></block></block></block><block s="doIf"><block s="reportGreaterThan"><block var="includedAngle1"/><l>180</l></block><script><block s="doSetVar"><l>includedAngle1</l><block s="reportDifference"><l>360</l><block var="includedAngle1"/></block></block></script></block><block s="doIf"><block s="reportGreaterThan"><block var="includedAngle2"/><l>180</l></block><script><block s="doSetVar"><l>includedAngle2</l><block s="reportDifference"><l>360</l><block var="includedAngle2"/></block></block></script></block><block s="doSetVar"><l>includeAngle3</l><block s="reportDifference"><l>180</l><block s="reportSum"><block var="includedAngle1"/><block var="includedAngle2"/></block></block></block><block s="doSetVar"><l>edgeLength</l><block s="reportMonadic"><l><option>sqrt</option></l><block s="reportSum"><block s="reportProduct"><block s="reportDifference"><block s="reportListItem"><l>2</l><block var="point"/></block><block s="reportListItem"><l>2</l><block s="reportListItem"><l>1</l><block var="line"/></block></block></block><block s="reportDifference"><block s="reportListItem"><l>2</l><block var="point"/></block><block s="reportListItem"><l>2</l><block s="reportListItem"><l>1</l><block var="line"/></block></block></block></block><block s="reportProduct"><block s="reportDifference"><block s="reportListItem"><l>1</l><block var="point"/></block><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><block var="line"/></block></block></block><block s="reportDifference"><block s="reportListItem"><l>1</l><block var="point"/></block><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><block var="line"/></block></block></block></block></block></block></block><block s="doSetVar"><l>vDistance</l><block s="reportProduct"><block var="edgeLength"/><block s="reportMonadic"><l><option>sin</option></l><block var="includedAngle1"/></block></block></block><block s="doSetVar"><l>distance</l><block s="reportMonadic"><l><option>abs</option></l><block s="reportQuotient"><block var="vDistance"/><block s="reportMonadic"><l><option>cos</option></l><block s="reportDifference"><l>90</l><block var="includeAngle3"/></block></block></block></block></block><block s="doSetVar"><l>hypotenuse</l><block s="reportMonadic"><l><option>sqrt</option></l><block s="reportDifference"><block s="reportSum"><block s="reportProduct"><block var="distance"/><block var="distance"/></block><block s="reportProduct"><block var="edgeLength"/><block var="edgeLength"/></block></block><block s="reportProduct"><l>2</l><block s="reportProduct"><block s="reportProduct"><block var="edgeLength"/><block var="distance"/></block><block s="reportMonadic"><l><option>cos</option></l><block var="includedAngle2"/></block></block></block></block></block></block><block s="doSetVar"><l>crossPoint</l><block s="reportNewList"><list><block s="reportSum"><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><block var="line"/></block></block><block s="reportProduct"><block var="hypotenuse"/><block s="reportMonadic"><l><option>cos</option></l><block var="angle1"/></block></block></block><block s="reportSum"><block s="reportListItem"><l>2</l><block s="reportListItem"><l>1</l><block var="line"/></block></block><block s="reportProduct"><block var="hypotenuse"/><block s="reportMonadic"><l><option>sin</option></l><block var="angle1"/></block></block></block></list></block></block><block s="doReport"><block var="distance"/></block></script></block-definition><block-definition s="midpointOfLine %&apos;line&apos;" type="reporter" category="sensing"><header></header><code></code><translations>zh_CN:线段 _ 的中间点&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportNewList"><list><block s="reportQuotient"><block s="reportSum"><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><block var="line"/></block></block><block s="reportListItem"><l>1</l><block s="reportListItem"><l>2</l><block var="line"/></block></block></block><l>2</l></block><block s="reportQuotient"><block s="reportSum"><block s="reportListItem"><l>2</l><block s="reportListItem"><l>1</l><block var="line"/></block></block><block s="reportListItem"><l>2</l><block s="reportListItem"><l>2</l><block var="line"/></block></block></block><l>2</l></block></list></block></block></script></block-definition><block-definition s="crossPoint on line %&apos;line&apos; distance %&apos;distance&apos;" type="reporter" category="sensing"><header></header><code></code><translations>zh_CN:和线段 _ 的交点,距离为 _&#xD;</translations><inputs><input type="%l"></input><input type="%upvar"></input></inputs><script><block s="doSetVar"><l>distance</l><custom-block s="distanceToLine line %l crossPoint %upvar"><block var="line"/><l>crossPoint</l></custom-block></block><block s="doReport"><block var="crossPoint"/></block></script></block-definition><block-definition s="randomPoint of line %&apos;line&apos;" type="reporter" category="sensing"><header></header><code></code><translations>zh_CN:线段 _ 上的任意一点&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>direction</l><l>range</l></list></block><block s="doSetVar"><l>direction</l><custom-block s="calcAngle start %l end %l"><block s="reportListItem"><l>1</l><block var="line"/></block><block s="reportListItem"><l>2</l><block var="line"/></block></custom-block></block><block s="doSetVar"><l>range</l><block s="reportRandom"><l>0</l><block s="reportDifference"><custom-block s="lineLength %l"><block var="line"/></custom-block><l>0.001</l></block></block></block><block s="doReport"><block s="reportNewList"><list><block s="reportSum"><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><block var="line"/></block></block><block s="reportProduct"><block var="range"/><block s="reportMonadic"><l><option>cos</option></l><block var="direction"/></block></block></block><block s="reportSum"><block s="reportListItem"><l>2</l><block s="reportListItem"><l>1</l><block var="line"/></block></block><block s="reportProduct"><block var="range"/><block s="reportMonadic"><l><option>sin</option></l><block var="direction"/></block></block></block></list></block></block></script></block-definition><block-definition s="translate angle %&apos;direction&apos;" type="reporter" category="sensing"><comment x="0" y="0" w="188.00000000000003" collapsed="false">translate angle to or from polar coordinates</comment><header></header><code></code><translations>zh_CN:角度转换 _&#xD;</translations><inputs><input type="%n">0</input></inputs><script><block s="doReport"><block s="reportModulus"><block s="reportSum"><block s="reportDifference"><l>90</l><block var="direction"/></block><l>360</l></block><l>360</l></block></block></script></block-definition><block-definition s="crossPoint of line1 %&apos;line1&apos; and line2 %&apos;line2&apos;" type="reporter" category="sensing"><header></header><code></code><translations>zh_CN:线段1 _ 和线段2 _ 的交点&#xD;</translations><inputs><input type="%l"></input><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>angle1</l><l>angle2</l><l>includedAngle1</l><l>edgeLength</l><l>includedAngle2</l><l>angle3</l><l>angle4</l><l>point</l><l>vDistance</l><l>includeAngle3</l><l>distance</l><l>hypotenuse</l><l>crossPoint</l></list></block><block s="doIf"><block s="reportNot"><custom-block s="hasCrossPoint? line1 %l line2 %l"><block var="line1"/><block var="line2"/></custom-block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doSetVar"><l>point</l><block s="reportListItem"><l>1</l><block var="line1"/></block></block><block s="doSetVar"><l>angle1</l><custom-block s="calcAngle start %l end %l"><block s="reportListItem"><l>1</l><block var="line2"/></block><block s="reportListItem"><l>2</l><block var="line2"/></block></custom-block></block><block s="doSetVar"><l>angle2</l><custom-block s="calcAngle start %l end %l"><block s="reportListItem"><l>1</l><block var="line2"/></block><block var="point"/></custom-block></block><block s="doSetVar"><l>angle3</l><custom-block s="calcAngle start %l end %l"><block var="point"/><block s="reportListItem"><l>1</l><block var="line2"/></block></custom-block></block><block s="doSetVar"><l>angle4</l><custom-block s="calcAngle start %l end %l"><block var="point"/><block s="reportListItem"><l>2</l><block var="line1"/></block></custom-block></block><block s="doSetVar"><l>includedAngle1</l><block s="reportMonadic"><l><option>abs</option></l><block s="reportDifference"><block var="angle2"/><block var="angle1"/></block></block></block><block s="doSetVar"><l>includedAngle2</l><block s="reportMonadic"><l><option>abs</option></l><block s="reportDifference"><block var="angle3"/><block var="angle4"/></block></block></block><block s="doIf"><block s="reportGreaterThan"><block var="includedAngle1"/><l>180</l></block><script><block s="doSetVar"><l>includedAngle1</l><block s="reportDifference"><l>360</l><block var="includedAngle1"/></block></block></script></block><block s="doIf"><block s="reportGreaterThan"><block var="includedAngle2"/><l>180</l></block><script><block s="doSetVar"><l>includedAngle2</l><block s="reportDifference"><l>360</l><block var="includedAngle2"/></block></block></script></block><block s="doSetVar"><l>includeAngle3</l><block s="reportDifference"><l>180</l><block s="reportSum"><block var="includedAngle1"/><block var="includedAngle2"/></block></block></block><block s="doSetVar"><l>edgeLength</l><block s="reportMonadic"><l><option>sqrt</option></l><block s="reportSum"><block s="reportProduct"><block s="reportDifference"><block s="reportListItem"><l>2</l><block var="point"/></block><block s="reportListItem"><l>2</l><block s="reportListItem"><l>1</l><block var="line2"/></block></block></block><block s="reportDifference"><block s="reportListItem"><l>2</l><block var="point"/></block><block s="reportListItem"><l>2</l><block s="reportListItem"><l>1</l><block var="line2"/></block></block></block></block><block s="reportProduct"><block s="reportDifference"><block s="reportListItem"><l>1</l><block var="point"/></block><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><block var="line2"/></block></block></block><block s="reportDifference"><block s="reportListItem"><l>1</l><block var="point"/></block><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><block var="line2"/></block></block></block></block></block></block></block><block s="doSetVar"><l>vDistance</l><block s="reportProduct"><block var="edgeLength"/><block s="reportMonadic"><l><option>sin</option></l><block var="includedAngle1"/></block></block></block><block s="doSetVar"><l>distance</l><block s="reportMonadic"><l><option>abs</option></l><block s="reportQuotient"><block var="vDistance"/><block s="reportMonadic"><l><option>cos</option></l><block s="reportDifference"><l>90</l><block var="includeAngle3"/></block></block></block></block></block><block s="doSetVar"><l>hypotenuse</l><block s="reportMonadic"><l><option>sqrt</option></l><block s="reportDifference"><block s="reportSum"><block s="reportProduct"><block var="distance"/><block var="distance"/></block><block s="reportProduct"><block var="edgeLength"/><block var="edgeLength"/></block></block><block s="reportProduct"><l>2</l><block s="reportProduct"><block s="reportProduct"><block var="edgeLength"/><block var="distance"/></block><block s="reportMonadic"><l><option>cos</option></l><block var="includedAngle2"/></block></block></block></block></block></block><block s="doSetVar"><l>crossPoint</l><block s="reportNewList"><list><block s="reportSum"><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><block var="line2"/></block></block><block s="reportProduct"><block var="hypotenuse"/><block s="reportMonadic"><l><option>cos</option></l><block var="angle1"/></block></block></block><block s="reportSum"><block s="reportListItem"><l>2</l><block s="reportListItem"><l>1</l><block var="line2"/></block></block><block s="reportProduct"><block var="hypotenuse"/><block s="reportMonadic"><l><option>sin</option></l><block var="angle1"/></block></block></block></list></block></block><block s="doReport"><block var="crossPoint"/></block></script></block-definition><block-definition s="hasCrossPoint? line1 %&apos;line1&apos; line2 %&apos;line2&apos;" type="predicate" category="sensing"><header></header><code></code><translations>zh_CN:线段1 _ 和线段2 _ 有交点?&#xD;</translations><inputs><input type="%l"></input><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>angle1</l><l>angle2</l><l>point</l><l>direction</l></list></block><block s="doSetVar"><l>point</l><block s="reportListItem"><l>1</l><block var="line1"/></block></block><block s="doSetVar"><l>angle1</l><custom-block s="calcAngle start %l end %l"><block var="point"/><block s="reportListItem"><l>1</l><block var="line2"/></block></custom-block></block><block s="doSetVar"><l>angle2</l><custom-block s="calcAngle start %l end %l"><block var="point"/><block s="reportListItem"><l>2</l><block var="line2"/></block></custom-block></block><block s="doSetVar"><l>direction</l><custom-block s="calcAngle start %l end %l"><block var="point"/><block s="reportListItem"><l>2</l><block var="line1"/></block></custom-block></block><block s="doIfElse"><block s="reportGreaterThan"><block var="angle1"/><block var="angle2"/></block><script><block s="doIf"><block s="reportLessThan"><block s="reportDifference"><block var="angle1"/><block var="angle2"/></block><l>180</l></block><script><block s="doIf"><block s="reportOr"><block s="reportGreaterThan"><block var="direction"/><block var="angle1"/></block><block s="reportLessThan"><block var="direction"/><block var="angle2"/></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block><block s="doIf"><block s="reportGreaterThan"><block s="reportDifference"><block var="angle1"/><block var="angle2"/></block><l>180</l></block><script><block s="doIf"><block s="reportAnd"><block s="reportLessThan"><block var="direction"/><block var="angle1"/></block><block s="reportGreaterThan"><block var="direction"/><block var="angle2"/></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block></script><script><block s="doIf"><block s="reportLessThan"><block s="reportDifference"><block var="angle2"/><block var="angle1"/></block><l>180</l></block><script><block s="doIf"><block s="reportOr"><block s="reportGreaterThan"><block var="direction"/><block var="angle2"/></block><block s="reportLessThan"><block var="direction"/><block var="angle1"/></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block><block s="doIf"><block s="reportGreaterThan"><block s="reportDifference"><block var="angle2"/><block var="angle1"/></block><l>180</l></block><script><block s="doIf"><block s="reportAnd"><block s="reportLessThan"><block var="direction"/><block var="angle2"/></block><block s="reportGreaterThan"><block var="direction"/><block var="angle1"/></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block></script></block><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block-definition><block-definition s="PI" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return Math.PI;</l></block><list></list></block></block></script></block-definition><block-definition s="reflectionAngle angle %&apos;angle&apos; lineAngle %&apos;lineAngle&apos;" type="reporter" category="sensing"><header></header><code></code><translations>zh_CN:入射角 _ 和线段角度 _ 的反射角&#xD;</translations><inputs><input type="%n">60</input><input type="%n">90</input></inputs><script><block s="doReport"><block s="reportModulus"><block s="reportDifference"><block s="reportDifference"><l>180</l><block s="reportProduct"><l>2</l><custom-block s="translate angle %n"><block var="lineAngle"/></custom-block></block></block><block var="angle"/></block><l>360</l></block></block></script></block-definition><block-definition s="pointsToVector %&apos;points&apos;" type="reporter" category="operators"><header></header><code></code><translations>zh_CN:点集转换为矢量 _&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>vector</l><l>lastPoint</l><l>lastDir</l><l>thisDir</l></list></block><block s="doWarp"><script><block s="doSetVar"><l>vector</l><block s="reportNewList"><list></list></block></block><block s="doIf"><block s="reportLessThan"><block s="reportListLength"><block var="points"/></block><l>2</l></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doSetVar"><l>lastDir</l><custom-block s="calcAngle start %l end %l"><block s="reportListItem"><l>1</l><block var="points"/></block><block s="reportListItem"><l>2</l><block var="points"/></block></custom-block></block><block s="doAddToList"><block s="reportNewList"><list><block s="reportMonadic"><l><option>neg</option></l><block var="lastDir"/></block><custom-block s="lineLength %l"><block s="reportNewList"><list><block s="reportListItem"><l>1</l><block var="points"/></block><block s="reportListItem"><l>2</l><block var="points"/></block></list></block></custom-block></list></block><block var="vector"/></block><block s="doSetVar"><l>lastPoint</l><block s="reportListItem"><l>2</l><block var="points"/></block></block><block s="doIf"><block s="reportGreaterThan"><block s="reportListLength"><block var="points"/></block><l>2</l></block><script><custom-block s="for %upvar = %n step %n to %n %cs"><l>i</l><l>3</l><l>1</l><block s="reportListLength"><block var="points"/></block><script><block s="doIfElse"><block s="reportEquals"><block s="reportListItem"><block var="i"/><block var="points"/></block><l>!</l></block><script><block s="doAddToList"><l>!</l><block var="vector"/></block></script><script><block s="doSetVar"><l>thisDir</l><custom-block s="calcAngle start %l end %l"><block var="lastPoint"/><block s="reportListItem"><block var="i"/><block var="points"/></block></custom-block></block><block s="doAddToList"><block s="reportNewList"><list><custom-block s="translate angle %n"><custom-block s="translate angle %n"><block s="reportDifference"><block var="lastDir"/><block var="thisDir"/></block></custom-block></custom-block><custom-block s="lineLength %l"><block s="reportNewList"><list><block var="lastPoint"/><block s="reportListItem"><block var="i"/><block var="points"/></block></list></block></custom-block></list></block><block var="vector"/></block><block s="doSetVar"><l>lastPoint</l><block s="reportListItem"><block var="i"/><block var="points"/></block></block><block s="doSetVar"><l>lastDir</l><block var="thisDir"/></block></script></block></script></custom-block></script></block></script></block><block s="doReport"><block var="vector"/></block></script></block-definition><block-definition s="for %&apos;i&apos; = %&apos;start&apos; step %&apos;step&apos; to %&apos;end&apos; %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations>pt:para _ de _ com passo _ a _ _ $loop-0.7&#xD;zh_CN:重复执行 因子 _ 初值 _ 步长 _ 终值 _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%n">1</input><input type="%n">1</input><input type="%n">10</input><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>test</l></list></block><block s="doSetVar"><l>i</l><block var="start"/></block><block s="doIfElse"><block s="reportLessThan"><block var="step"/><l>0</l></block><script><block s="doSetVar"><l>test</l><block s="reifyPredicate"><autolambda><block s="reportLessThan"><block var="i"/><block var="end"/></block></autolambda><list></list></block></block></script><script><block s="doSetVar"><l>test</l><block s="reifyPredicate"><autolambda><block s="reportGreaterThan"><block var="i"/><block var="end"/></block></autolambda><list></list></block></block></script></block><block s="doUntil"><block s="evaluate"><block var="test"/><list></list></block><script><block s="doRun"><block var="action"/><list></list></block><block s="doChangeVar"><l>i</l><block var="step"/></block></script></block></script></block-definition><block-definition s="drawVector %&apos;vector&apos; size %&apos;size&apos; style %&apos;styleScript&apos; mirrored %&apos;mirrored&apos; stitch length %&apos;seam&apos;" type="command" category="pen"><header></header><code></code><translations>zh_CN:绘制矢量 _ 比例 _ 方式 _ 镜像 _ 针脚长度 _&#xD;</translations><inputs><input type="%l"></input><input type="%n">1</input><input type="%cmdRing"></input><input type="%b">false</input><input type="%n">6</input></inputs><script><block s="doDeclareVariables"><list><l>dir</l><l>newVector</l></list></block><block s="doIf"><custom-block s="Is %cmdRing empty?"><block var="styleScript"/></custom-block><script><block s="doSetVar"><l>styleScript</l><block s="reifyScript"><script><block s="forward"><l></l></block></script><list></list></block></block></script></block><block s="doSetVar"><l>dir</l><block s="direction"></block></block><block s="doSetVar"><l>newVector</l><custom-block s="convert vector %l scale %n by seam %n"><block var="vector"/><block var="size"/><block var="seam"/></custom-block></block><custom-block s="%upvar for each %upvar of %l %ca"><l>#</l><l>item</l><block var="newVector"/><script><block s="doIfElse"><block s="reportOr"><block s="reportEquals"><block var="item"/><l>!</l></block><block s="reportEquals"><block s="reportListItem"><l>1</l><block var="item"/></block><l>!</l></block></block><script><block s="up"></block></script><script><block s="doIfElse"><block s="reportNot"><block var="mirrored"/></block><script><block s="turn"><block s="reportListItem"><l>1</l><block var="item"/></block></block></script><script><block s="doIfElse"><block s="reportEquals"><block var="#"/><l>1</l></block><script><block s="turn"><block s="reportListItem"><l>1</l><block var="item"/></block></block><block s="setHeading"><block s="reportMonadic"><l><option>neg</option></l><block s="direction"></block></block></block></script><script><block s="turnLeft"><block s="reportListItem"><l>1</l><block var="item"/></block></block></script></block></script></block><custom-block s="move %n style %cmdRing by %n"><block s="reportListItem"><l>2</l><block var="item"/></block><block var="styleScript"/><block var="seam"/></custom-block><block s="doIf"><block s="reportNot"><block s="isPenDown"></block></block><script><block s="down"></block></script></block></script></block></script></custom-block><block s="setHeading"><block var="dir"/></block></script></block-definition><block-definition s="for each %&apos;item&apos; of %&apos;data&apos; %&apos;action&apos;" type="command" category="lists"><header></header><code></code><translations>zh_CN:对每个项目 _ 来自列表 _ 执行 _&#xD;</translations><inputs><input type="%upvar"></input><input type="%l"></input><input type="%cs"></input></inputs><script><block s="doUntil"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doSetVar"><l>item</l><block s="reportListItem"><l>1</l><block var="data"/></block></block><block s="doRun"><block var="action"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><block s="doSetVar"><l>data</l><block s="reportCDR"><block var="data"/></block></block></script></block></script></block-definition><block-definition s="empty? %&apos;data&apos;" type="predicate" category="lists"><header></header><code></code><translations>zh_CN:列表 _ 为空?&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportEquals"><block var="data"/><block s="reportNewList"><list></list></block></block></block></script></block-definition><block-definition s="lineLength %&apos;line&apos;" type="reporter" category="sensing"><header></header><code></code><translations>zh_CN:线段长度 _&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doIfElse"><block s="reportLessThan"><block s="reportListLength"><block var="line"/></block><l>2</l></block><script><block s="doReport"><l>-1</l></block></script><script><block s="doIfElse"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="line"/></block><l><option>number</option></l></block><script><block s="doReport"><block s="reportMonadic"><l><option>sqrt</option></l><block s="reportSum"><block s="reportProduct"><block s="reportDifference"><block s="xPosition"></block><block s="reportListItem"><l>1</l><block var="line"/></block></block><block s="reportDifference"><block s="xPosition"></block><block s="reportListItem"><l>1</l><block var="line"/></block></block></block><block s="reportProduct"><block s="reportDifference"><block s="yPosition"></block><block s="reportListItem"><l>2</l><block var="line"/></block></block><block s="reportDifference"><block s="yPosition"></block><block s="reportListItem"><l>2</l><block var="line"/></block></block></block></block></block></block></script><script><block s="doReport"><block s="reportMonadic"><l><option>sqrt</option></l><block s="reportSum"><block s="reportProduct"><block s="reportDifference"><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><block var="line"/></block></block><block s="reportListItem"><l>1</l><block s="reportListItem"><l>2</l><block var="line"/></block></block></block><block s="reportDifference"><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><block var="line"/></block></block><block s="reportListItem"><l>1</l><block s="reportListItem"><l>2</l><block var="line"/></block></block></block></block><block s="reportProduct"><block s="reportDifference"><block s="reportListItem"><l>2</l><block s="reportListItem"><l>1</l><block var="line"/></block></block><block s="reportListItem"><l>2</l><block s="reportListItem"><l>2</l><block var="line"/></block></block></block><block s="reportDifference"><block s="reportListItem"><l>2</l><block s="reportListItem"><l>1</l><block var="line"/></block></block><block s="reportListItem"><l>2</l><block s="reportListItem"><l>2</l><block var="line"/></block></block></block></block></block></block></block></script></block></script></block></script></block-definition><block-definition s="copy list %&apos;l&apos;" type="reporter" category="lists"><header></header><code></code><translations>zh_CN:复制列表 _&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><custom-block s="映射 %repRing 来源 %l"><block s="reifyScript"><script><block s="doReport"><l></l></block></script><list></list></block><block var="l"/></custom-block></block></script></block-definition><block-definition s="%&apos;data&apos; 为空?" type="predicate" category="lists"><header></header><code></code><translations>de:ist _ leer?
ca:_ buida?
es:_ vacía?
fr:_ vide?&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportEquals"><block var="data"/><block s="reportNewList"><list></list></block></block></block></script></block-definition><block-definition s="映射 %&apos;func&apos; 来源 %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations>de:wende _ an auf _
ca:mapeja _ sobre _
es:mapear _ sobre _
fr:appliquer _ à _&#xD;</translations><inputs><input type="%repRing"></input><input type="%l"></input></inputs><script><block s="doIf"><custom-block s="%l 为空?"><block var="data"/></custom-block><script><block s="doReport"><block var="data"/></block></script></block><block s="doReport"><block s="reportCONS"><block s="evaluate"><block var="func"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><custom-block s="映射 %repRing 来源 %l"><block var="func"/><block s="reportCDR"><block var="data"/></block></custom-block></block></block></script></block-definition><block-definition s="Is %&apos;ring&apos; empty?" type="predicate" category="operators"><header></header><code></code><translations>zh_CN:_ 为空?&#xD;</translations><inputs><input type="%cmdRing"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>context</l></list><l>return context.expression instanceof Array;</l></block><list><block var="ring"/></list></block></block></script></block-definition><block-definition s="append %&apos;lists&apos;" type="reporter" category="lists"><comment x="0" y="0" w="287" collapsed="false">Take any number of input lists, and create a new list
containing the items of the input lists. So
APPEND [A B] [C D]
where the [...] are lists reports the list
[A B C D]
not [[A B] [C D]].</comment><header></header><code></code><translations>ca:concatena _&#xD;zh_CN:合并列表 _&#xD;</translations><inputs><input type="%mult%l"></input></inputs><script><block s="doWarp"><script><block s="doIf"><block s="reportEquals"><block var="lists"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportListLength"><block var="lists"/></block><l>1</l></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="lists"/></block></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportListItem"><l>1</l><block var="lists"/></block><block s="reportNewList"><list></list></block></block><script><block s="doReport"><custom-block s="append %mult%l"><list><l/></list></custom-block></block></script></block><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><block var="lists"/></block></block><custom-block s="append %mult%l"><list><l/></list></custom-block></block></block></script></block></script></block-definition><block-definition s="reverse %&apos;data&apos;" type="reporter" category="lists"><comment x="0" y="0" w="223" collapsed="false">Reports a new list containing the items of the input list, but in the opposite order.</comment><header></header><code></code><translations>ca:capgira _&#xD;zh_CN:倒置列表 _&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>helper</l></list></block><block s="doSetVar"><l>helper</l><block s="reifyScript"><script><block s="doIf"><block s="reportEquals"><block var="input"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block var="result"/></block></script></block><block s="doReport"><block s="evaluate"><block var="helper"/><list><block s="reportCDR"><block var="input"/></block><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="input"/></block><block var="result"/></block></list></block></block></script><list><l>input</l><l>result</l></list></block></block><block s="doWarp"><script><block s="doReport"><block s="evaluate"><block var="helper"/><list><block var="data"/><block s="reportNewList"><list></list></block></list></block></block></script></block></script></block-definition><block-definition s="remove duplicates from %&apos;data&apos;" type="reporter" category="lists"><comment x="0" y="0" w="209" collapsed="false">Reports a new list whose items are the same as in the input list, except that if two or more equal items appear in the input list, only the last one is kept in the result.</comment><header></header><code></code><translations>ca:elimina els duplicats de _&#xD;zh_CN:从列表 _ 中移除重复项目&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doIf"><block s="reportEquals"><block var="data"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIfElse"><block s="reportListContainsItem"><block s="reportCDR"><block var="data"/></block><block s="reportListItem"><l>1</l><block var="data"/></block></block><script><block s="doReport"><custom-block s="remove duplicates from %l"><block s="reportCDR"><block var="data"/></block></custom-block></block></script><script><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="data"/></block><custom-block s="remove duplicates from %l"><block s="reportCDR"><block var="data"/></block></custom-block></block></block></script></block></script></block></script></block-definition><block-definition s="%&apos;#&apos; map %&apos;function&apos; over %&apos;lists&apos;" type="reporter" category="lists"><comment x="0" y="0" w="225.00000000000003" collapsed="false">This block applies the given function to each item of the given list, like the primitive MAP block, but with two differences:
1. The # variable provided will contain the item number of the item currently being used in the given function: 1 for item 1, and so on. You read the variable in your function; don&apos;t set it.
2. You can provide more than one input list. If so, the lengths of all the lists should be the same, and the function you supply must expect as many inputs as you have lists (i.e., that many empty input slots in the function).</comment><header></header><code></code><translations>ca:_ mapeja _ sobre _&#xD;zh_CN:_ 映射 _ 来源 _&#xD;</translations><inputs><input type="%upvar"></input><input type="%repRing"></input><input type="%mult%l"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>mapone</l><l>mapmany</l></list></block><block s="doSetVar"><l>mapone</l><block s="reifyScript"><script><block s="doIf"><block s="reportListIsEmpty"><block var="data"/></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doSetVar"><l>#</l><block var="count"/></block><block s="doReport"><block s="reportCONS"><block s="evaluate"><block var="function"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><block s="evaluate"><block var="mapone"/><list><block s="reportCDR"><block var="data"/></block><block s="reportSum"><block var="count"/><l>1</l></block></list></block></block></block></script><list><l>data</l><l>count</l></list></block></block><block s="doSetVar"><l>mapmany</l><block s="reifyScript"><script><block s="doIf"><block s="reportListIsEmpty"><block s="reportListItem"><l>1</l><block var="data lists"/></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doSetVar"><l>#</l><block var="count"/></block><block s="doReport"><block s="reportCONS"><block s="evaluate"><block var="function"/><custom-block s="%upvar map %repRing over %mult%l"><l>#</l><block s="reifyReporter"><autolambda><block s="reportListItem"><l>1</l><l/></block></autolambda><list></list></block><list><l/></list></custom-block></block><block s="evaluate"><block var="mapmany"/><list><custom-block s="%upvar map %repRing over %mult%l"><l>#</l><block s="reifyReporter"><autolambda><block s="reportCDR"><l/></block></autolambda><list></list></block><list><l/></list></custom-block><block s="reportSum"><block var="count"/><l>1</l></block></list></block></block></block></script><list><l>data lists</l><l>count</l></list></block></block><block s="doIfElse"><block s="reportListIsEmpty"><block s="reportCDR"><block var="lists"/></block></block><script><block s="doReport"><block s="evaluate"><block var="mapone"/><list><block s="reportListItem"><l>1</l><block var="lists"/></block><l>1</l></list></block></block></script><script><block s="doReport"><block s="evaluate"><block var="mapmany"/><list><block var="lists"/><l>1</l></list></block></block></script></block></script></block></script></block-definition><block-definition s="%&apos;#&apos; keep items %&apos;pred&apos; from %&apos;data&apos;" type="reporter" category="lists"><comment x="0" y="0" w="217.1428571428572" collapsed="false">This block makes a new list containing selected items from the given list, like the primitive KEEP block.
What&apos;s different is that it provides the # variable for use in your predicate function. It will contain the item number (in the original list) of the item being examined by the predicate.</comment><header></header><code></code><translations>ca:_ manté els elements on _ de _&#xD;zh_CN:_ 保留满足条件 _ 的项,来源 _&#xD;</translations><inputs><input type="%upvar"></input><input type="%predRing"></input><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>keep-helper</l></list></block><block s="doSetVar"><l>keep-helper</l><block s="reifyScript"><script><block s="doWarp"><script><block s="doIf"><block s="reportListIsEmpty"><block var="data"/></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doSetVar"><l>#</l><block var="count"/></block><block s="doIfElse"><block s="evaluate"><block var="pred"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><script><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="data"/></block><block s="evaluate"><block var="keep-helper"/><list><block s="reportCDR"><block var="data"/></block><block s="reportSum"><block var="count"/><l>1</l></block></list></block></block></block></script><script><block s="doReport"><block s="evaluate"><block var="keep-helper"/><list><block s="reportCDR"><block var="data"/></block><block s="reportSum"><block var="count"/><l>1</l></block></list></block></block></script></block></script></block></script><list><l>data</l><l>count</l></list></block></block><block s="doReport"><block s="evaluate"><block var="keep-helper"/><list><block var="data"/><l>1</l></list></block></block></script></block-definition><block-definition s="%&apos;#&apos; for each %&apos;item&apos; of %&apos;data&apos; %&apos;action&apos;" type="command" category="lists"><comment x="0" y="0" w="228.57142857142858" collapsed="false">This block carries out the given script for each item of the given list, like the primitive FOR EACH.
What&apos;s different is that it provides the # variable, which will contain the item number in the list of each item in turn, 1 while processing item 1, and so on.</comment><header></header><code></code><translations>ca:_ per cada _ de _ _&#xD;zh_CN:_ 对每个项目 _ 来自列表 _ 执行 _&#xD;</translations><inputs><input type="%upvar"></input><input type="%upvar"></input><input type="%l"></input><input type="%ca"></input></inputs><script><block s="doSetVar"><l>#</l><l>1</l></block><block s="doUntil"><block s="reportListIsEmpty"><block var="data"/></block><script><block s="doSetVar"><l>item</l><block s="reportListItem"><l>1</l><block var="data"/></block></block><block s="doRun"><block var="action"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><block s="doSetVar"><l>data</l><block s="reportCDR"><block var="data"/></block></block><block s="doChangeVar"><l>#</l><l>1</l></block></script></block></script></block-definition><block-definition s="reverse vector %&apos;vector&apos;" type="reporter" category="operators"><header></header><code></code><translations>zh_CN:倒置矢量 _&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>reversedV</l><l>newVector</l><l>lastP</l></list></block><block s="doSetVar"><l>reversedV</l><custom-block s="reverse %l"><block var="vector"/></custom-block></block><block s="doSetVar"><l>newVector</l><block s="reportNewList"><list></list></block></block><block s="doIf"><block s="reportEquals"><block s="reportListItem"><l>1</l><block var="reversedV"/></block><l>!</l></block><script><block s="doDeleteFromList"><l>1</l><block var="reversedV"/></block></script></block><block s="doAddToList"><block s="reportNewList"><list><l>0</l><block s="reportListItem"><l>2</l><block s="reportListItem"><l>1</l><block var="reversedV"/></block></block></list></block><block var="newVector"/></block><block s="doSetVar"><l>lastP</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><custom-block s="for %upvar = %n step %n to %n %cs"><l>i</l><l>2</l><l>1</l><block s="reportListLength"><block var="reversedV"/></block><script><block s="doIfElse"><block s="reportEquals"><block s="reportListItem"><block var="i"/><block var="reversedV"/></block><l>!</l></block><script><block s="doSetVar"><l>lastP</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doInsertInList"><l>!</l><block s="reportListLength"><block var="newVector"/></block><block var="newVector"/></block></script><script><block s="doIfElse"><block var="lastP"/><script><block s="doAddToList"><block s="reportNewList"><list><block s="reportMonadic"><l><option>neg</option></l><block s="reportListItem"><l>1</l><block s="reportListItem"><block s="reportDifference"><block var="i"/><l>2</l></block><block var="reversedV"/></block></block></block><block s="reportListItem"><l>2</l><block s="reportListItem"><block var="i"/><block var="reversedV"/></block></block></list></block><block var="newVector"/></block><block s="doSetVar"><l>lastP</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><script><block s="doAddToList"><block s="reportNewList"><list><block s="reportMonadic"><l><option>neg</option></l><block s="reportListItem"><l>1</l><block s="reportListItem"><block s="reportDifference"><block var="i"/><l>1</l></block><block var="reversedV"/></block></block></block><block s="reportListItem"><l>2</l><block s="reportListItem"><block var="i"/><block var="reversedV"/></block></block></list></block><block var="newVector"/></block></script></block></script></block></script></custom-block><block s="doReport"><block var="newVector"/></block></script></block-definition><block-definition s="convert vector %&apos;vector&apos; scale %&apos;scale&apos; by seam %&apos;seam&apos;" type="reporter" category="operators"><header></header><code></code><translations>zh_CN:转换矢量 _ 比例 _ 针脚长度 _&#xD;</translations><inputs><input type="%l"></input><input type="%n">1</input><input type="%n">6</input></inputs><script><block s="doDeclareVariables"><list><l>newVector</l><l>deflection</l><l>buffer</l><l>length</l><l>tempV</l></list></block><block s="doSetVar"><l>newVector</l><block s="reportNewList"><list></list></block></block><block s="doSetVar"><l>buffer</l><block s="reportNewList"><list></list></block></block><block s="doSetVar"><l>deflection</l><l>0</l></block><block s="doWarp"><script><custom-block s="%upvar for each %upvar of %l %ca"><l>#</l><l>item</l><block var="vector"/><script><block s="doIfElse"><block s="reportOr"><block s="reportEquals"><block var="item"/><l>!</l></block><block s="reportEquals"><block s="reportListItem"><l>1</l><block var="item"/></block><l>!</l></block></block><script><block s="doIf"><block s="reportNot"><custom-block s="empty? %l"><block var="buffer"/></custom-block></block><script><block s="doAddToList"><block var="buffer"/><block var="newVector"/></block><block s="doSetVar"><l>buffer</l><block s="reportNewList"><list></list></block></block></script></block><block s="doAddToList"><l>!</l><block var="newVector"/></block></script><script><block s="doSetVar"><l>length</l><block s="reportProduct"><block s="reportListItem"><l>2</l><block var="item"/></block><block var="scale"/></block></block><block s="doIf"><block s="reportAnd"><block s="reportNot"><custom-block s="empty? %l"><block var="buffer"/></custom-block></block><block s="reportLessThan"><block s="reportMonadic"><l><option>abs</option></l><block s="reportDifference"><l>180</l><block s="reportListItem"><l>1</l><block var="item"/></block></block></block><l>95</l></block></block><script><block s="doAddToList"><block var="buffer"/><block var="newVector"/></block><block s="doSetVar"><l>buffer</l><block s="reportNewList"><list></list></block></block></script></block><block s="doIfElse"><custom-block s="empty? %l"><block var="buffer"/></custom-block><script><block s="doIfElse"><block s="reportGreaterThan"><block var="length"/><block s="reportProduct"><block var="seam"/><l>0.9</l></block></block><script><block s="doIfElse"><block s="reportEquals"><block var="deflection"/><l>0</l></block><script><block s="doAddToList"><block s="reportNewList"><list><block s="reportListItem"><l>1</l><block var="item"/></block><block var="length"/></list></block><block var="newVector"/></block></script><script><block s="doAddToList"><block s="reportNewList"><list><block s="reportSum"><block s="reportListItem"><l>1</l><block var="item"/></block><block var="deflection"/></block><block var="length"/></list></block><block var="newVector"/></block><block s="doSetVar"><l>deflection</l><l>0</l></block></script></block></script><script><block s="doIfElse"><block s="reportEquals"><block var="deflection"/><l>0</l></block><script><block s="doSetVar"><l>buffer</l><block s="reportNewList"><list><block s="reportListItem"><l>1</l><block var="item"/></block><block var="length"/></list></block></block></script><script><block s="doSetVar"><l>buffer</l><block s="reportNewList"><list><block s="reportSum"><block s="reportListItem"><l>1</l><block var="item"/></block><block var="deflection"/></block><block var="length"/></list></block></block><block s="doSetVar"><l>deflection</l><l>0</l></block></script></block></script></block></script><script><block s="doSetVar"><l>tempV</l><custom-block s="conbine 2 vectors vector1 %l vector2 %l deflection %upvar"><block var="buffer"/><block s="reportNewList"><list><block s="reportSum"><block s="reportListItem"><l>1</l><block var="item"/></block><block var="deflection"/></block><block var="length"/></list></block><l>defl</l></custom-block></block><block s="doIfElse"><block s="reportGreaterThan"><block s="reportListItem"><l>2</l><block var="tempV"/></block><block s="reportProduct"><block var="seam"/><l>0.9</l></block></block><script><block s="doAddToList"><block var="tempV"/><block var="newVector"/></block><block s="doSetVar"><l>buffer</l><block s="reportNewList"><list></list></block></block></script><script><block s="doSetVar"><l>buffer</l><block var="tempV"/></block></script></block><block s="doSetVar"><l>deflection</l><block var="defl"/></block></script></block></script></block></script></custom-block><block s="doIf"><block s="reportNot"><custom-block s="empty? %l"><block var="buffer"/></custom-block></block><script><block s="doAddToList"><block var="buffer"/><block var="newVector"/></block></script></block></script></block><block s="doReport"><block var="newVector"/></block></script></block-definition><block-definition s="conbine 2 vectors vector1 %&apos;vector1&apos; vector2 %&apos;vector2&apos; deflection %&apos;deflection&apos;" type="reporter" category="operators"><header></header><code></code><translations>zh_CN:合并矢量 矢量1 _ 矢量2 _ 偏移角度 _&#xD;</translations><inputs><input type="%l"></input><input type="%l"></input><input type="%upvar"></input></inputs><script><block s="doDeclareVariables"><list><l>angleC</l><l>a</l><l>b</l><l>c</l><l>angleB</l><l>angleA</l><l>angleV2</l></list></block><block s="doSetVar"><l>a</l><block s="reportListItem"><l>2</l><block var="vector1"/></block></block><block s="doSetVar"><l>b</l><block s="reportListItem"><l>2</l><block var="vector2"/></block></block><block s="doSetVar"><l>angleV2</l><block s="reportListItem"><l>1</l><block var="vector2"/></block></block><block s="doIf"><block s="reportGreaterThan"><block var="angleV2"/><l>180</l></block><script><block s="doSetVar"><l>angleV2</l><block s="reportDifference"><block var="angleV2"/><l>360</l></block></block></script></block><block s="doIfElse"><block s="reportGreaterThan"><block var="angleV2"/><l>0</l></block><script><block s="doSetVar"><l>angleC</l><block s="reportDifference"><l>180</l><block var="angleV2"/></block></block></script><script><block s="doSetVar"><l>angleC</l><block s="reportSum"><l>180</l><block var="angleV2"/></block></block></script></block><block s="doSetVar"><l>c</l><block s="reportMonadic"><l><option>sqrt</option></l><block s="reportDifference"><block s="reportSum"><block s="reportPower"><block var="a"/><l>2</l></block><block s="reportPower"><block var="b"/><l>2</l></block></block><block s="reportProduct"><block s="reportProduct"><l>2</l><block s="reportProduct"><block var="a"/><block var="b"/></block></block><block s="reportMonadic"><l><option>cos</option></l><block var="angleC"/></block></block></block></block></block><block s="doSetVar"><l>angleA</l><block s="reportMonadic"><l><option>acos</option></l><block s="reportQuotient"><block s="reportDifference"><block s="reportSum"><block s="reportPower"><block var="b"/><l>2</l></block><block s="reportPower"><block var="c"/><l>2</l></block></block><block s="reportPower"><block var="a"/><l>2</l></block></block><block s="reportProduct"><l>2</l><block s="reportProduct"><block var="b"/><block var="c"/></block></block></block></block></block><block s="doSetVar"><l>angleB</l><block s="reportMonadic"><l><option>acos</option></l><block s="reportQuotient"><block s="reportDifference"><block s="reportSum"><block s="reportPower"><block var="a"/><l>2</l></block><block s="reportPower"><block var="c"/><l>2</l></block></block><block s="reportPower"><block var="b"/><l>2</l></block></block><block s="reportProduct"><l>2</l><block s="reportProduct"><block var="a"/><block var="c"/></block></block></block></block></block><block s="doIfElse"><block s="reportGreaterThan"><block var="angleV2"/><l>0</l></block><script><block s="doSetVar"><l>deflection</l><block var="angleA"/></block><block s="doReport"><block s="reportNewList"><list><block s="reportSum"><block s="reportListItem"><l>1</l><block var="vector1"/></block><block var="angleB"/></block><block var="c"/></list></block></block></script><script><block s="doSetVar"><l>deflection</l><block s="reportMonadic"><l><option>neg</option></l><block var="angleA"/></block></block><block s="doReport"><block s="reportNewList"><list><block s="reportDifference"><block s="reportListItem"><l>1</l><block var="vector1"/></block><block var="angleB"/></block><block var="c"/></list></block></block></script></block></script></block-definition><block-definition s="draw from %&apos;input&apos;" type="command" category="pen"><header></header><code></code><translations>zh_CN:按目标点及弧度绘制 _&#xD;</translations><inputs><input type="%mlt"></input></inputs><script><block s="doDeclareVariables"><list><l>line</l></list></block><custom-block s="for each %upvar of %l %cs"><l>item</l><block s="reportTextSplit"><block var="input"/><l><option>line</option></l></block><script><block s="doIfElse"><block s="reportEquals"><block var="item"/><l>!</l></block><script><block s="up"></block></script><script><block s="doSetVar"><l>line</l><block s="reportTextSplit"><block var="item"/><l><option>csv</option></l></block></block><block s="doIf"><block s="reportGreaterThan"><block s="reportListLength"><block var="line"/></block><l>2</l></block><script><block s="doIfElse"><block s="isPenDown"></block><script><block s="doIfElse"><block s="reportGreaterThan"><block s="reportListItem"><l>3</l><block var="line"/></block><l>0</l></block><script><block s="doIfElse"><block s="reportEquals"><block s="reportListLength"><block var="line"/></block><l>3</l></block><script><custom-block s="go to %l style %cmdRing by %n"><block s="reportNewList"><list><block s="reportListItem"><l>1</l><block var="line"/></block><block s="reportListItem"><l>2</l><block var="line"/></block></list></block><block s="reifyScript"><script><custom-block s="arc %n angle %n direction %txt style %cmdRing"><l></l><block s="reportListItem"><l>3</l><block var="line"/></block><l>clockwise</l><block s="reifyScript"><script></script><list></list></block></custom-block></script><list></list></block><l>0</l></custom-block></script><script><custom-block s="go to %l style %cmdRing by %n"><block s="reportNewList"><list><block s="reportListItem"><l>1</l><block var="line"/></block><block s="reportListItem"><l>2</l><block var="line"/></block></list></block><block s="reifyScript"><script><custom-block s="arc %n angle %n in %n direction %txt style %cmdRing"><l></l><block s="reportListItem"><l>3</l><block var="line"/></block><block s="reportListItem"><l>4</l><block var="line"/></block><l>clockwise</l><block s="reifyScript"><script></script><list></list></block></custom-block></script><list></list></block><l>0</l></custom-block></script></block></script><script><block s="doIfElse"><block s="reportLessThan"><block s="reportListItem"><l>3</l><block var="line"/></block><l>0</l></block><script><block s="doIfElse"><block s="reportEquals"><block s="reportListLength"><block var="line"/></block><l>3</l></block><script><custom-block s="go to %l style %cmdRing by %n"><block s="reportNewList"><list><block s="reportListItem"><l>1</l><block var="line"/></block><block s="reportListItem"><l>2</l><block var="line"/></block></list></block><block s="reifyScript"><script><custom-block s="arc %n angle %n direction %txt style %cmdRing"><l></l><block s="reportMonadic"><l><option>abs</option></l><block s="reportListItem"><l>3</l><block var="line"/></block></block><l>anticlockwise</l><block s="reifyScript"><script></script><list></list></block></custom-block></script><list></list></block><l>0</l></custom-block></script><script><custom-block s="go to %l style %cmdRing by %n"><block s="reportNewList"><list><block s="reportListItem"><l>1</l><block var="line"/></block><block s="reportListItem"><l>2</l><block var="line"/></block></list></block><block s="reifyScript"><script><custom-block s="arc %n angle %n in %n direction %txt style %cmdRing"><l></l><block s="reportMonadic"><l><option>abs</option></l><block s="reportListItem"><l>3</l><block var="line"/></block></block><block s="reportListItem"><l>4</l><block var="line"/></block><l>anticlockwise</l><block s="reifyScript"><script></script><list></list></block></custom-block></script><list></list></block><l>0</l></custom-block></script></block></script><script><custom-block s="go to %l style %cmdRing by %n"><block s="reportNewList"><list><block s="reportListItem"><l>1</l><block var="line"/></block><block s="reportListItem"><l>2</l><block var="line"/></block></list></block><block s="reifyScript"><script></script><list></list></block><l>2</l></custom-block></script></block></script></block></script><script><block s="gotoXY"><block s="reportListItem"><l>1</l><block var="line"/></block><block s="reportListItem"><l>2</l><block var="line"/></block></block><block s="down"></block></script></block></script></block></script></block></script></custom-block></script></block-definition><block-definition s="go to %&apos;dest&apos; style %&apos;styleScript&apos; by %&apos;stepLength&apos;" type="command" category="motion"><header></header><code></code><translations>zh_CN:移到 _ 方式 _ 步长 _&#xD;</translations><inputs><input type="%l"></input><input type="%cmdRing">no
&#xD; <options>no
foldLine
randomFoldLine
curveLine</options></input><input type="%n">10</input></inputs><script><block s="doDeclareVariables"><list><l>distance</l></list></block><block s="doIf"><block s="reportEquals"><block var="stepLength"/><l>0</l></block><script><block s="doSetVar"><l>stepLength</l><custom-block s="lineLength %l"><block var="dest"/></custom-block></block></script></block><block s="doIf"><custom-block s="Is %cmdRing empty?"><block var="styleScript"/></custom-block><script><block s="doSetVar"><l>styleScript</l><block s="reifyScript"><script><block s="forward"><l></l></block></script><list></list></block></block></script></block><block s="doSetVar"><l>distance</l><custom-block s="lineLength %l"><block var="dest"/></custom-block></block><block s="doFaceTowards"><block var="dest"/></block><block s="doUntil"><block s="reportLessThan"><block var="distance"/><block s="reportSum"><block var="stepLength"/><l>0.5</l></block></block><script><block s="doRun"><block var="styleScript"/><list><block var="stepLength"/></list></block><block s="doSetVar"><l>distance</l><custom-block s="lineLength %l"><block var="dest"/></custom-block></block></script></block><block s="doRun"><block var="styleScript"/><list><block var="distance"/></list></block></script></block-definition><block-definition s="move %&apos;distance&apos; style %&apos;styleScript&apos; by %&apos;stepLength&apos;" type="command" category="motion"><header></header><code></code><translations>zh_CN:移动 _ 步 方式 _ 步长 _&#xD;</translations><inputs><input type="%n">50</input><input type="%cmdRing"></input><input type="%n">10</input></inputs><script><block s="doDeclareVariables"><list><l>dist</l><l>dir</l></list></block><block s="doIf"><block s="reportEquals"><block var="stepLength"/><l>0</l></block><script><block s="doSetVar"><l>stepLength</l><block s="reportMonadic"><l><option>abs</option></l><block var="distance"/></block></block></script></block><block s="doSetVar"><l>dir</l><l>1</l></block><block s="doIf"><block s="reportLessThan"><block var="distance"/><l>0</l></block><script><block s="doSetVar"><l>dir</l><l>-1</l></block></script></block><block s="doIf"><custom-block s="Is %cmdRing empty?"><block var="styleScript"/></custom-block><script><block s="doSetVar"><l>styleScript</l><block s="reifyScript"><script><block s="forward"><l></l></block></script><list></list></block></block></script></block><block s="doSetVar"><l>dist</l><block s="reportMonadic"><l><option>abs</option></l><block var="distance"/></block></block><block s="doUntil"><block s="reportLessThan"><block var="dist"/><block s="reportProduct"><block var="stepLength"/><l>2</l></block></block><script><block s="doRun"><block var="styleScript"/><list><block s="reportProduct"><block var="dir"/><block var="stepLength"/></block></list></block><block s="doChangeVar"><l>dist</l><block s="reportProduct"><l>-1</l><block var="stepLength"/></block></block></script></block><block s="doIfElse"><block s="reportGreaterThan"><block var="dist"/><block s="reportProduct"><block var="stepLength"/><l>1.5</l></block></block><script><block s="doRun"><block var="styleScript"/><list><block s="reportProduct"><block var="dir"/><block var="stepLength"/></block></list></block><block s="doRun"><block var="styleScript"/><list><block s="reportProduct"><block var="dir"/><block s="reportDifference"><block var="dist"/><block var="stepLength"/></block></block></list></block></script><script><block s="doRun"><block var="styleScript"/><list><block s="reportProduct"><block var="dir"/><block var="dist"/></block></list></block></script></block></script></block-definition><block-definition s="%&apos;#&apos; move %&apos;distance&apos; style %&apos;styleScript&apos; by %&apos;stepLength&apos;" type="command" category="motion"><header></header><code></code><translations>zh_CN:_ 移动 _ 步 方式 _ 步长 _&#xD;</translations><inputs><input type="%upvar"></input><input type="%n">50</input><input type="%cmdRing"></input><input type="%n">10</input></inputs><script><block s="doDeclareVariables"><list><l>dist</l><l>dir</l></list></block><block s="doSetVar"><l>dir</l><l>1</l></block><block s="doIf"><block s="reportLessThan"><block var="distance"/><l>0</l></block><script><block s="doSetVar"><l>dir</l><l>-1</l></block></script></block><block s="doIf"><custom-block s="Is %cmdRing empty?"><block var="styleScript"/></custom-block><script><block s="doSetVar"><l>styleScript</l><block s="reifyScript"><script><block s="forward"><l></l></block></script><list></list></block></block></script></block><block s="doSetVar"><l>dist</l><block s="reportMonadic"><l><option>abs</option></l><block var="distance"/></block></block><block s="doSetVar"><l>#</l><l>1</l></block><block s="doUntil"><block s="reportLessThan"><block var="dist"/><block s="reportProduct"><block var="stepLength"/><l>2</l></block></block><script><block s="doRun"><block var="styleScript"/><list><block s="reportProduct"><block var="dir"/><block var="stepLength"/></block></list></block><block s="doChangeVar"><l>dist</l><block s="reportProduct"><l>-1</l><block var="stepLength"/></block></block><block s="doChangeVar"><l>#</l><l>1</l></block></script></block><block s="doIfElse"><block s="reportGreaterThan"><block var="dist"/><block s="reportProduct"><block var="stepLength"/><l>1.5</l></block></block><script><block s="doRun"><block var="styleScript"/><list><block s="reportProduct"><block var="dir"/><block var="stepLength"/></block></list></block><block s="doChangeVar"><l>#</l><l>1</l></block><block s="doRun"><block var="styleScript"/><list><block s="reportProduct"><block var="dir"/><block s="reportDifference"><block var="dist"/><block var="stepLength"/></block></block></list></block></script><script><block s="doRun"><block var="styleScript"/><list><block s="reportProduct"><block var="dir"/><block var="dist"/></block></list></block></script></block></script></block-definition><block-definition s="arc %&apos;distance&apos; angle %&apos;angle&apos; direction %&apos;direction&apos; style %&apos;styleScript&apos;" type="command" category="motion"><header></header><code></code><translations>zh_CN:圆弧 _ 步 角度 _ 方向 _ 方式 _&#xD;</translations><inputs><input type="%n">50</input><input type="%n">30</input><input type="%txt">clockwise<options>clockwise&#xD;anticlockwise</options></input><input type="%cmdRing"></input></inputs><script><block s="doDeclareVariables"><list><l>r</l><l>segLength</l><l>dir</l><l>sections</l></list></block><block s="doIf"><custom-block s="Is %cmdRing empty?"><block var="styleScript"/></custom-block><script><block s="doSetVar"><l>styleScript</l><block s="reifyScript"><script><block s="forward"><l></l></block></script><list></list></block></block></script></block><block s="doSetVar"><l>dir</l><block s="direction"></block></block><block s="doSetVar"><l>sections</l><block s="reportMonadic"><l><option>ceiling</option></l><block s="reportQuotient"><block var="distance"/><l>3</l></block></block></block><block s="doSetVar"><l>r</l><block s="reportQuotient"><block s="reportQuotient"><block var="distance"/><l>2</l></block><block s="reportMonadic"><l><option>sin</option></l><block s="reportQuotient"><block var="angle"/><l>2</l></block></block></block></block><block s="doSetVar"><l>segLength</l><block s="reportMonadic"><l><option>sqrt</option></l><block s="reportProduct"><block s="reportProduct"><block s="reportProduct"><block var="r"/><block var="r"/></block><l>2</l></block><block s="reportDifference"><l>1</l><block s="reportMonadic"><l><option>cos</option></l><block s="reportQuotient"><block var="angle"/><block var="sections"/></block></block></block></block></block></block><block s="doIfElse"><block s="reportEquals"><block var="direction"/><l>clockwise</l></block><script><block s="turnLeft"><block s="reportQuotient"><block s="reportDifference"><block var="angle"/><block s="reportQuotient"><block var="angle"/><block var="sections"/></block></block><l>2</l></block></block><block s="doRepeat"><block var="sections"/><script><block s="doRun"><block var="styleScript"/><list><block var="segLength"/></list></block><block s="turn"><block s="reportQuotient"><block var="angle"/><block var="sections"/></block></block></script></block></script><script><block s="turn"><block s="reportQuotient"><block s="reportDifference"><block var="angle"/><block s="reportQuotient"><block var="angle"/><block var="sections"/></block></block><l>2</l></block></block><block s="doRepeat"><block var="sections"/><script><block s="doRun"><block var="styleScript"/><list><block var="segLength"/></list></block><block s="turnLeft"><block s="reportQuotient"><block var="angle"/><block var="sections"/></block></block></script></block></script></block><block s="setHeading"><block var="dir"/></block></script></block-definition><block-definition s="arc %&apos;distance&apos; angle %&apos;angle&apos; in %&apos;sections&apos; direction %&apos;direction&apos; style %&apos;styleScript&apos;" type="command" category="motion"><header></header><code></code><translations>zh_CN:圆弧 _ 步 角度 _ 分段数 _ 方向 _ 方式 _&#xD;</translations><inputs><input type="%n">50</input><input type="%n">30</input><input type="%n">10</input><input type="%txt">clockwise<options>clockwise&#xD;anticlockwise</options></input><input type="%cmdRing"></input></inputs><script><block s="doDeclareVariables"><list><l>r</l><l>segLength</l><l>dir</l></list></block><block s="doIf"><custom-block s="Is %cmdRing empty?"><block var="styleScript"/></custom-block><script><block s="doSetVar"><l>styleScript</l><block s="reifyScript"><script><block s="forward"><l></l></block></script><list></list></block></block></script></block><block s="doSetVar"><l>dir</l><block s="direction"></block></block><block s="doSetVar"><l>r</l><block s="reportQuotient"><block s="reportQuotient"><block var="distance"/><l>2</l></block><block s="reportMonadic"><l><option>sin</option></l><block s="reportQuotient"><block var="angle"/><l>2</l></block></block></block></block><block s="doSetVar"><l>segLength</l><block s="reportMonadic"><l><option>sqrt</option></l><block s="reportProduct"><block s="reportProduct"><block s="reportProduct"><block var="r"/><block var="r"/></block><l>2</l></block><block s="reportDifference"><l>1</l><block s="reportMonadic"><l><option>cos</option></l><block s="reportQuotient"><block var="angle"/><block var="sections"/></block></block></block></block></block></block><block s="doIfElse"><block s="reportEquals"><block var="direction"/><l>clockwise</l></block><script><block s="turnLeft"><block s="reportQuotient"><block s="reportDifference"><block var="angle"/><block s="reportQuotient"><block var="angle"/><block var="sections"/></block></block><l>2</l></block></block><block s="doRepeat"><block var="sections"/><script><block s="doRun"><block var="styleScript"/><list><block var="segLength"/></list></block><block s="turn"><block s="reportQuotient"><block var="angle"/><block var="sections"/></block></block></script></block></script><script><block s="turn"><block s="reportQuotient"><block s="reportDifference"><block var="angle"/><block s="reportQuotient"><block var="angle"/><block var="sections"/></block></block><l>2</l></block></block><block s="doRepeat"><block var="sections"/><script><block s="doRun"><block var="styleScript"/><list><block var="segLength"/></list></block><block s="turnLeft"><block s="reportQuotient"><block var="angle"/><block var="sections"/></block></block></script></block></script></block><block s="setHeading"><block var="dir"/></block></script><scripts><script x="484.0000019999997" y="318.0000019999999"><block s="reportDifference"><l></l><l>1</l></block></script><script x="514.0000019999997" y="445.00000199999994"><block s="reportDifference"><l></l><l>1</l></block></script></scripts></block-definition><block-definition s="%&apos;#&apos; arc %&apos;distance&apos; angle %&apos;angle&apos; in %&apos;sections&apos; direction %&apos;direction&apos; style %&apos;styleScript&apos;" type="command" category="motion"><header></header><code></code><translations>zh_CN:_ 圆弧 _ 步 角度 _ 分段数 _ 方向 _ 方式 _&#xD;</translations><inputs><input type="%upvar"></input><input type="%n">50</input><input type="%n">30</input><input type="%n">10</input><input type="%txt">clockwise<options>clockwise&#xD;anticlockwise</options></input><input type="%cmdRing"></input></inputs><script><block s="doDeclareVariables"><list><l>r</l><l>segLength</l><l>dir</l></list></block><block s="doIf"><custom-block s="Is %cmdRing empty?"><block var="styleScript"/></custom-block><script><block s="doSetVar"><l>styleScript</l><block s="reifyScript"><script><block s="forward"><l></l></block></script><list></list></block></block></script></block><block s="doSetVar"><l>dir</l><block s="direction"></block></block><block s="doSetVar"><l>r</l><block s="reportQuotient"><block s="reportQuotient"><block var="distance"/><l>2</l></block><block s="reportMonadic"><l><option>sin</option></l><block s="reportQuotient"><block var="angle"/><l>2</l></block></block></block></block><block s="doSetVar"><l>segLength</l><block s="reportMonadic"><l><option>sqrt</option></l><block s="reportProduct"><block s="reportProduct"><block s="reportProduct"><block var="r"/><block var="r"/></block><l>2</l></block><block s="reportDifference"><l>1</l><block s="reportMonadic"><l><option>cos</option></l><block s="reportQuotient"><block var="angle"/><block var="sections"/></block></block></block></block></block></block><block s="doSetVar"><l>#</l><l>1</l></block><block s="doIfElse"><block s="reportEquals"><block var="direction"/><l>clockwise</l></block><script><block s="turnLeft"><block s="reportQuotient"><block s="reportDifference"><block var="angle"/><block s="reportQuotient"><block var="angle"/><block var="sections"/></block></block><l>2</l></block></block><block s="doRepeat"><block var="sections"/><script><block s="doRun"><block var="styleScript"/><list><block var="segLength"/></list></block><block s="turn"><block s="reportQuotient"><block var="angle"/><block var="sections"/></block></block><block s="doChangeVar"><l>#</l><l>1</l></block></script></block></script><script><block s="turn"><block s="reportQuotient"><block s="reportDifference"><block var="angle"/><block s="reportQuotient"><block var="angle"/><block var="sections"/></block></block><l>2</l></block></block><block s="doRepeat"><block var="sections"/><script><block s="doRun"><block var="styleScript"/><list><block var="segLength"/></list></block><block s="turnLeft"><block s="reportQuotient"><block var="angle"/><block var="sections"/></block></block><block s="doChangeVar"><l>#</l><l>1</l></block></script></block></script></block><block s="setHeading"><block var="dir"/></block></script></block-definition><block-definition s="circle centre %&apos;centre&apos; diam %&apos;diam&apos;" type="command" category="motion"><header></header><code></code><translations>zh_CN:圆形 圆心 _ 直径 _&#xD;</translations><inputs><input type="%l"></input><input type="%n">20</input></inputs><script><block s="up"></block><block s="doGotoObject"><block var="centre"/></block><block s="turn"><l>180</l></block><block s="forward"><block s="reportQuotient"><block var="diam"/><l>2</l></block></block><block s="turn"><l>180</l></block><block s="down"></block><custom-block s="arc %n angle %n in %n direction %txt style %cmdRing"><block var="diam"/><l>180</l><block s="reportRound"><block s="reportQuotient"><block var="diam"/><l>3</l></block></block><l>clockwise</l><block s="reifyScript"><script><block s="forward"><l></l></block></script><list></list></block></custom-block><block s="turn"><l>180</l></block><custom-block s="arc %n angle %n in %n direction %txt style %cmdRing"><block var="diam"/><l>180</l><block s="reportRound"><block s="reportQuotient"><block var="diam"/><l>3</l></block></block><l>clockwise</l><block s="reifyScript"><script><block s="forward"><l></l></block></script><list></list></block></custom-block><block s="up"></block><block s="turn"><l>180</l></block><block s="forward"><block s="reportQuotient"><block var="diam"/><l>2</l></block></block></script></block-definition><block-definition s="circle diam %&apos;diam&apos; in %&apos;sections&apos; direction %&apos;direction&apos; style %&apos;styleScript&apos;" type="command" category="motion"><variables><list struct="atomic" id="3923">part1,part2</list></variables><header></header><code></code><translations>zh_CN:圆形 直径 _ 分段数 _ 方向 _ 方式 _&#xD;</translations><inputs><input type="%n">100</input><input type="%n">20</input><input type="%txt">clockwise<options>clockwise&#xD;anticlockwise</options></input><input type="%cmdRing"></input></inputs><script><block s="doDeclareVariables"><list><l>r</l><l>segLength</l><l>dir</l><l>angle</l></list></block><block s="doSetVar"><l>angle</l><l>360</l></block><block s="doIf"><custom-block s="Is %cmdRing empty?"><block var="styleScript"/></custom-block><script><block s="doSetVar"><l>styleScript</l><block s="reifyScript"><script><block s="forward"><l></l></block></script><list></list></block></block></script></block><block s="doSetVar"><l>dir</l><block s="direction"></block></block><block s="doSetVar"><l>r</l><block s="reportQuotient"><block var="diam"/><l>2</l></block></block><block s="doSetVar"><l>segLength</l><block s="reportMonadic"><l><option>sqrt</option></l><block s="reportProduct"><block s="reportProduct"><block s="reportProduct"><block var="r"/><block var="r"/></block><l>2</l></block><block s="reportDifference"><l>1</l><block s="reportMonadic"><l><option>cos</option></l><block s="reportQuotient"><block var="angle"/><block var="sections"/></block></block></block></block></block></block><block s="doIfElse"><block s="reportEquals"><block var="direction"/><l>clockwise</l></block><script><block s="turnLeft"><block s="reportQuotient"><block s="reportDifference"><l>180</l><block s="reportQuotient"><block var="angle"/><block var="sections"/></block></block><l>2</l></block></block><block s="doRepeat"><block var="sections"/><script><block s="doRun"><block var="styleScript"/><list><block var="segLength"/></list></block><block s="turn"><block s="reportQuotient"><block var="angle"/><block var="sections"/></block></block></script></block></script><script><block s="turn"><block s="reportQuotient"><block s="reportDifference"><l>180</l><block s="reportQuotient"><block var="angle"/><block var="sections"/></block></block><l>2</l></block></block><block s="doRepeat"><block var="sections"/><script><block s="doRun"><block var="styleScript"/><list><block var="segLength"/></list></block><block s="turnLeft"><block s="reportQuotient"><block var="angle"/><block var="sections"/></block></block></script></block></script></block><block s="setHeading"><block var="dir"/></block></script></block-definition><block-definition s="%&apos;#&apos; circle diam %&apos;diam&apos; in %&apos;sections&apos; direction %&apos;direction&apos; style %&apos;styleScript&apos;" type="command" category="motion"><variables><list struct="atomic" id="4047">part1,part2</list></variables><header></header><code></code><translations>zh_CN:_ 圆形 直径 _ 分段数 _ 方向 _ 方式 _&#xD;</translations><inputs><input type="%upvar"></input><input type="%n">100</input><input type="%n">20</input><input type="%txt">clockwise<options>clockwise&#xD;anticlockwise</options></input><input type="%cmdRing"></input></inputs><script><block s="doDeclareVariables"><list><l>r</l><l>segLength</l><l>dir</l><l>angle</l></list></block><block s="doSetVar"><l>angle</l><l>360</l></block><block s="doIf"><custom-block s="Is %cmdRing empty?"><block var="styleScript"/></custom-block><script><block s="doSetVar"><l>styleScript</l><block s="reifyScript"><script><block s="forward"><l></l></block></script><list></list></block></block></script></block><block s="doSetVar"><l>dir</l><block s="direction"></block></block><block s="doSetVar"><l>r</l><block s="reportQuotient"><block var="diam"/><l>2</l></block></block><block s="doSetVar"><l>segLength</l><block s="reportMonadic"><l><option>sqrt</option></l><block s="reportProduct"><block s="reportProduct"><block s="reportProduct"><block var="r"/><block var="r"/></block><l>2</l></block><block s="reportDifference"><l>1</l><block s="reportMonadic"><l><option>cos</option></l><block s="reportQuotient"><block var="angle"/><block var="sections"/></block></block></block></block></block></block><block s="doSetVar"><l>#</l><l>1</l></block><block s="doIfElse"><block s="reportEquals"><block var="direction"/><l>clockwise</l></block><script><block s="turnLeft"><block s="reportQuotient"><block s="reportDifference"><l>180</l><block s="reportQuotient"><block var="angle"/><block var="sections"/></block></block><l>2</l></block></block><block s="doRepeat"><block var="sections"/><script><block s="doRun"><block var="styleScript"/><list><block var="segLength"/></list></block><block s="turn"><block s="reportQuotient"><block var="angle"/><block var="sections"/></block></block><block s="doChangeVar"><l>#</l><l>1</l></block></script></block></script><script><block s="turn"><block s="reportQuotient"><block s="reportDifference"><l>180</l><block s="reportQuotient"><block var="angle"/><block var="sections"/></block></block><l>2</l></block></block><block s="doRepeat"><block var="sections"/><script><block s="doRun"><block var="styleScript"/><list><block var="segLength"/></list></block><block s="turnLeft"><block s="reportQuotient"><block var="angle"/><block var="sections"/></block></block><block s="doChangeVar"><l>#</l><l>1</l></block></script></block></script></block><block s="setHeading"><block var="dir"/></block></script></block-definition><block-definition s="fold line %&apos;distance&apos; steps width %&apos;range&apos; direction %&apos;direction&apos; style %&apos;styleScript&apos;" type="command" category="motion"><variables><list struct="atomic" id="4180">line1,line2,dir</list></variables><header></header><code></code><translations>zh_CN:折线 _ 步 宽度 _ 方向 _ 方式 _&#xD;</translations><inputs><input type="%n">10</input><input type="%n">10</input><input type="%txt">left<options>left&#xD;right&#xD;middle</options></input><input type="%cmdRing"></input></inputs><script><block s="doDeclareVariables"><list><l>angle</l><l>chord</l></list></block><block s="doIf"><custom-block s="Is %cmdRing empty?"><block var="styleScript"/></custom-block><script><block s="doSetVar"><l>styleScript</l><block s="reifyScript"><script><block s="forward"><l></l></block></script><list></list></block></block></script></block><block s="doSetVar"><l>angle</l><block s="reportMonadic"><l><option>atan</option></l><block s="reportQuotient"><block var="range"/><block s="reportQuotient"><block var="distance"/><l>2</l></block></block></block></block><block s="doSetVar"><l>chord</l><block s="reportQuotient"><block var="range"/><block s="reportMonadic"><l><option>sin</option></l><block var="angle"/></block></block></block><block s="doIfElse"><block s="reportEquals"><block var="direction"/><l>middle</l></block><script><custom-block s="fold line %n steps width %n direction %txt style %cmdRing"><block s="reportQuotient"><block var="distance"/><l>2</l></block><block s="reportQuotient"><block var="range"/><l>2</l></block><l>left</l><block var="styleScript"/></custom-block><custom-block s="fold line %n steps width %n direction %txt style %cmdRing"><block s="reportQuotient"><block var="distance"/><l>2</l></block><block s="reportQuotient"><block var="range"/><l>2</l></block><l>right</l><block var="styleScript"/></custom-block></script><script><block s="doIfElse"><block s="reportEquals"><block var="direction"/><l>left</l></block><script><block s="turnLeft"><block var="angle"/></block><block s="doRun"><block var="styleScript"/><list><block var="chord"/></list></block><block s="turn"><block s="reportProduct"><l>2</l><block var="angle"/></block></block><block s="doRun"><block var="styleScript"/><list><block var="chord"/></list></block><block s="turnLeft"><block var="angle"/></block></script><script><block s="turn"><block var="angle"/></block><block s="doRun"><block var="styleScript"/><list><block var="chord"/></list></block><block s="turnLeft"><block s="reportProduct"><l>2</l><block var="angle"/></block></block><block s="doRun"><block var="styleScript"/><list><block var="chord"/></list></block><block s="turn"><block var="angle"/></block></script></block></script></block></script></block-definition><block-definition s="fold line %&apos;distance&apos; steps width %&apos;range&apos; direction %&apos;direction&apos; first style %&apos;styleScript1&apos; second style %&apos;styleScript2&apos;" type="command" category="motion"><variables><list struct="atomic" id="4303">line1,line2,dir</list></variables><header></header><code></code><translations>zh_CN:折线 _ 步 宽度 _ 方向 _ 方式1 _ 方式2 _&#xD;</translations><inputs><input type="%n">10</input><input type="%n">10</input><input type="%txt">left<options>left&#xD;right</options></input><input type="%cmdRing"></input><input type="%cmdRing"></input></inputs><script><block s="doDeclareVariables"><list><l>angle</l><l>chord</l></list></block><block s="doIf"><custom-block s="Is %cmdRing empty?"><block var="styleScript1"/></custom-block><script><block s="doSetVar"><l>styleScript1</l><block s="reifyScript"><script><block s="forward"><l></l></block></script><list></list></block></block></script></block><block s="doIf"><custom-block s="Is %cmdRing empty?"><block var="styleScript2"/></custom-block><script><block s="doSetVar"><l>styleScript2</l><block var="styleScript1"/></block></script></block><block s="doSetVar"><l>angle</l><block s="reportMonadic"><l><option>atan</option></l><block s="reportQuotient"><block var="range"/><block s="reportQuotient"><block var="distance"/><l>2</l></block></block></block></block><block s="doSetVar"><l>chord</l><block s="reportQuotient"><block var="range"/><block s="reportMonadic"><l><option>sin</option></l><block var="angle"/></block></block></block><block s="doIfElse"><block s="reportEquals"><block var="direction"/><l>left</l></block><script><block s="turnLeft"><block var="angle"/></block><block s="doRun"><block var="styleScript1"/><list><block var="chord"/></list></block><block s="turn"><block s="reportProduct"><l>2</l><block var="angle"/></block></block><block s="doRun"><block var="styleScript2"/><list><block var="chord"/></list></block><block s="turnLeft"><block var="angle"/></block></script><script><block s="turn"><block var="angle"/></block><block s="doRun"><block var="styleScript1"/><list><block var="chord"/></list></block><block s="turnLeft"><block s="reportProduct"><l>2</l><block var="angle"/></block></block><block s="doRun"><block var="styleScript2"/><list><block var="chord"/></list></block><block s="turn"><block var="angle"/></block></script></block></script></block-definition><block-definition s="wall %&apos;distance&apos; steps direction %&apos;direction&apos; style %&apos;styleScript&apos;" type="command" category="motion"><header></header><code></code><translations>zh_CN:方波 _ 步 方向 _ 方式 _&#xD;</translations><inputs><input type="%n">20</input><input type="%txt">left<options>left&#xD;right</options></input><input type="%cmdRing"></input></inputs><script><block s="doDeclareVariables"><list><l>sideLength</l></list></block><block s="doIf"><custom-block s="Is %cmdRing empty?"><block var="styleScript"/></custom-block><script><block s="doSetVar"><l>styleScript</l><block s="reifyScript"><script><block s="forward"><l></l></block></script><list></list></block></block></script></block><block s="doSetVar"><l>sideLength</l><block s="reportQuotient"><block var="distance"/><l>2</l></block></block><block s="doIfElse"><block s="reportEquals"><block var="direction"/><l>left</l></block><script><block s="turnLeft"><l>90</l></block><block s="doRun"><block var="styleScript"/><list><block var="sideLength"/></list></block><block s="turn"><l>90</l></block><block s="doRun"><block var="styleScript"/><list><block var="sideLength"/></list></block><block s="turn"><l>90</l></block><block s="doRun"><block var="styleScript"/><list><block var="sideLength"/></list></block><block s="turnLeft"><l>90</l></block><block s="doRun"><block var="styleScript"/><list><block var="sideLength"/></list></block></script><script><block s="turn"><l>90</l></block><block s="doRun"><block var="styleScript"/><list><block var="sideLength"/></list></block><block s="turnLeft"><l>90</l></block><block s="doRun"><block var="styleScript"/><list><block var="sideLength"/></list></block><block s="turnLeft"><l>90</l></block><block s="doRun"><block var="styleScript"/><list><block var="sideLength"/></list></block><block s="turn"><l>90</l></block><block s="doRun"><block var="styleScript"/><list><block var="sideLength"/></list></block></script></block></script></block-definition><block-definition s="bar %&apos;distance&apos; steps width %&apos;range&apos; direction %&apos;direction&apos; style %&apos;styleScript&apos;" type="command" category="motion"><header></header><code></code><translations>zh_CN:方波 _ 步 宽度 _ 方向 _ 方式 _&#xD;</translations><inputs><input type="%n">20</input><input type="%n">20</input><input type="%txt">left<options>left&#xD;right&#xD;middle</options></input><input type="%cmdRing"></input></inputs><script><block s="doIf"><custom-block s="Is %cmdRing empty?"><block var="styleScript"/></custom-block><script><block s="doSetVar"><l>styleScript</l><block s="reifyScript"><script><block s="forward"><l></l></block></script><list></list></block></block></script></block><block s="doIfElse"><block s="reportEquals"><block var="direction"/><l>left</l></block><script><block s="turnLeft"><l>90</l></block><block s="doRun"><block var="styleScript"/><list><block var="range"/></list></block><block s="turn"><l>90</l></block><block s="doRun"><block var="styleScript"/><list><block s="reportQuotient"><block var="distance"/><l>2</l></block></list></block><block s="turn"><l>90</l></block><block s="doRun"><block var="styleScript"/><list><block var="range"/></list></block><block s="turnLeft"><l>90</l></block><block s="doRun"><block var="styleScript"/><list><block s="reportQuotient"><block var="distance"/><l>2</l></block></list></block></script><script><block s="doIfElse"><block s="reportEquals"><block var="direction"/><l>right</l></block><script><block s="turn"><l>90</l></block><block s="doRun"><block var="styleScript"/><list><block var="range"/></list></block><block s="turnLeft"><l>90</l></block><block s="doRun"><block var="styleScript"/><list><block s="reportQuotient"><block var="distance"/><l>2</l></block></list></block><block s="turnLeft"><l>90</l></block><block s="doRun"><block var="styleScript"/><list><block var="range"/></list></block><block s="turn"><l>90</l></block><block s="doRun"><block var="styleScript"/><list><block s="reportQuotient"><block var="distance"/><l>2</l></block></list></block></script><script><block s="turn"><l>90</l></block><block s="doRun"><block var="styleScript"/><list><block s="reportQuotient"><block var="range"/><l>2</l></block></list></block><block s="turnLeft"><l>90</l></block><block s="doRun"><block var="styleScript"/><list><block s="reportQuotient"><block var="distance"/><l>2</l></block></list></block><block s="turnLeft"><l>90</l></block><block s="doRun"><block var="styleScript"/><list><block s="reportQuotient"><block var="range"/><l>2</l></block></list></block><block s="doRun"><block var="styleScript"/><list><block s="reportQuotient"><block var="range"/><l>2</l></block></list></block><block s="turn"><l>90</l></block><block s="doRun"><block var="styleScript"/><list><block s="reportQuotient"><block var="distance"/><l>2</l></block></list></block><block s="turn"><l>90</l></block><block s="doRun"><block var="styleScript"/><list><block s="reportQuotient"><block var="range"/><l>2</l></block></list></block><block s="turnLeft"><l>90</l></block></script></block></script></block></script></block-definition><block-definition s="begin tracking" type="command" category="motion"><header></header><code></code><translations>zh_CN:开始跟踪&#xD;</translations><inputs></inputs><script><block s="doRun"><block s="reportJSFunction"><list></list><l>if (this.tracked) {&#xD; return;&#xD;} else {&#xD; this.tracked = true;&#xD;}&#xD;this.tracks = new List();&#xD;this.backupSetPosition = this.setPosition;&#xD;this.down = function() {&#xD; var len;&#xD; this.isDown = true;&#xD; len = this.tracks.length();&#xD; if (len == 0 || this.tracks.at(len) == &apos;!&apos;) {&#xD; this.tracks.add(new List([this.xPosition(),this.yPosition()]));&#xD; } &#xD;} &#xD;this.setPosition = function (aPoint, justMe) {&#xD; var len,lastX,lastY;&#xD; len = this.tracks.length();&#xD; if (len == 0 &amp;&amp; this.isDown) {&#xD; this.tracks.add(new List([this.xPosition(),this.yPosition()]));&#xD; } &#xD; this.backupSetPosition(aPoint, justMe); &#xD; len = this.tracks.length();&#xD; if (this.isDown) {&#xD; if (this.tracks.at(len) == &apos;!&apos;){&#xD; this.tracks.add(new List([this.xPosition(),this.yPosition()])); &#xD; }else{ &#xD; lastX = this.tracks.at(len).at(1);&#xD; lastY = this.tracks.at(len).at(2);&#xD; if (lastX != this.xPosition() || lastY != this.yPosition()) {&#xD; this.tracks.add(new List([this.xPosition(),this.yPosition()]));&#xD; }&#xD; }&#xD; }else{&#xD; if (len != 0 &amp;&amp; this.tracks.at(len) != &apos;!&apos;)&#xD; {&#xD; lastX = this.tracks.at(len).at(1);&#xD; lastY = this.tracks.at(len).at(2); &#xD; if (lastX != this.xPosition() || lastY != this.yPosition()) &#xD; {&#xD; this.tracks.add(&apos;!&apos;);&#xD; }&#xD; } &#xD; }&#xD;}</l></block><list></list></block></script></block-definition><block-definition s="my tracks" type="reporter" category="motion"><header></header><code></code><translations>zh_CN:我的轨迹&#xD;</translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return this.tracks;</l></block><list></list></block></block></script></block-definition><block-definition s="reset tracking" type="command" category="motion"><header></header><code></code><translations>zh_CN:重置轨迹&#xD;</translations><inputs></inputs><script><block s="doRun"><block s="reportJSFunction"><list></list><l>if (this.tracked) {
this.tracks.clear();
}</l></block><list></list></block></script></block-definition><block-definition s="close tracking" type="command" category="motion"><header></header><code></code><translations>zh_CN:取消跟踪&#xD;</translations><inputs></inputs><script><block s="doRun"><block s="reportJSFunction"><list></list><l>if (this.tracked) {&#xD; this.tracks.clear();&#xD; this.tracked = false;&#xD; this.setPosition = this.backupSetPosition;&#xD; this.down = function() {&#xD; this.isDown = true;&#xD; }&#xD;}</l></block><list></list></block></script></block-definition><block-definition s="trackToVector %&apos;track&apos;" type="reporter" category="motion"><variables><list struct="atomic" id="4703">trackPoints</list></variables><header></header><code></code><translations>zh_CN:轨迹转换为矢量 _&#xD;</translations><inputs><input type="%cs"></input></inputs><script><custom-block s="begin tracking"></custom-block><custom-block s="reset tracking"></custom-block><block s="doRun"><block var="track"/><list></list></block><block s="doSetVar"><l>trackPoints</l><custom-block s="copy list %l"><custom-block s="my tracks"></custom-block></custom-block></block><custom-block s="close tracking"></custom-block><block s="doReport"><custom-block s="pointsToVector %l"><block var="trackPoints"/></custom-block></block></script></block-definition><block-definition s="trackToVector %&apos;vector&apos; %&apos;track&apos;" type="command" category="motion"><variables><list struct="atomic" id="4723">trackPoints</list></variables><header></header><code></code><translations>zh_CN:轨迹转换为矢量 _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%cs"></input></inputs><script><custom-block s="begin tracking"></custom-block><custom-block s="reset tracking"></custom-block><block s="doRun"><block var="track"/><list></list></block><block s="doSetVar"><l>trackPoints</l><custom-block s="copy list %l"><custom-block s="my tracks"></custom-block></custom-block></block><custom-block s="close tracking"></custom-block><block s="doSetVar"><l>vector</l><custom-block s="pointsToVector %l"><block var="trackPoints"/></custom-block></block></script></block-definition><block-definition s="link points %&apos;points&apos; style %&apos;style&apos; by %&apos;stepLen&apos; stitchToFirst %&apos;stitchToFirst&apos; backToFirst %&apos;backToFirst&apos;" type="command" category="motion"><header></header><code></code><translations>zh_CN:连接点集 _ 方式 _ 步长 _ 连接到第一点 _ 回到第一点 _&#xD;</translations><inputs><input type="%l"></input><input type="%cmdRing"></input><input type="%n">10</input><input type="%b">false</input><input type="%b">false</input></inputs><script><block s="doIf"><custom-block s="Is %cmdRing empty?"><block var="style"/></custom-block><script><block s="doSetVar"><l>style</l><block s="reifyScript"><script><block s="forward"><l></l></block></script><list></list></block></block></script></block><block s="doIfElse"><block var="stitchToFirst"/><script><block s="down"></block><custom-block s="go to %l style %cmdRing by %n"><block s="reportListItem"><l>1</l><block var="points"/></block><block var="style"/><block var="stepLen"/></custom-block></script><script><block s="up"></block><block s="doGotoObject"><block s="reportListItem"><l>1</l><block var="points"/></block></block><block s="down"></block></script></block><custom-block s="for each %upvar of %l %cs"><l>item</l><block s="reportCDR"><block var="points"/></block><script><block s="doIfElse"><block s="reportEquals"><block var="item"/><l>!</l></block><script><block s="up"></block></script><script><custom-block s="go to %l style %cmdRing by %n"><block var="item"/><block var="style"/><block var="stepLen"/></custom-block><block s="doIf"><block s="reportNot"><block s="isPenDown"></block></block><script><block s="down"></block></script></block></script></block></script></custom-block><block s="doIf"><block var="backToFirst"/><script><custom-block s="go to %l style %cmdRing by %n"><block s="reportListItem"><l>1</l><block var="points"/></block><block var="style"/><block var="stepLen"/></custom-block></script></block></script></block-definition><block-definition s="link lines %&apos;lines&apos; style %&apos;style&apos; by %&apos;stepLen&apos; type %&apos;type&apos; beforeFilling stitchToFirst %&apos;stitchToFirst&apos; backToFirst %&apos;backToFirst&apos; afterFilling goToFirst %&apos;gotoFirst&apos; goToLast %&apos;gotoLast&apos;" type="command" category="motion"><variables><list struct="atomic" id="4823">line1,line2</list></variables><header></header><code></code><translations>zh_CN:连接线段 _ 方式 _ 步长 _ 类型 _ 填充前 连接到第一点 _ 回到第一点 _ 填充后 去第一点 _ 去最后一点 _&#xD;</translations><inputs><input type="%l"></input><input type="%cmdRing"></input><input type="%n">10</input><input type="%txt" readonly="true">parallel<options>normal&#xD;parallel&#xD;curve&#xD;interlaced&#xD;random</options></input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input></inputs><script><block s="doIf"><block s="reportEquals"><block var="type"/><l></l></block><script><block s="doSetVar"><l>type</l><l>normal</l></block></script></block><block s="doIfElse"><block s="reportEquals"><block s="reportModulus"><block s="reportListLength"><block var="lines"/></block><l>2</l></block><l>0</l></block><script><block s="doSetVar"><l>line1</l><custom-block s="%upvar keep items %predRing from %l"><l>#</l><block s="reifyPredicate"><autolambda><block s="reportLessThan"><block var="#"/><block s="reportSum"><block s="reportQuotient"><block s="reportListLength"><block var="lines"/></block><l>2</l></block><l>1</l></block></block></autolambda><list></list></block><block var="lines"/></custom-block></block><block s="doSetVar"><l>line2</l><custom-block s="%upvar keep items %predRing from %l"><l>#</l><block s="reifyPredicate"><autolambda><block s="reportGreaterThan"><block var="#"/><block s="reportQuotient"><block s="reportListLength"><block var="lines"/></block><l>2</l></block></block></autolambda><list></list></block><block var="lines"/></custom-block></block></script><script><block s="doSetVar"><l>line1</l><custom-block s="%upvar keep items %predRing from %l"><l>#</l><block s="reifyPredicate"><autolambda><block s="reportLessThan"><block var="#"/><block s="reportSum"><block s="reportQuotient"><block s="reportSum"><block s="reportListLength"><block var="lines"/></block><l>1</l></block><l>2</l></block><l>1</l></block></block></autolambda><list></list></block><block var="lines"/></custom-block></block><block s="doSetVar"><l>line2</l><custom-block s="%upvar keep items %predRing from %l"><l>#</l><block s="reifyPredicate"><autolambda><block s="reportGreaterThan"><block var="#"/><block s="reportQuotient"><block s="reportDifference"><block s="reportListLength"><block var="lines"/></block><l>1</l></block><l>2</l></block></block></autolambda><list></list></block><block var="lines"/></custom-block></block></script></block><block s="doSetVar"><l>line2</l><custom-block s="reverse %l"><block var="line2"/></custom-block></block><block s="doIf"><custom-block s="Is %cmdRing empty?"><block var="style"/></custom-block><script><block s="doSetVar"><l>style</l><block s="reifyScript"><script><block s="forward"><l></l></block></script><list></list></block></block></script></block><block s="doIfElse"><block var="stitchToFirst"/><script><block s="down"></block><custom-block s="go to %l style %cmdRing by %n"><block s="reportListItem"><l>1</l><block var="line1"/></block><block var="style"/><block var="stepLen"/></custom-block></script><script><block s="doIf"><block var="backToFirst"/><script><custom-block s="link points %l style %cmdRing by %n stitchToFirst %b backToFirst %b"><custom-block s="reverse %l"><block var="lines"/></custom-block><block s="reifyScript"><script></script><list></list></block><l>10</l><l><bool>false</bool></l><l><bool>false</bool></l></custom-block></script></block></script></block><block s="down"></block><block s="doIf"><block s="reportEquals"><block var="type"/><l>normal</l></block><script><block s="doFor"><l>i</l><l>2</l><block s="reportListLength"><block var="line1"/></block><script><custom-block s="go to %l style %cmdRing by %n"><block s="reportListItem"><block var="i"/><block var="line2"/></block><block var="style"/><block var="stepLen"/></custom-block><custom-block s="go to %l style %cmdRing by %n"><block s="reportListItem"><block var="i"/><block var="line1"/></block><block var="style"/><block var="stepLen"/></custom-block></script></block><block s="doIf"><block var="gotoFirst"/><script><custom-block s="link points %l style %cmdRing by %n stitchToFirst %b backToFirst %b"><custom-block s="reverse %l"><block var="line1"/></custom-block><block s="reifyScript"><script></script><list></list></block><l>10</l><l><bool>false</bool></l><l><bool>false</bool></l></custom-block></script></block><block s="doIf"><block var="gotoLast"/><script><custom-block s="link points %l style %cmdRing by %n stitchToFirst %b backToFirst %b"><custom-block s="reverse %l"><block var="line2"/></custom-block><block s="reifyScript"><script></script><list></list></block><l>10</l><l><bool>false</bool></l><l><bool>false</bool></l></custom-block></script></block></script></block><block s="doIf"><block s="reportEquals"><block var="type"/><l>parallel</l></block><script><custom-block s="go to %l style %cmdRing by %n"><block s="reportListItem"><l>1</l><block var="line1"/></block><block var="style"/><block var="stepLen"/></custom-block><block s="doFor"><l>i</l><l>2</l><block s="reportListLength"><block var="line1"/></block><script><custom-block s="go to %l style %cmdRing by %n"><block s="reportListItem"><block var="i"/><block s="reportIfElse"><block s="reportEquals"><block s="reportModulus"><block var="i"/><l>2</l></block><l>0</l></block><block var="line1"/><block var="line2"/></block></block><block var="style"/><block var="stepLen"/></custom-block><custom-block s="go to %l style %cmdRing by %n"><block s="reportListItem"><block var="i"/><block s="reportIfElse"><block s="reportEquals"><block s="reportModulus"><block var="i"/><l>2</l></block><l>0</l></block><block var="line2"/><block var="line1"/></block></block><block var="style"/><block var="stepLen"/></custom-block></script></block><block s="doIf"><block var="gotoFirst"/><script><custom-block s="link points %l style %cmdRing by %n stitchToFirst %b backToFirst %b"><custom-block s="reverse %l"><block var="line1"/></custom-block><block s="reifyScript"><script></script><list></list></block><l>10</l><l><bool>false</bool></l><l><bool>false</bool></l></custom-block></script></block><block s="doIf"><block var="gotoLast"/><script><custom-block s="link points %l style %cmdRing by %n stitchToFirst %b backToFirst %b"><custom-block s="reverse %l"><block var="line2"/></custom-block><block s="reifyScript"><script></script><list></list></block><l>10</l><l><bool>false</bool></l><l><bool>false</bool></l></custom-block></script></block></script></block><block s="doIf"><block s="reportEquals"><block var="type"/><l>curve</l></block><script><block s="doDeclareVariables"><list><l>reversedLine2</l></list></block><block s="doSetVar"><l>reversedLine2</l><custom-block s="reverse %l"><block var="line2"/></custom-block></block><block s="doFor"><l>i</l><l>2</l><block s="reportDifference"><block s="reportListLength"><block var="line1"/></block><l>1</l></block><script><custom-block s="go to %l style %cmdRing by %n"><block s="reportListItem"><block var="i"/><block var="reversedLine2"/></block><block var="style"/><block var="stepLen"/></custom-block><custom-block s="go to %l style %cmdRing by %n"><block s="reportListItem"><block var="i"/><block var="line1"/></block><block var="style"/><block var="stepLen"/></custom-block></script></block><custom-block s="go to %l style %cmdRing by %n"><block s="reportListItem"><l><option>last</option></l><block var="reversedLine2"/></block><block var="style"/><block var="stepLen"/></custom-block></script></block><block s="doIf"><block s="reportEquals"><block var="type"/><l>interlaced</l></block><script><block s="doFor"><l>i</l><l>2</l><block s="reportListLength"><block var="line1"/></block><script><custom-block s="go to %l style %cmdRing by %n"><block s="reportListItem"><block var="i"/><block s="reportIfElse"><block s="reportEquals"><block s="reportModulus"><block var="i"/><l>2</l></block><l>0</l></block><block var="line2"/><block var="line1"/></block></block><block var="style"/><block var="stepLen"/></custom-block></script></block><block s="doIfElse"><block s="reportEquals"><block s="reportModulus"><block s="reportListLength"><block var="line1"/></block><l>2</l></block><l>0</l></block><script><custom-block s="go to %l style %cmdRing by %n"><block s="reportListItem"><l><option>last</option></l><block var="line2"/></block><block var="style"/><block var="stepLen"/></custom-block></script><script><custom-block s="go to %l style %cmdRing by %n"><block s="reportListItem"><l><option>last</option></l><block var="line1"/></block><block var="style"/><block var="stepLen"/></custom-block></script></block><block s="doFor"><l>i</l><block s="reportListLength"><block var="line1"/></block><l>2</l><script><custom-block s="go to %l style %cmdRing by %n"><block s="reportListItem"><block s="reportDifference"><block var="i"/><l>1</l></block><block s="reportIfElse"><block s="reportEquals"><block s="reportModulus"><block var="i"/><l>2</l></block><l>0</l></block><block var="line2"/><block var="line1"/></block></block><block var="style"/><block var="stepLen"/></custom-block></script></block></script></block><block s="doIf"><block s="reportEquals"><block var="type"/><l>random</l></block><script><block s="doRepeat"><block s="reportMonadic"><l><option>ceiling</option></l><block s="reportQuotient"><block s="reportListLength"><block var="line1"/></block><l>2</l></block></block><script><custom-block s="go to %l style %cmdRing by %n"><block s="reportListItem"><l><option>any</option></l><block var="line2"/></block><block var="style"/><block var="stepLen"/></custom-block><custom-block s="go to %l style %cmdRing by %n"><block s="reportListItem"><l><option>any</option></l><block var="line1"/></block><block var="style"/><block var="stepLen"/></custom-block></script></block><custom-block s="go to %l style %cmdRing by %n"><block s="reportListItem"><l>1</l><block var="line2"/></block><block var="style"/><block var="stepLen"/></custom-block></script></block></script></block-definition><block-definition s="fill the area enclosed by line %&apos;Track&apos; method %&apos;method&apos;" type="command" category="motion"><variables><list struct="atomic" id="5319">dir,lines</list></variables><header></header><code></code><translations>zh_CN:填充轨迹间区域 _ 方式 _&#xD;</translations><inputs><input type="%cs"></input><input type="%cmdRing"></input></inputs><script><custom-block s="begin tracking"></custom-block><custom-block s="reset tracking"></custom-block><block s="down"></block><block s="doRun"><block var="Track"/><list></list></block><block s="doSetVar"><l>lines</l><custom-block s="copy list %l"><custom-block s="my tracks"></custom-block></custom-block></block><custom-block s="close tracking"></custom-block><block s="doSetVar"><l>dir</l><block s="direction"></block></block><block s="doRun"><block var="method"/><list><custom-block s="%upvar keep items %predRing from %l"><l>#</l><block s="reifyPredicate"><autolambda><block s="reportNot"><block s="reportEquals"><l></l><l>!</l></block></block></autolambda><list></list></block><block var="lines"/></custom-block></list></block><block s="setHeading"><block var="dir"/></block></script></block-definition><block-definition s="fillBetweenLines firstTrack %&apos;firstTrack&apos; projecting part %&apos;projectingCode&apos; $nl secondTrack %&apos;secondTrack&apos; method %&apos;method&apos;" type="command" category="motion"><header></header><code></code><translations>zh_CN:填充轨迹间区域 轨迹1 _ 突出部分 _ _ 轨迹2 _ 方式 _&#xD;</translations><inputs><input type="%cs"></input><input type="%cmdRing"></input><input type="%cs"></input><input type="%cmdRing"></input></inputs><script><block s="doDeclareVariables"><list><l>line1</l><l>line2</l><l>dir</l></list></block><custom-block s="begin tracking"></custom-block><custom-block s="reset tracking"></custom-block><block s="down"></block><block s="doRun"><block var="firstTrack"/><list></list></block><block s="doSetVar"><l>line1</l><custom-block s="copy list %l"><custom-block s="my tracks"></custom-block></custom-block></block><custom-block s="close tracking"></custom-block><block s="doIf"><block s="reportNot"><custom-block s="Is %cmdRing empty?"><block var="projectingCode"/></custom-block></block><script><block s="doRun"><block var="projectingCode"/><list></list></block></script></block><custom-block s="begin tracking"></custom-block><custom-block s="reset tracking"></custom-block><block s="doRun"><block var="secondTrack"/><list></list></block><block s="doSetVar"><l>line2</l><custom-block s="copy list %l"><custom-block s="my tracks"></custom-block></custom-block></block><custom-block s="close tracking"></custom-block><block s="doSetVar"><l>dir</l><block s="direction"></block></block><block s="doRun"><block var="method"/><list><custom-block s="%upvar keep items %predRing from %l"><l>#</l><block s="reifyPredicate"><autolambda><block s="reportNot"><block s="reportEquals"><l></l><l>!</l></block></block></autolambda><list></list></block><custom-block s="append %mult%l"><list><l/></list></custom-block></custom-block></list></block><block s="setHeading"><block var="dir"/></block></script></block-definition><block-definition s="fractal size %&apos;size&apos; shape %&apos;shape&apos; levels %&apos;level&apos;" type="command" category="motion"><header></header><code></code><translations>zh_CN:分形 _ 步 造型函数 _ 级数 _&#xD;</translations><inputs><input type="%n">100</input><input type="%cmdRing">100</input><input type="%n">9</input></inputs><script><block s="doIfElse"><block s="reportEquals"><block var="level"/><l>1</l></block><script><block s="doRun"><block var="shape"/><list><block var="size"/><block s="reifyScript"><script><block s="forward"><l></l></block></script><list></list></block></list></block></script><script><block s="doRun"><block var="shape"/><list><block var="size"/><block s="reifyScript"><script><custom-block s="fractal size %n shape %cmdRing levels %n"><l></l><block var="shape"/><block s="reportDifference"><block var="level"/><l>1</l></block></custom-block></script><list></list></block></list></block></script></block></script></block-definition><block-definition s="dashLine %&apos;length&apos; %&apos;solidlen&apos;" type="command" category="motion"><header></header><code></code><translations>zh_CN:虚线 _ _&#xD;</translations><inputs><input type="%n">10</input><input type="%n">5</input></inputs><script><block s="down"></block><block s="forward"><block var="solidlen"/></block><block s="up"></block><block s="forward"><block s="reportDifference"><block var="length"/><block var="solidlen"/></block></block></script></block-definition><block-definition s="edgefold %&apos;distance&apos; steps width %&apos;range&apos; direction %&apos;direction&apos;" type="command" category="motion"><header></header><code></code><translations>zh_CN:折边线条 _ 步 宽度 _ 方向 _&#xD;</translations><inputs><input type="%n">10</input><input type="%n">10</input><input type="%txt">left<options>left&#xD;right</options></input></inputs><script><block s="doDeclareVariables"><list><l>chord</l></list></block><block s="doSetVar"><l>chord</l><block s="reportQuotient"><block var="range"/><block s="reportMonadic"><l><option>sin</option></l><l>45</l></block></block></block><block s="doIfElse"><block s="reportEquals"><block var="direction"/><l>left</l></block><script><block s="turnLeft"><l>45</l></block><block s="forward"><block var="chord"/></block><block s="turn"><l>45</l></block><block s="forward"><block s="reportDifference"><block var="distance"/><block s="reportProduct"><l>2</l><block var="range"/></block></block></block><block s="turn"><l>45</l></block><block s="forward"><block var="chord"/></block><block s="turnLeft"><l>45</l></block></script><script><block s="turn"><l>45</l></block><block s="forward"><block var="chord"/></block><block s="turnLeft"><l>45</l></block><block s="forward"><block s="reportDifference"><block var="distance"/><block s="reportProduct"><l>2</l><block var="range"/></block></block></block><block s="turnLeft"><l>45</l></block><block s="forward"><block var="chord"/></block><block s="turn"><l>45</l></block></script></block></script></block-definition></blocks>