Function Repository Resource:

ShapeOperator

Source Notebook

Compute the shape operator on a surface

Contributed by: Wolfram Staff (original content by Alfred Gray)

ResourceFunction["ShapeOperator"][s,{u,v}]

computes the shape operator of surface s with respect to variables u and v.

Details and Options

The negative derivative of the unit normal of a surface is called the shape operator and measures how the surface bends in different directions (here, v is a tangent vector). Weingarten is the matrix of the shape operator of the local surface given in terms of the components of the fundamental forms with respect to variables u and v.

Examples

Basic Examples (2) 

Shape operator on the sphere:

In[1]:=
sphere[a_][u_, v_] := a {Cos[v] Cos[u], Cos[v] Sin[u], Sin[v]}
In[2]:=
ResourceFunction["ShapeOperator"][sphere[1][u, v], {u, v}] // PowerExpand // FullSimplify
Out[2]=

The monkey saddle:

In[3]:=
monkeysaddle[u_, v_] := {u, v, u^3 - 3 u v^2}
In[4]:=
ms = monkeysaddle[u, v]
Out[4]=

The shape operator:

In[5]:=
ResourceFunction["ShapeOperator"][ms, {u, v}]
Out[5]=

Properties and Relations (2) 

A paraboloid:

In[6]:=
paraboloid[a_, b_][u_, v_] := {u, v, a u^2 + b v^2}
In[7]:=
hp = paraboloid[1, -1][u, v];

The shape operator:

In[8]:=
ResourceFunction["ShapeOperator"][hp, {u, v}]
Out[8]=

Alternatively, the resource function UnitNormal can be used to compute the shape operator:

In[9]:=
-{{\!\(
\*SubscriptBox[\(\[PartialD]\), \(u, u\)]hp\), \!\(
\*SubscriptBox[\(\[PartialD]\), \(u, v\)]hp\)}, {\!\(
\*SubscriptBox[\(\[PartialD]\), \(u, v\)]hp\), \!\(
\*SubscriptBox[\(\[PartialD]\), \(v, v\)]hp\)}}.ResourceFunction[
    "UnitNormal"][hp, {u, v}]
Out[9]=

The Weingarten matrix can be computed using the shape operator with the metric:

In[10]:=
metric = Module[{du = \!\(
\*SubscriptBox[\(\[PartialD]\), \(u\)]hp\), dv = \!\(
\*SubscriptBox[\(\[PartialD]\), \(v\)]hp\)}, {{du.du, du.dv}, {du.dv, dv.dv}}]
Out[10]=
In[11]:=
-ResourceFunction["ShapeOperator"][hp, {u, v}].Inverse[
    metric] // Simplify
Out[11]=

Check the calculation:

In[12]:=
% + ResourceFunction["WeingartenMatrix"][hp, {u, v}] // Simplify
Out[12]=

A Monge patch:

In[13]:=
monge[h_][u_, v_] := {u, v, h[u, v]}

Gaussian and mean curvatures:

In[14]:=
ResourceFunction["GaussianCurvature"][monge[h][u, v], {u, v}]
Out[14]=
In[15]:=
ResourceFunction["MeanCurvature"][monge[h][u, v], {u, v}]
Out[15]=

The shape operator:

In[16]:=
ResourceFunction["ShapeOperator"][monge[h][u, v], {u, v}]
Out[16]=

Publisher

Enrique Zeleny

Version History

  • 1.0.0 – 04 September 2020

Source Metadata

Related Resources

License Information