Back to Index

Adventures in Data Science

Programming a Skutterer

On this page you can see the various images one of our data science creations can make. My Skutterer moves around a Html5 element drawing a picture by changing the data where it likes. Here's some examples:
The code is fairly simple. First we declare the configuration variables.
  
  var __cfg =
  {
    width     : 128,
    height    : 128,
    container : "skut4",
    nest      : "skut4c",
    caoi      : __skut4__caoi,
    pixels    : { x: 2, y: 2 }
  };

The width and height size the canvas. container and nest are the id of the html and canvas elements. We need to create them to hold our skutterer on the page.

  <div id="skut4">
    <canvas id="skut4c"></canvas>
  </div>

We need a different one of these containers every time we make a skutterer. Because, the skutterer uses the canvas to move around, and the canvas is unique to the area on the page it gets to live in!

Next, we need some functions. I've made some here which allow the skutterer to move around. See:
  
  var skut4 = new neodna__Skutterer( __cfg, 4 );
  skut4.fn( 0, __skut4__fn__move      );
  skut4.fn( 1, __skut4__fn__write     );
  skut4.fn( 2, __skut4__fn__direction );
  skut4.fn( 3, __skut4__fn__maiden    );
  
Here we have 4 functions: move, write, direction and maiden.

1) Move: go forward in the direction set by __d.
2) Write: write the data to 1, at the current block.
3) Direction: Rotate the direction __d by 1 or -1 of 4 possible directions. 1 or -1 is set by the maiden.
4) Maiden: Flip a value from -1 to 1 and back again.

And that's it! Now we have programmed a skutterer with 4 basic functions which allow it to create amazing shapes.

The functions

Move

A simple move function containing 4 possible changes to position. In layman's terms, this is left, up, right, down.
  
    function __skut4__fn__move( o )
    {
      var d = [
        [ -1,  0 ],
        [  0, -1 ],
        [  1,  0 ],
        [  0,  1 ]
      ];

      o.__x += d[ o.__d ][ 0 ];
      o.__y += d[ o.__d ][ 1 ];
    }
  
Our object ( the skutterer ) is passed in as a variable. All we have to do is change the x and y variables and we're set. Notice we're using o.__d, which is the direction variable. That's the one that gets set in __skut4__fn__direction