<p>OpenSCAD has <code>rotate</code> function which rotates the body around its origin axis.</p>

<p>Is there a way to specify an arbitrary axis?</p>

<p>For example, this rotates a cylinder around its center:</p>

<pre><code>rotate(a=[90,0,0]) {
  cylinder(h=10,r1=10,r2=10);
}
</code></pre>

<p>How to make it rotate around its edge?</p>

```
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);
}
```
```