<script> window.onload = function() { var canvas = document.getElementById("myCanvas"); var context = canvas.getContext("2d"); ////////////////////////////////////// start here for (var i=0; i<50; i++) { //// DEFINE VARIABLES var x = i*10; var y = 50; var w = 20+i; var h = 20+i; var tx = w/2; var ty = h/2; var rx = - tx; var ry = - ty; var a = Math.PI / 4 + i ; // CREATE THE SQUARE square(x,y,w,h,tx,ty,rx,ry,a); } function square(x,y,w,h,tx,ty,rx,ry,a) { context.save(); // POP ///// 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); context.restore(); // PUSH } // END OF FUNCTION ////////////////////////////////////// end here }; </script>