RADIAL GRID
A simple function very much like the native Polar Grid Tool in AI, only this function actually creates individual cells rather than just some simple circles with lines in them.
center – Location of the grid origo, [point]
inner – The inner radius of the grid, [number]
outer – Radius of the grid, [number]
sectors – Sets the number of sector dividers, [array]
rings – Number of concentric dividers of the grid, [number]
“sectors” is an array carrying the number of sectors / concentric ring. This way, each ring may have a different number of sectors. For an ordinary grid just pass a one value array as “sectors” and make sure “rings” is at the right amount.
function RadialGrid(center, inner, outer, sectors, rings){ var p1, p2, p3, p4, firstArcMid, secondArcMid, angle, angleStep, innerRadius, outerRadius, ringRadius = (outer - inner) / rings, sector for(var i = 0; i < rings; i++){ sector = rings > sectors.length ? sectors[sectors.length - 1] : sectors[i] angle = 90 angleStep = 360 / sector innerRadius = ringRadius * i + inner outerRadius = ringRadius * (i + 1) + inner for(var j = 0; j < sector; j++){ p1 = center - new Point({length: innerRadius, angle: angle}) p2 = center - new Point({length: outerRadius, angle: angle}) p3 = center - new Point({length: outerRadius, angle: angle + angleStep}) p4 = center - new Point({length: innerRadius, angle: angle + angleStep}) firstArcMid = center - new Point({length: outerRadius, angle: angle + angleStep / 2}) secondArcMid = center - new Point({length: innerRadius, angle: angle + angleStep / 2}) if(sector == 1){ Pathfinder.backMinusFront([new Path.Circle(center, outerRadius), new Path.Circle(center, innerRadius)]) } else { var path = new Path([p1, p2]) path.arcTo(firstArcMid, p3) path.add(p4) path.arcTo(secondArcMid, p1) path.closePath() } angle += angleStep } } }
Back to Scripts