<!DOCTYPE html>
<HTML>
<HEAD><meta charset="utf-8"></HEAD>
<BODY>
<canvas id="screen" style="border:0px solid #000000;" width="640" height="640">
Your browser does not support the HTML5 canvas tag.
</canvas>
<script>
function rand(n) {
return Math.floor((Math.random()*n));
}
var canvas=document.getElementById("screen");
var ctx=canvas.getContext("2d");
var width=canvas.width;
var height=canvas.height;
var centerX=width/2;
var centerY=height/2;
var radius=width/2;
var angle=0;
var direction=1;
var speed=1;
var v=setInterval(rotate,25);
function drawLeftPart() {
ctx.beginPath();
ctx.linewidth=5;
ctx.strokeStyle="black";
// big circle left-half
ctx.arc(centerX,centerY,radius,Math.PI/2,3*Math.PI/2,false);
//lower half-circle
ctx.arc(centerX,3*centerY/2,radius/2-1,3*Math.PI/2,Math.PI/2,true);
//upper half-circle
ctx.arc(centerX,centerY/2,radius/2,3*Math.PI/2,Math.PI/2,false);
ctx.closePath();
ctx.fillStyle="black";
ctx.fill();
}
function drawRightPart() {
ctx.beginPath();
ctx.arc(centerX,centerY,radius,Math.PI/2,3*Math.PI/2,true);
ctx.stroke();
}
function drawBlackEye() {
// black eye
ctx.beginPath();
ctx.arc(centerX,3*centerY/2,radius/10,0,Math.PI*2,false);
ctx.closePath();
ctx.fill();
}
function drawWhiteEye() {
// white eye
ctx.beginPath();
ctx.arc(centerX,centerY/2,radius/10,0,Math.PI*2,false);
ctx.fillStyle="white";
ctx.closePath();
ctx.fill();
}
function yinyang() {
drawLeftPart();
drawRightPart();
drawBlackEye();
drawWhiteEye();
}
function rotate() {
angle+=speed*0.02*direction;
ctx.clearRect(0,0,width,height);
ctx.save();
ctx.translate(centerX, centerY);
ctx.rotate(angle);
ctx.translate(-centerX, -centerY);
yinyang();
ctx.restore();
if (rand(200)==5) {
direction=-direction;
speed=rand(5)+1;
}
if (rand(50)==5) {
speed+=2;
}
}
</script>
</BODY>
</HTML>