I made a Nautilus Spiral in Lazarus
Used a bgrabmp for the rendering.
Not sure exactly why but there is a part in the code I had to "trial and error" to get the expected curve.
if (i <= 12) or ((i >= 29) and (i <= 44)) then
perp := PointF(perp.X, perp.Y);
arcCenter := PointF(
midPt.X + perp.X * hh,
midPt.Y + perp.Y * hh
);
Would be nice to make a 3D version, but not really sure how to go about it.
Found a JavaScript 3D version that looks good.
Enjoy.