Drawing Gears

const TWO_PI:Number=Math.PI*2;
// x, y, max radius, notch number
drawVerts(calcGear(200, 200, 50, 9));

drawVerts(calcGear(400, 200, 30, 3));

drawVerts(calcGear(300, 350, 30, 5));

drawVerts(calcGear(400,400, 30, 2));

function calcGear(x:Number, y:Number, maxRad:Number, s:int):Array {
	var verts:Array = new Array();
	var step:Number=TWO_PI / (s * 4);
	var mod:Number=0;
	for (var i:Number = 0; i<=TWO_PI; i+=step) {
		var r:Number = (int(mod)%2+1) * maxRad;
		mod+=.5;
		verts.push(x + r * Math.cos(i));
		verts.push(y + r * Math.sin(i));
	}
	return verts;
}

// could  use draw path here instead;
function drawVerts(verts:Array):void{
	graphics.lineStyle(0,0x000000);
	graphics.moveTo(verts[0], verts[1]);
	for (var i:int = 2; i<verts.length; i+=2) {
		graphics.lineTo(verts[i], verts[i + 1]);
	}
	graphics.lineTo(verts[0], verts[1]);
}

Needed to draw some gear shapes today…

Leave a Reply

Your email address will not be published. Required fields are marked *