I’ve tried every surface tool I know (loft, sweep, etc.), but I always get a warped result — probably because the curves are so uneven. Is there a better way to achieve this?
My approach was to generate profiles across the contours to more clearly define the ripples. Rather than unpick your script to get the logic behind those ripples, most of this solution is working backwards to extract the points for them. You could probably generate these curves earlier in the script with a combination of the flat contour lines and a function to put the ripple in.
I’m not 100% happy with how it behaves near the nose. Odd numbered divisions make the nose rounded but the ripples go around more smoothly. It’s quite hard to judge as the size of the ripples approaches the meshing density.