Digi Area Group - Math Tools for Professionals
   Maple and Mathematica packages - math tools for professionals

atlas™ - modern differential geometry for Maple™

> Features List & Examples
> Template Worksheets
> Screenshots
> Documentation & Downloads
> License & Pricing
> Buy Online

 
 
 
 
Google

Features List & Examples  |  Introduction  |  Dimension  |  Indexing  |  Forms  |  Metric  |  atlasWizard - Maplet™

Surface geometry  

Copyright © 2004-2008  DigiArea Group . All rights reserved.

Description:

This worksheet illustrates how to use atlas  package to solve problems in elementary differential geometry. As an example we find geometry  of the following surfaces:

 

[Maple Plot]

[Maple Plot]

[Maple Plot]

Torus

Helicoid

Revolutionary surface

We assume that the geometry is induced by the corresponding embedding of a surface into the flat Euclidian 3-dimensional space. Thus we construct corresponding embedding and calculate the following quantities: first fundamental form  ( metric  tensor field), second fundamental form and field of mean curvature vectors . Besides that we calculate connection 1-forms , curvature 2-forms , curvature tensor field  ( Riemann   tensor  field), Ricci tensor  field and Ricci scalar  function which is proportional to scalar curvature .

Solution:

Load atlas package:

restart:
with(atlas):

Just for right simplification:
`atlas/simp`:=proc(a) factor(simplify(a,trig)) end:
 

Description of the total space R^3

First of all we have to describe the space we are working in. The space is 3-dimensional Euclidean (flat) space. To define the space we declare domain , forms , vectors , coframe , frame , flat metric  and calculate connection  (it equals to zero of cause).

Define Euclidean space  as a manifold :
Domain(R^3);

R^3

Declare 1-forms  for the space coframe:
Forms(e[k]=1);

{e[k]}

Declare vectors  for the space frame:
Vectors(E[j]);

{E[j]}

Declare coframe  on the space:
Coframe(e[1]=d(x),e[2]=d(y),e[3]=d(z));

[e[1] = d(x), e[2] = d(y), e[3] = d(z)]

Declare frame  on the space:
Frame(E[k]);

[E[1] = Diff(``,x), E[2] = Diff(``,y), E[3] = Diff(``,z)]

Declare flat metric  on the space:
Metric(g[R]=d(x)&.d(x)+d(y)&.d(y)+d(z)&.d(z));

g[R] = `&.`(e[1],e[1])+`&.`(e[2],e[2])+`&.`(e[3],e[3])

Calculate connection  of the metric:
Connection(Gamma);

Gamma[i,j]
 

  Torus


Define the torus as a manifold :
Domain(T);

T

Declare constants  a, b:
Constants(a,b);

{Catalan, I, _Z, a, b, Pi, -I}

Declare 1-forms  for torus coframe
Forms(w[i]=1);

{e[k], w[i]}

Declare vectors  for torus frame:
Vectors(W[k]);

{W[k]}

Declare coframe  on the torus:
Coframe(w[1]=d(alpha),w[2]=d(beta));

[w[1] = d(alpha), w[2] = d(beta)]

Declare frame  of the surface:
Frame(W[l]);

[W[1] = Diff(``,alpha), W[2] = Diff(``,beta)]

Declare mapping  of the torus into R^2 :
Mapping(pi,T,R^3,x=(a+b*cos(beta))*cos(alpha),
                 y=(a+b*cos(beta))*sin(alpha),
                 z=b*sin(beta));

pi

T.`--->`.(R^3)

Calculate metric  on the torus using `&/`  operator:
Metric(g[T] = g[R] &/ pi);

g[T] = b^2*`&.`(w[2],w[2])+(a+b*cos(beta))^2*`&.`(w[1],w[1])

Calculate invariants  of the mapping:
Inv[T]:=Invariants(pi);

Inv[T] := TABLE([meanCurvature = -cos(alpha)*cos(beta)*(2*b*cos(beta)+a)/(a+b*cos(beta))/b*E[1]-sin(alpha)*cos(beta)*(2*b*cos(beta)+a)/(a+b*cos(beta))/b*E[2]-sin(beta)*(2*b*cos(beta)+a)/(a+b*cos(beta))...
Inv[T] := TABLE([meanCurvature = -cos(alpha)*cos(beta)*(2*b*cos(beta)+a)/(a+b*cos(beta))/b*E[1]-sin(alpha)*cos(beta)*(2*b*cos(beta)+a)/(a+b*cos(beta))/b*E[2]-sin(beta)*(2*b*cos(beta)+a)/(a+b*cos(beta))...
Inv[T] := TABLE([meanCurvature = -cos(alpha)*cos(beta)*(2*b*cos(beta)+a)/(a+b*cos(beta))/b*E[1]-sin(alpha)*cos(beta)*(2*b*cos(beta)+a)/(a+b*cos(beta))/b*E[2]-sin(beta)*(2*b*cos(beta)+a)/(a+b*cos(beta))...
Inv[T] := TABLE([meanCurvature = -cos(alpha)*cos(beta)*(2*b*cos(beta)+a)/(a+b*cos(beta))/b*E[1]-sin(alpha)*cos(beta)*(2*b*cos(beta)+a)/(a+b*cos(beta))/b*E[2]-sin(beta)*(2*b*cos(beta)+a)/(a+b*cos(beta))...
Inv[T] := TABLE([meanCurvature = -cos(alpha)*cos(beta)*(2*b*cos(beta)+a)/(a+b*cos(beta))/b*E[1]-sin(alpha)*cos(beta)*(2*b*cos(beta)+a)/(a+b*cos(beta))/b*E[2]-sin(beta)*(2*b*cos(beta)+a)/(a+b*cos(beta))...
Inv[T] := TABLE([meanCurvature = -cos(alpha)*cos(beta)*(2*b*cos(beta)+a)/(a+b*cos(beta))/b*E[1]-sin(alpha)*cos(beta)*(2*b*cos(beta)+a)/(a+b*cos(beta))/b*E[2]-sin(beta)*(2*b*cos(beta)+a)/(a+b*cos(beta))...
Inv[T] := TABLE([meanCurvature = -cos(alpha)*cos(beta)*(2*b*cos(beta)+a)/(a+b*cos(beta))/b*E[1]-sin(alpha)*cos(beta)*(2*b*cos(beta)+a)/(a+b*cos(beta))/b*E[2]-sin(beta)*(2*b*cos(beta)+a)/(a+b*cos(beta))...

Extract second fundamental form  as a table:
sF:=eval(Inv[T][secondForm]);

sF := TABLE(zero,[(1, 1) = [-cos(alpha)*cos(beta)^2*(a+b*cos(beta))*E[1]-cos(beta)^2*(a+b*cos(beta))*sin(alpha)*E[2]-sin(beta)*cos(beta)*(a+b*cos(beta))*E[3]], (2, 2) = [-cos(alpha)*b*cos(beta)*E[1]-si...
sF := TABLE(zero,[(1, 1) = [-cos(alpha)*cos(beta)^2*(a+b*cos(beta))*E[1]-cos(beta)^2*(a+b*cos(beta))*sin(alpha)*E[2]-sin(beta)*cos(beta)*(a+b*cos(beta))*E[3]], (2, 2) = [-cos(alpha)*b*cos(beta)*E[1]-si...
sF := TABLE(zero,[(1, 1) = [-cos(alpha)*cos(beta)^2*(a+b*cos(beta))*E[1]-cos(beta)^2*(a+b*cos(beta))*sin(alpha)*E[2]-sin(beta)*cos(beta)*(a+b*cos(beta))*E[3]], (2, 2) = [-cos(alpha)*b*cos(beta)*E[1]-si...
sF := TABLE(zero,[(1, 1) = [-cos(alpha)*cos(beta)^2*(a+b*cos(beta))*E[1]-cos(beta)^2*(a+b*cos(beta))*sin(alpha)*E[2]-sin(beta)*cos(beta)*(a+b*cos(beta))*E[3]], (2, 2) = [-cos(alpha)*b*cos(beta)*E[1]-si...

Construct second fundamental form  as corresponding tensor field ( `&.`  -  is tensor product operator):
B:=add(add(`&.`(e[i],e[j],sF[i,j]),i=1..3),j=1..3);

B := -cos(alpha)*cos(beta)^2*(a+b*cos(beta))*`&.`(e[1],e[1],E[1])-cos(beta)^2*(a+b*cos(beta))*sin(alpha)*`&.`(e[1],e[1],E[2])-sin(beta)*cos(beta)*(a+b*cos(beta))*`&.`(e[1],e[1],E[3])-cos(alpha)*b*cos(b...
B := -cos(alpha)*cos(beta)^2*(a+b*cos(beta))*`&.`(e[1],e[1],E[1])-cos(beta)^2*(a+b*cos(beta))*sin(alpha)*`&.`(e[1],e[1],E[2])-sin(beta)*cos(beta)*(a+b*cos(beta))*`&.`(e[1],e[1],E[3])-cos(alpha)*b*cos(b...
B := -cos(alpha)*cos(beta)^2*(a+b*cos(beta))*`&.`(e[1],e[1],E[1])-cos(beta)^2*(a+b*cos(beta))*sin(alpha)*`&.`(e[1],e[1],E[2])-sin(beta)*cos(beta)*(a+b*cos(beta))*`&.`(e[1],e[1],E[3])-cos(alpha)*b*cos(b...

Extract mean curvature vector :
mu:=Inv[T][meanCurvature];

mu := -cos(alpha)*cos(beta)*(2*b*cos(beta)+a)/(a+b*cos(beta))/b*E[1]-sin(alpha)*cos(beta)*(2*b*cos(beta)+a)/(a+b*cos(beta))/b*E[2]-sin(beta)*(2*b*cos(beta)+a)/(a+b*cos(beta))/b*E[3]
mu := -cos(alpha)*cos(beta)*(2*b*cos(beta)+a)/(a+b*cos(beta))/b*E[1]-sin(alpha)*cos(beta)*(2*b*cos(beta)+a)/(a+b*cos(beta))/b*E[2]-sin(beta)*(2*b*cos(beta)+a)/(a+b*cos(beta))/b*E[3]

Calculate mean curvature :
chi:=simplify(g[R](mu,mu));

chi := (2*b*cos(beta)+a)^2/b^2/(a^2+2*a*b*cos(beta)+b^2*cos(beta)^2)

Use differential operator  `&D` to express tangent vectors on the torus W[i]  by total space frame vectors E[j] :
W1:=W[1] &D pi;
W2:=W[2] &D pi;

W1 := (-sin(alpha)*E[1]+cos(alpha)*E[2])*(a+b*cos(beta))

W2 := b*(-sin(beta)*cos(alpha)*E[1]-sin(beta)*sin(alpha)*E[2]+cos(beta)*E[3])

Verify that mean curvature vector field is normal to the tangent space  of the torus:
'g[R](mu,W1)'=simplify(g[R](mu,W1));
'g[R](mu,W2)'=simplify(g[R](mu,W2));

g[R](mu,W1) = 0

g[R](mu,W2) = 0

Calculate connection  of the embedding:
Connection(omega[T]);

omega[T][i,j]

Calculate curvature  of the embedding:
Curvature(Omega[T]);

Omega[T][i,j]

Calculate Riemann  tensor field:
Riemann(R[T]);

R[T] = b*(a+b*cos(beta))*cos(beta)*`&.`(`&^`(w[1],w[2]),`&^`(w[1],w[2]))

Calculate Ricci  tensor field:
Ricci(ric[T]);

ric[T] = (a+b*cos(beta))/b*cos(beta)*`&.`(w[1],w[1])+1/(a+b*cos(beta))*b*cos(beta)*`&.`(w[2],w[2])

Calculate Ricci scalar  curvature:
RicciScalar(scal[T]);

scal[T] = 2/(a+b*cos(beta))/b*cos(beta)

 

  Helicoid


Define the surface as a manifold:
Domain(H);

H

Declare 1-form for surface coframe
Forms(s[i]=1);

{s[i], e[k], w[i]}

Declare vectors for surface frame:
Vectors(S[k]);

{S[k]}

Declare coframe on the surface:
Coframe(s[1]=d(u[h]),s[2]=d(v[h]));

[s[1] = d(u[h]), s[2] = d(v[h])]

Declare frame of the surface:
Frame(S[k]);

[S[1] = Diff(``,u[h]), S[2] = Diff(``,v[h])]

Declare mapping of the surface into R^3 :
Mapping(psi,H,R^3,x=u[h]*cos(v[h]),
                  y=u[h]*sin(v[h]),
                  z=b*v[h]);

psi

H.`--->`.(R^3)

One can also calculate metric induced on the surface by the mapping.

Metric(g[H] = g[R] &/ psi);

g[H] = `&.`(s[1],s[1])+(b^2+u[h]^2)*`&.`(s[2],s[2])

Calculate invariants of the mapping:
Inv[H]:=Invariants(psi);

Inv[H] := TABLE([meanCurvature = 0, secondForm = TABLE(zero,[(2, 1) = [-sin(v[h])*b^2/(b^2+u[h]^2)*E[1]+cos(v[h])*b^2/(b^2+u[h]^2)*E[2]-u[h]*b/(b^2+u[h]^2)*E[3]], (1, 2) = [-sin(v[h])*b^2/(b^2+u[h]^2)*...
Inv[H] := TABLE([meanCurvature = 0, secondForm = TABLE(zero,[(2, 1) = [-sin(v[h])*b^2/(b^2+u[h]^2)*E[1]+cos(v[h])*b^2/(b^2+u[h]^2)*E[2]-u[h]*b/(b^2+u[h]^2)*E[3]], (1, 2) = [-sin(v[h])*b^2/(b^2+u[h]^2)*...
Inv[H] := TABLE([meanCurvature = 0, secondForm = TABLE(zero,[(2, 1) = [-sin(v[h])*b^2/(b^2+u[h]^2)*E[1]+cos(v[h])*b^2/(b^2+u[h]^2)*E[2]-u[h]*b/(b^2+u[h]^2)*E[3]], (1, 2) = [-sin(v[h])*b^2/(b^2+u[h]^2)*...
Inv[H] := TABLE([meanCurvature = 0, secondForm = TABLE(zero,[(2, 1) = [-sin(v[h])*b^2/(b^2+u[h]^2)*E[1]+cos(v[h])*b^2/(b^2+u[h]^2)*E[2]-u[h]*b/(b^2+u[h]^2)*E[3]], (1, 2) = [-sin(v[h])*b^2/(b^2+u[h]^2)*...
Inv[H] := TABLE([meanCurvature = 0, secondForm = TABLE(zero,[(2, 1) = [-sin(v[h])*b^2/(b^2+u[h]^2)*E[1]+cos(v[h])*b^2/(b^2+u[h]^2)*E[2]-u[h]*b/(b^2+u[h]^2)*E[3]], (1, 2) = [-sin(v[h])*b^2/(b^2+u[h]^2)*...

It is well known that helicoid is a minimal surface . Thus nothing surprising about zero mean curvature vector field .

Calculate connection of the embedding:
Connection(omega[H]);

omega[H][i,j]

Calculate curvature of the embedding:
Curvature(Omega[H]);

Omega[H][i,j]

Calculate Riemann tensor field:
Riemann(R[H]);

R[H] = -1/(b^2+u[h]^2)*b^2*`&.`(`&^`(s[1],s[2]),`&^`(s[1],s[2]))

Calculate Ricci tensor field:
Ricci(ric[H]);

ric[H] = -b^2/(b^2+u[h]^2)^2*`&.`(s[1],s[1])-1/(b^2+u[h]^2)*b^2*`&.`(s[2],s[2])

Calculate Ricci scalar curvature:
RicciScalar(scal[H]);

scal[H] = -2*b^2/(b^2+u[h]^2)^2

  Abstract revolution surface


Define the surface as a manifold:
Domain(A);

A

Declare functions:
Functions(rho=rho(u),zeta=zeta(u));

{rho, zeta}

Declare 1-form for surface coframe
Forms(p[i]=1);

{s[i], p[i], e[k], w[i]}

Declare vectors for surface frame:
Vectors(P[k]);

{P[k]}

Declare coframe on the surface:
Coframe(p[1]=d(u),p[2]=d(v));

[p[1] = d(u), p[2] = d(v)]

Declare frame of the surface:
Frame(P[l]);

[P[1] = Diff(``,u), P[2] = Diff(``,v)]

Declare mapping of the surface into R^3 :
Mapping(f,A,R^3,x=rho*cos(v),
                y=rho*sin(v),
                z=zeta);

f

A.`--->`.(R^3)

One can also calculate metric induced on the surface by the mapping.

Metric(g[A] = g[R] &/ f);

g[A] = (Diff(rho,u)^2+Diff(zeta,u)^2)*`&.`(p[1],p[1])+rho^2*`&.`(p[2],p[2])

Calculate invariants of the mapping:
Inv[A]:=Invariants(f);

Inv[A] := TABLE([meanCurvature = cos(v)*Diff(zeta,u)*(rho*Diff(rho,`$`(u,2))*Diff(zeta,u)-rho*Diff(zeta,`$`(u,2))*Diff(rho,u)-Diff(zeta,u)*Diff(rho,u)^2-Diff(zeta,u)^3)/(Diff(rho,u)^2+Diff(zeta,u)^2)^2...
Inv[A] := TABLE([meanCurvature = cos(v)*Diff(zeta,u)*(rho*Diff(rho,`$`(u,2))*Diff(zeta,u)-rho*Diff(zeta,`$`(u,2))*Diff(rho,u)-Diff(zeta,u)*Diff(rho,u)^2-Diff(zeta,u)^3)/(Diff(rho,u)^2+Diff(zeta,u)^2)^2...
Inv[A] := TABLE([meanCurvature = cos(v)*Diff(zeta,u)*(rho*Diff(rho,`$`(u,2))*Diff(zeta,u)-rho*Diff(zeta,`$`(u,2))*Diff(rho,u)-Diff(zeta,u)*Diff(rho,u)^2-Diff(zeta,u)^3)/(Diff(rho,u)^2+Diff(zeta,u)^2)^2...
Inv[A] := TABLE([meanCurvature = cos(v)*Diff(zeta,u)*(rho*Diff(rho,`$`(u,2))*Diff(zeta,u)-rho*Diff(zeta,`$`(u,2))*Diff(rho,u)-Diff(zeta,u)*Diff(rho,u)^2-Diff(zeta,u)^3)/(Diff(rho,u)^2+Diff(zeta,u)^2)^2...
Inv[A] := TABLE([meanCurvature = cos(v)*Diff(zeta,u)*(rho*Diff(rho,`$`(u,2))*Diff(zeta,u)-rho*Diff(zeta,`$`(u,2))*Diff(rho,u)-Diff(zeta,u)*Diff(rho,u)^2-Diff(zeta,u)^3)/(Diff(rho,u)^2+Diff(zeta,u)^2)^2...
Inv[A] := TABLE([meanCurvature = cos(v)*Diff(zeta,u)*(rho*Diff(rho,`$`(u,2))*Diff(zeta,u)-rho*Diff(zeta,`$`(u,2))*Diff(rho,u)-Diff(zeta,u)*Diff(rho,u)^2-Diff(zeta,u)^3)/(Diff(rho,u)^2+Diff(zeta,u)^2)^2...
Inv[A] := TABLE([meanCurvature = cos(v)*Diff(zeta,u)*(rho*Diff(rho,`$`(u,2))*Diff(zeta,u)-rho*Diff(zeta,`$`(u,2))*Diff(rho,u)-Diff(zeta,u)*Diff(rho,u)^2-Diff(zeta,u)^3)/(Diff(rho,u)^2+Diff(zeta,u)^2)^2...
Inv[A] := TABLE([meanCurvature = cos(v)*Diff(zeta,u)*(rho*Diff(rho,`$`(u,2))*Diff(zeta,u)-rho*Diff(zeta,`$`(u,2))*Diff(rho,u)-Diff(zeta,u)*Diff(rho,u)^2-Diff(zeta,u)^3)/(Diff(rho,u)^2+Diff(zeta,u)^2)^2...
Inv[A] := TABLE([meanCurvature = cos(v)*Diff(zeta,u)*(rho*Diff(rho,`$`(u,2))*Diff(zeta,u)-rho*Diff(zeta,`$`(u,2))*Diff(rho,u)-Diff(zeta,u)*Diff(rho,u)^2-Diff(zeta,u)^3)/(Diff(rho,u)^2+Diff(zeta,u)^2)^2...
Inv[A] := TABLE([meanCurvature = cos(v)*Diff(zeta,u)*(rho*Diff(rho,`$`(u,2))*Diff(zeta,u)-rho*Diff(zeta,`$`(u,2))*Diff(rho,u)-Diff(zeta,u)*Diff(rho,u)^2-Diff(zeta,u)^3)/(Diff(rho,u)^2+Diff(zeta,u)^2)^2...

Calculate connection of the embedding:
Connection(omega[A]);

omega[A][i,j]

Calculate curvature of the embedding:
Curvature(Omega[A]);

Omega[A][i,j]

Calculate Riemann tensor field:
Riemann(R[A]);

R[A] = -rho*Diff(zeta,u)*(Diff(rho,`$`(u,2))*Diff(zeta,u)-Diff(zeta,`$`(u,2))*Diff(rho,u))/(Diff(rho,u)^2+Diff(zeta,u)^2)*`&.`(`&^`(p[1],p[2]),`&^`(p[1],p[2]))

Calculate Ricci tensor field:
Ricci(ric[A]);

ric[A] = -Diff(zeta,u)*(Diff(rho,`$`(u,2))*Diff(zeta,u)-Diff(zeta,`$`(u,2))*Diff(rho,u))/rho/(Diff(rho,u)^2+Diff(zeta,u)^2)*`&.`(p[1],p[1])-rho*Diff(zeta,u)*(Diff(rho,`$`(u,2))*Diff(zeta,u)-Diff(zeta,`...
ric[A] = -Diff(zeta,u)*(Diff(rho,`$`(u,2))*Diff(zeta,u)-Diff(zeta,`$`(u,2))*Diff(rho,u))/rho/(Diff(rho,u)^2+Diff(zeta,u)^2)*`&.`(p[1],p[1])-rho*Diff(zeta,u)*(Diff(rho,`$`(u,2))*Diff(zeta,u)-Diff(zeta,`...

Calculate Ricci scalar curvature:
RicciScalar(scal[A]);

scal[A] = -2*Diff(zeta,u)*(Diff(rho,`$`(u,2))*Diff(zeta,u)-Diff(zeta,`$`(u,2))*Diff(rho,u))/rho/(Diff(rho,u)^2+Diff(zeta,u)^2)^2