<script>
window.onload = function() {
var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
////////////////////////////////////// start here
for (var i=0; i<7; i++) { // COLUMNS
for (var j=0; j<7; j++) { // ROWS
//// DEFINE VARIABLES
var x = 20 + i*51;
var y = 20 + j*51;
var w = 50;
var h = 50;
var tx = w/2;
var ty = h/2;
var rx = - tx;
var ry = - ty;
var a = Math.PI / 4 + i+j ;
// CREATE THE SQUARE
square(x,y,w,h,tx,ty,rx,ry,a);
}
}
function square(x,y,w,h,tx,ty,rx,ry,a) {
// POP
context.save();
///// GEOMETRIC TRANSFORMATIONS
//// FIRST TRANSLATE TO TOP LEFT CORNER OF SQUARE
//// these are the new (0,0) coordinates
context.translate(x, y);
//// THEN TRANSLATE TO CENTER OF SQUARE
context.translate(tx, ty); // NEW (0,0);
//// THEN ROTATE
context.rotate(a);
// WE ARE ROTATING USING CENTER OF SQUARE AS AXIS
///// COLOR STYLES
var grd = context.createLinearGradient(rx,ry,rx+w,ry+h);
grd.addColorStop(0.1, "red");
grd.addColorStop(0.5, "cyan");
grd.addColorStop(0.9, "black");
context.fillStyle = grd;
context.fill();
context.fillRect(rx,ry,w,h);
// PUSH
context.restore();
} // END OF FUNCTION
////////////////////////////////////// end here
}
</script>