Seashell

Author

Eric W. Weisstein
June 10, 2014

This notebook downloaded from http://mathworld.wolfram.com/notebooks/Surfaces/Seashell.nb.

For more information, see Eric's MathWorld entry http://mathworld.wolfram.com/Seashell.html.

©2014 Wolfram Research, Inc. except for portions noted otherwise

Graphics

WRI Version

g=ParametricPlot3D[{
2(1-Exp[u/(6π)])Cos[u]Cos[v/2]^2,
2(-1+Exp[u/(6π)])Sin[u]Cos[ v/2]^2,
1-Exp[u/(3π)]- Sin[v]+Exp[u/(6π)]Sin [v]
},{u,0,6π},{v,0,2π},
Boxed->False,PlotPoints->{100,25},Axes->False,PlotRange->All,ViewPoint->{0,2,1}]

LiveGraphics3D

<<Utilities`LiveGraphics3D`

WriteLiveForm["conispi1.m",g]

Nordstrand's Version

g=With[{a=0.2,b=1,c=0.1,n=2},
ParametricPlot3D[{
((1-v/(2π))(1+Cos[u])+c)Cos[n v],
((1-v/(2π))(1+Cos[u])+c)Sin[n v],
b v/(2π)+a Sin[u](1-v/(2π))
},{u,0,2π},{v,0,2π},
Boxed->False,PlotPoints->{25,100},Axes->False,PlotRange->All,ViewPoint->{0,-2,.2},BoxRatios->{1,1,1}]
]

LiveGraphics3D

<<Utilities`LiveGraphics3D`

WriteLiveForm["conispi2.m",g]

Properties

shell={
a(-1+Exp[u/b])Cos[u]Cos[v/2]^2,
a(1-Exp[u/b])Sin[u]Cos[v/2]^2,
1-Exp[u/c]- Sin[v]+Exp[u/b]Sin [v]};

ParametricPlot3D[Evaluate[shell/.{a->2,b->6π,c->3π}],{u,0,6π},{v,0,2π},PlotRange->All]

Curvatures[shell,{u,v},FullSimplify[#,a>0&&b>0&&c>0&&u>0&&0<v<2π]&]

Simplify[MeanCurvature[shell,{u,v}],a>0&&b>0&&c>0&&u>0&&0<v<2π]//Timing

FullSimplify[MeanCurvature[shell,{u,v}],a>0&&b>0&&c>0&&u>0&&0<v<2π]//Timing

Simplify[PrincipalCurvatures[shell,{u,v}],a>0&&b>0&&c>0&&u>0&&0<v<2π]//Timing

Metric Properties

Metric Tensor

FullSimplify[MetricTensor[shell,{u,v}],a>0&&b>0&&c>0&&u>0&&0<v<2π]

Christoffel Symbol of the Second Kind

Simplify[ChristoffelSymbols[shell,{u,v}],a>0&&b>0&&c>0&&u>0&&0<v<2π]

FullSimplify[%,a>0&&b>0&&c>0&&u>0&&0<v<2π]

...ran overnight...

Vector Properties

eqn={a(-1+Exp[u/b])Cos[u]Cos[v/2]^2,a(1-Exp[u/b])Sin[u]Cos[v/2]^2,1-Exp[u/c]-Sin[v]+Exp[u/b]Sin[v]};
rules={Abs[x_]^(n_/;Mod[n,2]==0):>x^n};
assum=a>0&&b>0&&c>0&&u>0&&0<v<2π;

Vector Length

Assuming[assum,FullSimplify[Norm[eqn]/.rules]]

Normal Vector

Assuming[assum,FullSimplify[NormalVector[eqn,{u,v}]/.rules]]