canvas setTransform explained
Use Scale(x and y), Rotate in degrees and translate in pixels to create a 2D matrix and use setTransform
HTML
<canvas id="canvas"></canvas>
JavaScript
var counter=0;
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
setInterval(move,100);
function move()
{
counter++;
var anglex=45+counter;
var angley=45+counter;
if(counter>45) angley=80+counter;
var scalex=0.5;
var scaley=0.7;
var origx=0+counter*2;
var origy=100;
var rx=Math.PI*anglex/180;
var ry=Math.PI*angley/180;
ctx.setTransform(scalex*Math.cos(rx),scalex*Math.sin(rx),-scaley*Math.sin(ry),scaley*Math.cos(ry),origx,origy);
ctx.strokeRect(-50,-50,100,100);
}