Parametric 3D Modeling II - Advanced OpenSCAD
Welcome to your second lesson in parametric 3D modelling!
Today you’ll learn how rotate_extrude works—turning a 2D profile into a 3D form by spinning it around an axis. We’ll use a maths idea you already know—the sine wave—and shape it into a graceful vase. The vase you designed will be 3D-print, here’s an example of what you’ll have at the end:
Without further ado, let’s get started!
Here is the code that you can directly copy and paste into OpenSCAD for your convenience:
// Sine-driven vase (solid)
// $fn = 100 → splits the circle into 100 slices (more = smoother)
$fn = 100; // number of circle slices
H = 180; // vase height
r0 = 20; // base/average radius (overall size)
A = 12; // wave size (bigger = curvier sides)
k = 2; // how many waves from bottom to top
N = 120; // how many points we sample along the height
// Radius at height y.
// Uses sine to make the sides “wiggle” gently.
// NOTE: OpenSCAD uses degrees, so 360*k*(y/H) is in degrees.
function r(y) = r0 + A * sin(360 * k * (y / H));
// Spin the 2D outline around the Z-axis to make the 3D vase.
// The outline is built from points: [x = r(y), y = height].
rotate_extrude(angle = 360)
polygon(points =
concat(
[[0,0]], // start on axis at the base
[ for (i=[0:N]) [ r(i*H/N), i*H/N ] ], // sampled curve up to y = H
[[0,H]] // return to axis at the top
)
);
Great work so far!
When you’re ready to explore further, check out MakerWorld’s MakerLab for lots of pre-made OpenSCAD tools and examples: makerworld.com/en/makerlab. Feel free to tinker, remix, and create whatever you like. Remember: every function you see there is built the same way you designed your vase—using code to define shapes and operations. Happy modelling!

