イメージ回転

HTML5だと、テクスチャを回転させることができないので、擬似的にラインごとに描画して回転を実現しています。
Sample10.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Sample10.html</title>
<script>
 
var draw;
var	SOURCESIZE = {w:64,h:64};
var	imag;
var	windWidth;
var	windHeight;
 
function init(){
	imag = new Image();
	imag.src = "img/grand001.png";
	var outputcanvas = document.getElementById('output');
	draw = outputcanvas.getContext('2d');
	setInterval("processFrame()", 33);
	windWidth	= outputcanvas.width;
	windHeight	= outputcanvas.height;
}
 
var RAD = Math.PI/180;
var degree = 180;
 
function processFrame(){
	draw.clearRect(0, 0, windWidth, windHeight);
	
	var centerx = windWidth/2;
	var centery = windHeight/2;
	var radius = SOURCESIZE.w/2;

	degree += 1;
	degree %= 360;
	
	var angle = degree*RAD;
	var prepx = Math.cos(angle);
	var prepz = Math.sin(angle);
	
	for(var i=0; i<SOURCESIZE.w; i+=4){
		var dist = radius-i;
		var x = prepx*dist;
		var y = 0;
		var z = prepz*dist;
		var height = SOURCESIZE.h+(z*0.5);
		
		draw.save();
		if(degree < 90 || degree > 270){
			draw.translate(windWidth, 0);
			draw.scale(-1, 1);
			x *= -1;
		}
		var _x = Math.round(x+centerx);
		var _y = y+centery;
		draw.drawImage(imag, i, 0, 4, SOURCESIZE.h, _x, _y-(height/2), 4, height);
		draw.restore();
	}
}
</script> 
</head> 
 
<body onload="init()" style="margin:0px;"> 
<canvas id="output" width="300" height="300">
</body> 
</html>

この部分で定期的に動作するよう設定しています。

setInterval("processFrame()", 33);