Curves in `*`(`^`(R, 3)) 

Curvature and torsion of space curves  

Problem: 

Find curvature, torsion, tangent, binormal and principal normal vectors of the following space curve:    

Solution: 

Load atlas package: 

> restart:
with(atlas):
 

Space 

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 is equal to zero of course). 

> Domain(R^3);
 

`*`(`^`(R, 3))(2.1.1)
 

> Forms(e[k]=1);
 

{e[k]}(2.1.2)
 

> Vectors(E[j]);
 

{E[j]}(2.1.3)
 

> 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)](2.1.4)
 

> Frame(E[k]);
 

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

> Metric(g=d(x)&.d(x)+d(y)&.d(y)+d(z)&.d(z));
 

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

> Connection(omega);
 

omega[i, j](2.1.7)
 

Now the working space is defined completely and we can start to solve the problem. 

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

Curve 

Define the curve as a manifold:
Domain(C); 

C(2.2.1)
 

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

{`+`(`-`(I)), I, Pi, _Z, a, b, dim, Catalan}(2.2.2)
 

Declare 1-form for curve's coframe
Forms(u[i]=1); 

{e[k], u[i]}(2.2.3)
 

Declare vectors for curve's frame:
Vectors(U[k]); 

{U[k]}(2.2.4)
 

Declare coframe on the curve:
Coframe(u[1]=d(tau)); 

[u[1] = d(tau)](2.2.5)
 

Declare frame of the curve:
Frame(U[j]); 

[U[1] = Diff(``, tau)](2.2.6)
 

Declare mapping of the curve into `*`(`^`(R, 3)):
Mapping(pi,C,R^3,
                  x=a*cos(tau),
                  y=a*sin(tau),
                  z=b*tau);
 

 

pi
`.`(C, `--->`, `*`(`^`(R, 3)))(2.2.7)
 

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

> Metric(G = g &/ pi);
 

G = `*`(`+`(`*`(`^`(a, 2)), `*`(`^`(b, 2))), `*`(`&.`(u[1], u[1])))(2.2.8)
 

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

table( [( basis ) = table( [( 0 ) = [`+`(`-`(`/`(`*`(a, `*`(sin(tau), `*`(E[1]))), `*`(`^`(`+`(`*`(`^`(a, 2)), `*`(`^`(b, 2))), `/`(1, 2))))), `/`(`*`(a, `*`(cos(tau), `*`(E[2]))), `*`(`^`(`+`(`*`(`^`...
table( [( basis ) = table( [( 0 ) = [`+`(`-`(`/`(`*`(a, `*`(sin(tau), `*`(E[1]))), `*`(`^`(`+`(`*`(`^`(a, 2)), `*`(`^`(b, 2))), `/`(1, 2))))), `/`(`*`(a, `*`(cos(tau), `*`(E[2]))), `*`(`^`(`+`(`*`(`^`...
table( [( basis ) = table( [( 0 ) = [`+`(`-`(`/`(`*`(a, `*`(sin(tau), `*`(E[1]))), `*`(`^`(`+`(`*`(`^`(a, 2)), `*`(`^`(b, 2))), `/`(1, 2))))), `/`(`*`(a, `*`(cos(tau), `*`(E[2]))), `*`(`^`(`+`(`*`(`^`...
table( [( basis ) = table( [( 0 ) = [`+`(`-`(`/`(`*`(a, `*`(sin(tau), `*`(E[1]))), `*`(`^`(`+`(`*`(`^`(a, 2)), `*`(`^`(b, 2))), `/`(1, 2))))), `/`(`*`(a, `*`(cos(tau), `*`(E[2]))), `*`(`^`(`+`(`*`(`^`...
table( [( basis ) = table( [( 0 ) = [`+`(`-`(`/`(`*`(a, `*`(sin(tau), `*`(E[1]))), `*`(`^`(`+`(`*`(`^`(a, 2)), `*`(`^`(b, 2))), `/`(1, 2))))), `/`(`*`(a, `*`(cos(tau), `*`(E[2]))), `*`(`^`(`+`(`*`(`^`...
(2.2.9)
 

Extract tangent normalized vector field: 

> T=Inv[basis][0];
 

T = `+`(`-`(`/`(`*`(a, `*`(sin(tau), `*`(E[1]))), `*`(`^`(`+`(`*`(`^`(a, 2)), `*`(`^`(b, 2))), `/`(1, 2))))), `/`(`*`(a, `*`(cos(tau), `*`(E[2]))), `*`(`^`(`+`(`*`(`^`(a, 2)), `*`(`^`(b, 2))), `/`(1, ...(2.2.10)
 

Extract normal normalized vector field: 

> N=Inv[basis][1];
 

N = `+`(`-`(`*`(cos(tau), `*`(E[1]))), `-`(`*`(sin(tau), `*`(E[2]))))(2.2.11)
 

Extract binormal normalized vector field: 

> B=Inv[basis][2];
 

B = `+`(`/`(`*`(sin(tau), `*`(b, `*`(csgn(`+`(`*`(`^`(a, 2)), `*`(`^`(b, 2)))), `*`(E[1])))), `*`(`^`(`+`(`*`(`^`(a, 2)), `*`(`^`(b, 2))), `/`(1, 2)))), `-`(`/`(`*`(cos(tau), `*`(b, `*`(csgn(`+`(`*`(`...
B = `+`(`/`(`*`(sin(tau), `*`(b, `*`(csgn(`+`(`*`(`^`(a, 2)), `*`(`^`(b, 2)))), `*`(E[1])))), `*`(`^`(`+`(`*`(`^`(a, 2)), `*`(`^`(b, 2))), `/`(1, 2)))), `-`(`/`(`*`(cos(tau), `*`(b, `*`(csgn(`+`(`*`(`...
(2.2.12)
 

Extract curvature of the curve: 

> k=Inv[curvatures][1];
 

k = `/`(`*`(a), `*`(`+`(`*`(`^`(a, 2)), `*`(`^`(b, 2)))))(2.2.13)
 

Extract torsion of the curve: 

> chi=Inv[curvatures][2];
 

chi = `/`(`*`(b, `*`(csgn(`+`(`*`(`^`(a, 2)), `*`(`^`(b, 2)))))), `*`(`+`(`*`(`^`(a, 2)), `*`(`^`(b, 2)))))(2.2.14)
 

>