<snapdata remixID="11396328"><project name="sprite raycas" app="Snap! 7, https://snap.berkeley.edu" version="2"><notes>arrow keys&#xD;tank controls&#xD;z &amp; x to change elevation</notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="sprite raycas"><notes>arrow keys&#xD;tank controls&#xD;z &amp; x to change elevation</notes><hidden></hidden><headers></headers><code></code><blocks><block-definition s="render fov: %&apos;fov&apos; resolution: %&apos;res&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%n">50</input><input type="%n">1</input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>dist</l><l>dx</l><l>curx</l><l>dirvec</l><l>hitpos</l><l>raydir</l><l>center</l></list></block><block s="clear"></block><block s="setHeading"><block s="reportDifference"><block var="sprite dir"/><block s="reportQuotient"><block var="fov"/><l>2</l></block></block></block><block s="doSetVar"><l>curx</l><block s="reportQuotient"><block s="reportAttributeOf"><l><option>width</option></l><l>Stage</l></block><l>-2</l></block></block><block s="setXPosition"><l>-240</l></block><block s="doSetVar"><l>dx</l><block s="reportQuotient"><block s="reportQuotient"><block s="reportAttributeOf"><l><option>width</option></l><l>Stage</l></block><block var="fov"/></block><block var="res"/></block></block><block s="setSize"><block s="reportVariadicSum"><list><block var="dx"/><l>1</l></list></block></block><block s="doSetVar"><l>dirvec</l><custom-block s="vector %n %n"><block s="reportMonadic"><l><option>sin</option></l><block var="sprite dir"/></block><block s="reportMonadic"><l><option>cos</option></l><block var="sprite dir"/></block></custom-block></block><block s="doRepeat"><block s="reportVariadicProduct"><list><block var="fov"/><block var="res"/></list></block><script><block s="doSetVar"><l>raydir</l><custom-block s="vector %n %n"><block s="reportMonadic"><l><option>sin</option></l><block s="direction"></block></block><block s="reportMonadic"><l><option>cos</option></l><block s="direction"></block></block></custom-block></block><block s="doGotoObject"><block var="sprite pos"/></block><block s="doSetVar"><l>hitpos</l><block s="reportVariadicProduct"><list><block var="raydir"/><block s="reportRelationTo"><l><option>ray length</option></l><l>Sprite(2)</l></block></list></block></block><block s="doSetVar"><l>dist</l><custom-block s="%l dot %l"><block var="hitpos"/><block var="dirvec"/></custom-block></block><block s="setXPosition"><block var="curx"/></block><block s="setPenColorDimension"><l><option>brightness</option></l><block s="reportQuotient"><block var="dist"/><l>2</l></block></block><block s="doSetVar"><l>center</l><block s="reportVariadicProduct"><list><block s="reportQuotient"><l>-3000</l><block var="dist"/></block><block var="sprite altitude"/></list></block></block><block s="setYPosition"><block s="reportVariadicSum"><list><block s="reportQuotient"><l>-3000</l><block var="dist"/></block><block var="center"/></list></block></block><block s="down"></block><block s="setYPosition"><block s="reportVariadicSum"><list><block s="reportQuotient"><l>3000</l><block var="dist"/></block><block var="center"/></list></block></block><block s="up"></block><block s="turn"><block s="reportQuotient"><l>1</l><block var="res"/></block></block><block s="doChangeVar"><l>curx</l><block var="dx"/></block></script></block></script></block></script><scripts><script x="439.4443359375" y="490.50000000000017"><block s="reportVariadicSum"><list><l>100</l><l></l></list></block></script></scripts></block-definition><block-definition s="vector %&apos;x&apos; %&apos;y&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportNewList"><list><block var="x"/><block var="y"/></list></block></block></script></block-definition><block-definition s="rotate %&apos;vec&apos; by %&apos;ang&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%n">0</input></inputs><script><block s="doReport"><custom-block s="vector %n %n"><block s="reportDifference"><block s="reportVariadicProduct"><list><custom-block s="%s of vector %l"><l>x</l><block var="vec"/></custom-block><block s="reportMonadic"><l><option>cos</option></l><block var="ang"/></block></list></block><block s="reportVariadicProduct"><list><custom-block s="%s of vector %l"><l>y</l><block var="vec"/></custom-block><block s="reportMonadic"><l><option>sin</option></l><block var="ang"/></block></list></block></block><block s="reportVariadicSum"><list><block s="reportVariadicProduct"><list><custom-block s="%s of vector %l"><l>x</l><block var="vec"/></custom-block><block s="reportMonadic"><l><option>sin</option></l><block var="ang"/></block></list></block><block s="reportVariadicProduct"><list><custom-block s="%s of vector %l"><l>y</l><block var="vec"/></custom-block><block s="reportMonadic"><l><option>cos</option></l><block var="ang"/></block></list></block></list></block></custom-block></block></script></block-definition><block-definition s="%&apos;prop&apos; of vector %&apos;vec&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>x&#xD;y</options></input><input type="%l"></input></inputs><script><block s="doIf"><block s="reportEquals"><block var="prop"/><l>x</l></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="vec"/></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="prop"/><l>y</l></block><script><block s="doReport"><block s="reportListItem"><l>2</l><block var="vec"/></block></block></script></block></script></block-definition><block-definition s="%&apos;a&apos; dot %&apos;b&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%l"></input></inputs><script><block s="doReport"><block s="reportVariadicSum"><block s="reportVariadicProduct"><list><block var="a"/><block var="b"/></list></block></block></block></script></block-definition></blocks><stage name="Stage" width="480" height="360" costume="0" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="flat" ternary="false" hyperops="true" codify="false" inheritance="true" sublistIDs="false" id="273"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAAIABJREFUeF7tnduPHMd1h6t6V2Qo2Y4VGDAgJ34I8ibsm/8NBQgQJA+5PSR2gtjIBQGCIEAC6SVwlIcwkExZNuMHKZItMySsCy2LocS1KHLFtXhb27QuvkSKTepiXZcUbztdQe3OzPYMu7d/XdXTNbv7LaAHLU+dOvXVqfOr0zM7Yw0/EIAABCAAAQh0TsB2PiMTQgACEIAABCBgEGCSAAIQgAAEIJCAAAKcADpTQgACEIAABBBgcgACEIAABCCQgAACnAA6U0IAAhCAAAQQYHIAAhCAAAQgkIAAApwAOlNCAAIQgAAEEGByAAIQgAAEIJCAAAKcADpTQgACEIAABBBgcgACEIAABCCQgAACnAA6U0IAAhCAAAQQYHIAAhCAAAQgkIAAApwAOlNCAAIQgAAEEGByAAIQgAAEIJCAAAKcADpTQgACEIAABBBgcgACEIAABCCQgAACnAA6U0IAAhCAAAQQYHIAAhCAAAQgkIAAApwAOlNCAAIQgAAEEGByAAIQgAAEIJCAAAKcADpTQgACEIAABBBgcgACEIAABCCQgAACnAA6U0IAAhCAAAQQYHIAAhCAAAQgkIAAApwAOlNCAAIQgAAEEGByAAIQgAAEIJCAAAKcADpTQgACEIAABBBgcgACEIAABCCQgAACnAA6U0IAAhCAAAQQYHIAAhCAAAQgkIAAApwAOlNCAAIQgAAEEGByAAIQgAAEIJCAAAKcADpTQgACEIAABBBgcgACEIAABCCQgAACnAA6U0IAAhCAAAQQYHIAAhCAAAQgkIAAApwAOlNCAAIQgAAEEGByAAIQgAAEIJCAAAKcADpTQgACEIAABBBgcgACEIAABCCQgAACnAA6U0IAAhCAAAQQYHIAAhCAAAQgkIAAApwAOlNCAAIQgAAEEGByAAIQgAAEIJCAAAKcADpTQgACEIAABBBgcgACEIAABCCQgAACnAA6U0IAAhCAAAQQYHIAAhCAAAQgkIAAApwAOlNCAAIQgAAEEGByAAIQgAAEIJCAAAKcADpTQgACEIAABBBgcgACEIAABCCQgAACnAA6U0IAAhCAAAQQYHIAAhCAAAQgkIAAApwAOlNCAAIQgAAEEGByAAIQgAAEIJCAAAKcADpTQgACEIAABBBgcgACEIAABCCQgAACnAA6U0IAAhCAAAQQYHIAAhCAAAQgkIAAApwAOlNCAAIQgAAEEGByAAIQgAAEIJCAAAKcADpTQgACEIAABBBgcgACEIAABCCQgAACnAA6U0IAAhCAAAQQYHIAAhCAAAQgkIAAApwAOlNCAAIQgAAEEGByAAIQgAAEIJCAAAKcADpTQgACEIAABBBgcgACEIAABCCQgAACnAA6U0IAAhCAAAQQYHIAAhCAAAQgkIAAApwAOlNCAAIQgAAEEGByAAIQgAAEIJCAAAKcADpTQgACEIAABBBgcgACEIAABCCQgAACnAA6U0IAAhCAAAQQYHIAAhCAAAQgkIAAApwAOlNCAAIQgAAEEGByAAIQgAAEIJCAAAKcADpTQgACEIAABBBgcgACEIAABCCQgAACnAA6U0IAAhCAAAQQYHIAAhCAAAQgkIAAApwAOlNCAAIQgAAEEGByAAIQgAAEIJCAAAKcADpTQgACEIAABBBgcgACEIAABCCQgAACnAA6U0IAAhCAAAQQYHIAAhCAAAQgkIAAApwAOlNCAAIQgAAEEGByAAIQgAAEIJCAAAKcADpTQgACEIAABBBgcgACEIAABCCQgAACnAA6U0IAAhCAAAQQYHIAAhCAAAQgkIAAApwAOlNCAAIQgAAEEGByAAIQgAAEIJCAAAKcADpTQgACEIAABBBgcgACEIAABCCQgAACnAA6U0IAAhCAAAQQYHIAAhCAAAQgkIAAApwAOlNCAAIQgAAEEGByAAIQgAAEIJCAAAKcADpTQgACEIAABBBgcgACEIAABCCQgAACnAA6U0IAAhCAAAQQYHIAAhCAAAQgkIAAApwAOlNCAAIQgAAEEGByAAIQgAAEIJCAAAKcADpTQgACEIAABBBgcgACEIAABCCQgAACnAA6U0IAAhCAAAQQYHIAAhCAAAQgkIAAApwAOlNCAAIQgAAEEGByAAIQgAAEIJCAAAKcADpTQgACEIAABBBgcgACEIAABCCQgAACnAA6U0IAAhCAAAQQYHIAAhCAAAQgkIAAApwAOlNCAAIQgAAEEGByAAIQgAAEIJCAAAKcADpTQgACEIAABBBgcgACEIAABCCQgAACnAA6U0IAAhCAAAQQYHIAAhCAAAQgkIAAApwAOlNCAAIQgAAEEGByAAIQgAAEIJCAAAKcADpTQgAC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</pentrails><costumes><list struct="atomic" id="274"></list></costumes><sounds><list struct="atomic" id="275"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Sprite(2)" idx="2" x="0" y="0" heading="90" scale="1" volume="100" pan="0" rotation="0" draggable="true" hidden="true" costume="1" color="80,80,80,1" pen="tip" id="280"><costumes><list id="281"><item><ref mediaID="Sprite(2)_cst_costume1"></ref></item></list></costumes><sounds><list struct="atomic" id="282"></list></sounds><blocks></blocks><variables></variables><scripts></scripts></sprite><sprite name="Sprite" idx="1" x="235.2000000000005" y="13.322544393031905" heading="159" scale="1" volume="100" pan="0" rotation="0" draggable="true" hidden="true" costume="0" color="114.84292751170202,114.84292751170202,114.84292751170202,1" pen="tip" id="286"><costumes><list struct="atomic" id="287"></list></costumes><sounds><list struct="atomic" id="288"></list></sounds><blocks></blocks><variables><variable name="sprite dir"><l>494</l></variable><variable name="sprite x"><l>73.83569695687245</l></variable><variable name="sprite y"><l>44.460981791516296</l></variable><variable name="sprite pos"><list struct="atomic" id="291">119.24710815688618,96.90938587359086</list></variable><variable name="sprite altitude"><l>0.5999999999999998</l></variable></variables><scripts><script x="274" y="56.500000000000085"><block s="receiveGo"></block><block s="doSetGlobalFlag"><l><option>flat line ends</option></l><l><bool>true</bool></l></block><block s="doSetVar"><l>sprite pos</l><custom-block s="vector %n %n"><l>0</l><l>-20</l></custom-block></block><block s="doSetVar"><l>sprite dir</l><l>90</l></block><block s="doSetVar"><l>fov</l><l>70</l></block><block s="doSetVar"><l>sprite altitude</l><l>0</l></block><block s="doForever"><script><custom-block s="render fov: %n resolution: %n"><l>50</l><block var="resolution"/></custom-block><block s="doIf"><block s="reportKeyPressed"><l><option>up arrow</option></l></block><script><block s="doSetVar"><l>sprite pos</l><block s="reportVariadicSum"><list><block var="sprite pos"/><custom-block s="vector %n %n"><block s="reportMonadic"><l><option>sin</option></l><block var="sprite dir"/></block><block s="reportMonadic"><l><option>cos</option></l><block var="sprite dir"/></block></custom-block></list></block></block></script></block><block s="doIf"><block s="reportKeyPressed"><l><option>right arrow</option></l></block><script><block s="doChangeVar"><l>sprite dir</l><l>2</l></block></script></block><block s="doIf"><block s="reportKeyPressed"><l><option>left arrow</option></l></block><script><block s="doChangeVar"><l>sprite dir</l><l>-2</l></block></script></block><block s="doIf"><block s="reportKeyPressed"><l><option>z</option></l></block><script><block s="doChangeVar"><l>sprite altitude</l><l>-0.1</l></block></script></block><block s="doIf"><block s="reportKeyPressed"><l><option>x</option></l></block><script><block s="doChangeVar"><l>sprite altitude</l><l>0.1</l></block></script></block></script></block></script><script x="45" y="159.16666666666663"><block s="reportMonadic"><l><option>lg</option></l><l>8</l></block></script></scripts></sprite><watcher var="fov" style="normal" x="10" y="31.000001999999995" color="243,118,29" hidden="true"/><watcher scope="Sprite" var="sprite pos" style="normal" x="10" y="52.000003999999976" color="243,118,29" hidden="true"/><watcher var="resolution" style="slider" min="0.5" max="5" x="7" y="8.00000599999997" color="243,118,29"/><watcher scope="Sprite" var="sprite altitude" style="normal" x="10" y="145.00000599999987" color="243,118,29" hidden="true"/></sprites></stage><variables><variable name="fov"><l>70</l></variable><variable name="resolution"><l>2</l></variable></variables></scene></scenes></project><media name="sprite raycas" app="Snap! 7, https://snap.berkeley.edu" version="2"><costume name="costume1" center-x="184" center-y="136" image="data:image/png;base64,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" mediaID="Sprite(2)_cst_costume1"/></media></snapdata>