Clear[width,spine,ripple,normalize,tangent,normal, binormal] Needs["Calculus`VectorAnalysis`"]; width[z_] = 0.2 z (1-z^3); spine[z_] = {0.05 z, 0.05 z, z}; ripple[z_] = 0.01 Sin[20 Pi z]; normalize[v_] = v/Sqrt[v.v]; tangent[z_] = normalize[spine'[z]]; binormal[z_] = normalize[CrossProduct[tangent[z], {0,1,0}]]; normal[z_] = CrossProduct[tangent[z], binormal[z]]; seaweed = ParametricPlot3D[ spine[z] + y width[z] normal[z] + y^2 ripple[z] binormal[z], {y,-1,1}, {z,0,1}, PlotPoints -> {8,80}, ViewPoint -> {2,1,0}];
Up to Aquarium