# Polar array

Sometimes you want to copy a shape with a circular pattern. This is fairly easy to do with a little bit of javascript.

``const polarCopies = (shape, count, radius) => {  const base = shape.translate(0, radius);  const angle = 360 / count;  const copies = [];  for (let i = 0; i < count; i++) {    copies.push(base.clone().rotate(i * angle));  }  return copies;};``

For the optimal use, take into account that we assume

• that your original shape is centered at the origin
• that you want to rotate around the origin
• that you want to go all around the circle

Let's show an example

``const { drawCircle } = replicad;const polarCopies = (shape, count, radius) => {  const base = shape.translate(0, radius);  const angle = 360 / count;  const copies = [];  for (let i = 0; i < count; i++) {    copies.push(base.clone().rotate(i * angle));  }  return copies;};function main() {  return polarCopies(drawCircle(5), 5, 12);}``

Note that this code works for both 2D and 3D cases. In the case of 3D, it will do the copies in the `XY` plane.

``const { drawCircle } = replicad;const polarCopies = (shape, count, radius) => {  const base = shape.translate(0, radius);  const angle = 360 / count;  const copies = [];  for (let i = 0; i < count; i++) {    copies.push(base.clone().rotate(i * angle));  }  return copies;};function main() {  return polarCopies(drawCircle(5).sketchOnPlane().extrude(2), 5, 12);}``