3D Generative Flask
A flask from first principles: it’s a surface of revolution.
The shape is a single radius profile r(y) — at each height y, the flask has radius r.
Rotate that profile around the vertical axis to get the 3D mesh: torus-like base → straight cone → constant-radius neck → lip bump.
JavaScript version (fallback)
Model
Profile: torus-like base (circular arc tangent to the axis at the bottom), then a straight cone to the neck, then constant radius for the neck, then a small lip bump at the rim. The base arc and cone/neck/lip are driven by the sliders; the same math drives the 3D viewer and OBJ export.