Application Center - Maplesoft

App Preview:

Flat surfaces of revolution

You can switch back to the summary page by clicking here.

Learn about Maple
Download Application


 

flatrev.mws

Flat Surfaces of Revolution

by John Oprea

This worksheet shows how Maple may be used to find flat surfaces of revolution. Recall that a surface is flat if its Gauss curvature vanishes; K = 0 . A general reference is J. Oprea, Differential Geometry and its Applications . We start with the usual

> with(plots):

> dp := proc(X,Y)

> X[1]*Y[1]+X[2]*Y[2]+X[3]*Y[3];

> end:

> nrm := proc(X)

> sqrt(dp(X,X));

> end:

> xp := proc(X,Y)

> local a,b,c;

> a := X[2]*Y[3]-X[3]*Y[2];

> b := X[3]*Y[1]-X[1]*Y[3];

> c := X[1]*Y[2]-X[2]*Y[1];

> [a,b,c];

> end:

The next procedure computes the metric E=x_u dot x_u, F=x_u dot x_v and G=x_v dot x_v.

> EFG := proc(X)

> local Xu,Xv,E,F,G;

> Xu := [diff(X[1],u),diff(X[2],u),diff(X[3],u)];
Xv := [diff(X[1],v),diff(X[2],v),diff(X[3],v)];

> E := dp(Xu,Xu);

> F := dp(Xu,Xv);

> G := dp(Xv,Xv);

> simplify([E,F,G]);

> end:

The formula for Gauss curvature requires dotting certain second partial derivatives with the unit normal. This is done as follows. See the formulas for K and H given on page 91 and Lemma 2.1 on page 92 of Differential Geometry and its Applications . Now compare the Examples on pages 93-97 with the calculations below.

> UN := proc(X) # THE UNIT NORMAL FUNCTION

> local Xu,Xv,Z,s;

> Xu := [diff(X[1],u),diff(X[2],u),diff(X[3],u)];
Xv := [diff(X[1],v),diff(X[2],v),diff(X[3],v)];

> Z := xp(Xu,Xv);

> s := nrm(Z);

> simplify([Z[1]/s,Z[2]/s,Z[3]/s],sqrt,symbolic);

> end:

> lmn := proc(X)

> local Xu,Xv,Xuu,Xuv,Xvv,U,l,m,n;

> Xu := [diff(X[1],u),diff(X[2],u),diff(X[3],u)];

> Xv := [diff(X[1],v),diff(X[2],v),diff(X[3],v)];

> Xuu := [diff(Xu[1],u),diff(Xu[2],u),diff(Xu[3],u)];

> Xuv := [diff(Xu[1],v),diff(Xu[2],v),diff(Xu[3],v)];

> Xvv := [diff(Xv[1],v),diff(Xv[2],v),diff(Xv[3],v)];

> U := UN(X);

> l := dp(U,Xuu);

> m := dp(U,Xuv);

> n := dp(U,Xvv);

> simplify([l,m,n]);

> end:

Finally we can calculate Gauss curvature K as follows.

> GK := proc(X)

> local E,F,G,l,m,n,S,T;

> S := EFG(X);

> T := lmn(X);

> E := S[1];

> F := S[2];

> G := S[3];

> l := T[1];

> m := T[2];

> n := T[3];

> simplify((l*n-m^2)/(E*G-F^2));

> end:

Now we can enter a function h which will be the profile curve of a surface of revolution with parametrization x(u,v) = [u, h(u)*cos(v), h(u)*sin(v)] and the parametrization itself.

> h:=t->h(t);

h := 'h'

> surfrev:=[u,h(u)*cos(v),h(u)*sin(v)];

surfrev := [u, h(u)*cos(v), h(u)*sin(v)]

We can take the Gauss curvature using the GK procedure above.

> gauss:=GK(surfrev);

gauss := -diff(h(u),`$`(u,2))/((1+diff(h(u),u)^2)^2...

We want K = 0 , so we take the numerator of gauss and solve the differential equation obtained when we set the numerator equal to zero.

> numer(gauss);

-diff(h(u),`$`(u,2))

We can solve for the function h(u) .

> sol:=rhs(dsolve(numer(gauss)=0,h(u)));

sol := _C1*u+_C2

We can pick _C1 and _C2 in various ways to see what this function is.

> func1:=subs({_C1=1,_C2=0},sol);

func1 := u

> func2:=subs({_C1=0,_C2=1},sol);

func2 := 1

> func3:=subs({_C1=1,_C2=1},sol);

func3 := u+1

If you don't recognize these surfaces yet, you can plot them!

> plot3d([u,func1*cos(v),func1*sin(v)],u=0..2,v=0..2*Pi,scaling=constrained,style=patch,shading=zhue,
lightmodel=light3,grid=[5,25],orientation=[55,35]);

[Maple Plot]

> plot3d([u,func2*cos(v),func2*sin(v)],u=0..2,v=0..2*Pi,scaling=constrained,style=patch,shading=zhue,
lightmodel=light3,grid=[5,25],orientation=[55,35]);

[Maple Plot]

> plot3d([u,func3*cos(v),func3*sin(v)],u=-1..2,v=0..2*Pi,scaling=constrained,style=patch,shading=zhue,
lightmodel=light3,grid=[5,25],orientation=[55,35]);

[Maple Plot]

So now you know what a flat surface of revolution must be.