var IS_SKV8 = typeof document == "undefined"; var HAS_PATH = typeof Path2D != "undefined"; var HAS_DISPLAY_LIST = typeof DisplayList != "undefined"; var NumTeeth = 24; var NumGears = 60; var DeltaTheta = Math.PI/90; var FaceColors = ["#000099", "#006600", "#990000", "#EEEE00"]; var SideColors = ["#0000FF", "#009900", "#FF0000", "#CCCC00"]; function makeGear(pathLike, r) { var dT = Math.PI*2/NumTeeth; var dTq = dT/4; var outer = r; var inner = 0.7 * r; pathLike.moveTo(Math.sin(-2*dTq)*outer, Math.cos(-2*dTq)*outer); for (var i=0; i= Math.PI*2) { rotation = 0; } for (var i=0; i < gears.length; i++) { gear = gears[i]; draw3DGearAt(ctx, rotation, gear); } ticks++; if (IS_SKV8) { inval(); } }; function fps() { console.log(ticks); ticks = 0; setTimeout(fps, 1000); }; setTimeout(fps, 1000); return draw; }(); if (!IS_SKV8) { window.onload = function(){ var canvas = document.getElementById("gears"); var ctx = canvas.getContext("2d"); function drawCallback() { onDraw(ctx); setTimeout(drawCallback, 1); } setTimeout(drawCallback, 1); } } console.log("HAS_PATH: " + HAS_PATH);