> show canvas only <


/* built with Studio Sketchpad: 
 *   https://sketchpad.cc
 * 
 * observe the evolution of this sketch: 
 *   https://studio.sketchpad.cc/sp/pad/view/ro.nSpf-3hwP8Q/rev.8
 * 
 * authors: 
 *   GoToLoop

 * license (unless otherwise specified): 
 *   creative commons attribution-share alike 3.0 license.
 *   https://creativecommons.org/licenses/by-sa/3.0/ 
 */ 



// forum.processing.org/two/discussion/307/catmull-rom-casteljau-and-kawano-curves-
// www.loftmatic.com/_pages/Research/HiroshiKawano/W14_01_01/W14_01_01.html
// studio.processingtogether.com/sp/pad/export/ro.9W$jcepauodqW/latest

//////////////////////////////////////////////////////////////////////////////////////
// 2D Animation and Interaction Course by Andrew Glassner.
//
// Week 13.
//
// Assignment: create an interactive animation with multiple objects moving over time.
//
// I can use random numbers to create objects. Use arrays to hold our random numbers 
// from next frame to the next. Use the transformation functions rotate, translate, 
// scale, pushmatrix and popmatrix to draw the objects.
//
// The idea is to make Hiroshi Kawano’s painting very nervous.
// Use the + and - keys to make the result worse or normal.
//
// October 3, 2013, Version W13_01_06
// © 2013 Loftmatic, Henk Lamers.

// Declare the color constants.
final static color RED = #FF2618, ORA = #E8901A, BLU = #292A84, WHI = #E0D8C8, BLA = #141214;

// Size of the squares.
final static byte DIM = 20;

// One array for the fill colors.
color[] fillColor = { 
  RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, BLA, WHI, // Row 1
  RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, BLA, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, BLA, WHI, // Row 2.
  RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, BLA, BLA, BLA, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, BLA, WHI, // Row 3.
  RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, BLA, BLA, BLA, BLA, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, BLA, WHI, // Row 4.
  BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, WHI, WHI, WHI, WHI, WHI, WHI, WHI, BLA, WHI, // Row 5.
  BLA, BLA, BLU, RED, RED, ORA, RED, WHI, ORA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, BLA, BLA, BLA, BLA, BLA, BLA, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, // Row 6. 
  BLA, BLA, BLU, ORA, BLU, RED, RED, BLU, RED, BLA, BLA, BLA, BLA, BLA, BLA, BLA, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, BLA, BLA, BLA, BLA, BLA, BLA, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, // Row 7. 
  BLA, BLA, BLU, WHI, WHI, RED, RED, ORA, RED, WHI, BLU, BLA, BLA, BLA, BLA, BLA, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, BLA, BLA, BLA, BLA, BLA, BLA, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, // Row 8.
  WHI, WHI, BLU, BLU, ORA, BLA, BLA, RED, RED, RED, WHI, WHI, BLA, BLA, BLA, BLA, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, BLA, BLA, BLA, BLA, BLA, BLA, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, // Row 9.
  WHI, WHI, WHI, BLA, BLU, BLA, BLA, BLA, BLA, BLA, BLA, BLU, BLA, BLA, BLA, BLA, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, BLA, BLA, BLA, BLA, BLA, BLA, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, // Row 10.
  WHI, WHI, WHI, WHI, RED, WHI, BLA, BLA, BLA, BLA, BLA, RED, ORA, WHI, BLU, BLA, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, BLA, BLA, BLA, BLA, BLA, BLA, BLA, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, // Row 11.
  WHI, WHI, WHI, WHI, RED, RED, ORA, BLU, BLA, BLA, BLA, BLA, BLA, WHI, RED, BLA, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, BLA, ORA, ORA, BLA, BLA, BLA, BLA, BLA, BLA, WHI, WHI, WHI, WHI, WHI, WHI, // Row 12.
  WHI, WHI, WHI, WHI, RED, RED, BLA, BLU, BLA, BLA, BLA, BLA, BLA, WHI, RED, RED, RED, BLA, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, BLA, ORA, ORA, ORA, BLA, BLA, BLA, BLA, BLA, WHI, WHI, WHI, WHI, WHI, WHI, // Row 13.
  WHI, WHI, WHI, WHI, RED, RED, WHI, BLA, BLA, BLA, BLA, BLA, BLA, RED, RED, RED, RED, ORA, RED, RED, BLU, RED, ORA, BLA, WHI, WHI, BLA, ORA, ORA, ORA, ORA, BLA, BLA, BLA, BLA, WHI, WHI, WHI, WHI, WHI, WHI, // Row 14.
  WHI, WHI, WHI, WHI, RED, RED, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, RED, RED, RED, WHI, ORA, BLU, WHI, WHI, WHI, BLA, ORA, ORA, ORA, ORA, BLA, BLA, BLA, BLA, BLA, WHI, WHI, WHI, WHI, WHI, // Row 15.
  WHI, WHI, WHI, WHI, RED, RED, RED, BLU, BLU, BLA, BLU, BLU, BLA, ORA, ORA, BLU, BLU, RED, BLU, BLA, BLA, ORA, WHI, WHI, WHI, WHI, BLA, BLA, BLA, ORA, ORA, BLA, BLA, BLA, WHI, BLA, WHI, WHI, WHI, WHI, WHI, // Row 16.
  WHI, WHI, BLA, WHI, BLA, BLU, RED, WHI, BLA, RED, BLA, BLU, BLA, ORA, WHI, BLA, BLA, ORA, WHI, BLA, BLA, RED, BLU, BLA, WHI, WHI, BLA, BLA, WHI, RED, WHI, BLA, BLA, BLA, WHI, BLA, WHI, WHI, WHI, BLA, WHI, // Row 17.
  WHI, WHI, WHI, WHI, WHI, WHI, ORA, BLU, BLA, BLA, RED, BLA, ORA, RED, BLA, BLA, BLA, WHI, WHI, BLA, BLA, ORA, BLU, BLU, BLA, BLA, WHI, BLA, WHI, WHI, WHI, BLA, WHI, BLA, WHI, BLA, WHI, WHI, WHI, BLA, WHI, // Row 18.
  WHI, WHI, WHI, WHI, WHI, WHI, RED, BLU, BLU, BLA, RED, WHI, RED, RED, ORA, BLU, BLU, BLA, BLA, BLA, BLA, WHI, BLA, BLU, BLU, BLU, BLU, BLA, BLA, BLA, WHI, BLA, BLA, RED, WHI, BLA, WHI, WHI, WHI, BLA, WHI, // Row 19.
  WHI, WHI, WHI, WHI, WHI, WHI, WHI, BLA, BLA, BLU, RED, RED, WHI, WHI, ORA, BLU, BLU, BLU, BLU, BLU, BLU, BLA, BLA, BLU, BLU, BLU, BLA, BLA, BLA, BLA, BLA, BLA, BLA, RED, BLU, BLA, WHI, WHI, WHI, BLA, WHI, // Row 20.
  WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, BLA, BLU, WHI, BLU, BLA, BLA, ORA, BLU, BLU, BLU, BLU, BLU, BLU, BLU, BLU, BLU, BLU, BLU, BLU, BLA, RED, RED, RED, BLA, BLA, RED, RED, BLA, WHI, WHI, WHI, BLA, WHI, // Row 21.
  WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, BLA, BLA, BLA, RED, RED, RED, ORA, BLA, BLA, BLA, BLA, BLU, BLU, BLU, BLU, BLU, BLU, BLU, BLA, RED, RED, RED, BLA, BLA, RED, RED, BLA, WHI, WHI, WHI, BLA, WHI, // Row 22.
  WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, RED, RED, BLA, WHI, BLA, BLA, BLA, BLA, BLA, BLU, BLU, BLU, BLU, BLU, BLU, BLA, RED, RED, RED, BLA, BLA, RED, RED, BLA, WHI, WHI, WHI, BLA, WHI, // Row 23.
  WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLU, BLU, BLU, BLU, BLA, RED, RED, BLA, BLA, RED, RED, RED, BLA, WHI, WHI, BLA, WHI, // Row 24.
  WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLU, BLU, BLU, BLA, RED, RED, RED, BLA, RED, RED, RED, RED, RED, BLU, BLA, WHI, // Row 25.
  WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLU, BLU, BLU, BLA, RED, RED, RED, RED, RED, RED, RED, BLA, ORA, BLA, BLA, WHI, // Row 26.
  WHI, WHI, BLA, WHI, BLA, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, RED, RED, RED, RED, RED, RED, RED, BLA, RED, BLU, RED, BLU, // Row 27.
  WHI, WHI, WHI, WHI, BLA, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, BLA, RED, RED, RED, RED, RED, RED, RED, RED, RED, BLU, ORA, RED, RED, ORA, // Row 28.
  BLA, BLA, WHI, WHI, BLA, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, BLA, BLA, BLA, BLA, RED, RED, RED, RED, RED, RED, BLA, BLU, RED, RED, RED, RED, RED, RED, RED, RED, RED, ORA, BLU, WHI, ORA, // Row 29.
  BLA, BLA, BLA, BLA, BLA, BLA, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, BLA, WHI, BLA, BLA, RED, RED, RED, RED, RED, RED, RED, BLA, BLU, BLU, RED, RED, RED, RED, RED, RED, RED, WHI, BLA, BLU, RED, // Row 30.
  RED, RED, RED, RED, RED, RED, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, BLA, BLA, RED, RED, RED, RED, RED, RED, RED, RED, RED, BLA, BLA, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, ORA, RED, // Row 31.
  BLA, BLA, BLA, RED, RED, RED, BLA, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, BLA, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, BLA, WHI, ORA, BLA, ORA, BLU, WHI, BLA, BLU, ORA, ORA, RED, BLA, RED, // Row 32.
  RED, RED, RED, RED, RED, RED, RED, RED, WHI, WHI, WHI, WHI, WHI, WHI, WHI, WHI, BLA, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, BLA, WHI, BLU, BLA, BLA, BLU, RED, BLA, WHI, ORA, BLA, RED, RED, RED, // Row 33.
  RED, RED, RED, RED, RED, RED, RED, RED, RED, BLU, BLU, BLU, WHI, WHI, WHI, WHI, BLA, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, BLA, WHI, RED, RED, BLA, BLU, BLA, BLA, WHI, BLU, WHI, BLA, RED, RED, // Row 34.
  RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, ORA, ORA, WHI, WHI, WHI, WHI, BLA, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, BLA, WHI, ORA, BLU, WHI, BLU, BLA, BLA, WHI, RED, RED, RED, RED, RED, // Row 35.
  RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, ORA, BLA, WHI, WHI, WHI, WHI, BLA, BLA, BLA, RED, RED, RED, RED, RED, RED, RED, RED, BLA, WHI, WHI, BLU, BLA, BLA, BLU, ORA, RED, RED, RED, RED, RED, RED, // Row 36.
  RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, BLA, WHI, WHI, WHI, WHI, BLA, BLA, WHI, WHI, BLU, ORA, WHI, BLU, ORA, RED, RED, BLA, WHI, ORA, RED, BLA, ORA, WHI, ORA, RED, RED, RED, RED, RED, RED, // Row 37.
  RED, RED, RED, RED, RED, RED, RED, BLA, BLA, BLA, BLA, BLA, WHI, WHI, WHI, WHI, BLA, RED, BLA, BLA, WHI, BLA, BLA, ORA, BLA, RED, RED, BLA, WHI, BLA, BLU, BLU, RED, ORA, WHI, BLU, WHI, BLA, RED, RED, RED, // Row 38.
  RED, RED, RED, RED, RED, RED, BLA, WHI, BLU, BLA, WHI, RED, WHI, WHI, WHI, WHI, WHI, BLA, BLA, WHI, WHI, BLA, RED, BLU, BLU, WHI, WHI, BLA, WHI, RED, BLA, WHI, WHI, RED, BLU, WHI, WHI, BLA, RED, RED, RED, // Row 39.
  RED, RED, RED, RED, RED, RED, RED, RED, BLU, BLU, BLA, BLA, WHI, WHI, WHI, WHI, WHI, WHI, BLA, WHI, WHI, BLA, RED, RED, RED, BLA, WHI, BLA, WHI, BLA, BLU, BLA, WHI, BLU, ORA, BLU, WHI, WHI, BLA, RED, RED  // Row 40.
}; 

// One array for each axis. The -40 square is placed outside the screen
// otherwise the squares will all behave the same at the same moment.
short[] squareX = { 
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 1.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 2.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 3.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 4.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 5.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 6.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 7.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 8.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 9.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 10.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 11.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 12.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 13.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 14.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 15.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 16.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 17.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 18.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 19.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 20.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 21.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 22.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 23.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 24.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 25.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 26.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 27.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 28.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 29.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 30.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 31.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 32.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 33.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 34.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 35.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 36.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 37.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 38.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, // X row 39.
  -40, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780  // X row 40.
};

short[] squareY = { 
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // Y row 1.
  0, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, // Y row 2.
  0, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, // Y row 3.
  0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, // Y row 4.
  0, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, // Y row 5.
  0, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, // Y row 6.
  0, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, // Y row 7.
  0, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, // Y row 8.
  0, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, // Y row 9.
  0, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, // Y row 10.
  0, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, // Y row 11.
  0, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, // Y row 12.
  0, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, // Y row 13.
  0, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, // Y row 14.
  0, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, // Y row 15.
  0, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, // Y row 16.
  0, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, // Y row 17.
  0, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, // Y row 18.
  0, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, // Y row 19.
  0, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, // Y row 20.
  0, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, // Y row 21.
  0, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, // Y row 22.
  0, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, // Y row 23.
  0, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, // Y row 24.
  0, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, // Y row 25.
  0, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, // Y row 26.
  0, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, // Y row 27.
  0, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, // Y row 28.
  0, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, // Y row 29.
  0, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, // Y row 30.
  0, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, // Y row 31.
  0, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, // Y row 32.
  0, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, // Y row 33.
  0, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, // Y row 34.
  0, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, // Y row 35.
  0, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, // Y row 36.
  0, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, // Y row 37.
  0, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, // Y row 38.
  0, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, // Y row 39.
  0, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, 780  // Y row 40.
};

void setup() {
  size(800, 800);
  frameRate(5);
  noSmooth();
  noFill();
  strokeWeight(DIM);
}

void draw() {
  background(0);

  int i = -1;
  while (++i != fillColor.length) {
    final float x = squareX[i], y = squareY[i];
    final float rnd = random(-100, 100);

    stroke(fillColor[i]);
    bezier(x, y, x, y, x, y, x - rnd, y - rnd);
  }
}