How to specify rotation origin in openscad OpenSCAD has rotate function which rotates the body around its origin axis.

Is there a way to specify an arbitrary axis?

For example, this rotates a cylinder around its center:

rotate(a=[90,0,0]) {
  cylinder(h=10,r1=10,r2=10);
}


How to make it rotate around its edge?
rotate() always rotates around the origin of the object following it.
What you can do is to move your cylinder away from the origin, like this:

rotate(a=[90,0,0]) {
  translate([0,10,0]) cylinder(h=10,r1=10,r2=10);
}