Another service from Omega

Arc Length and Curvature


*****

The length of a space curve can be computed by noticing that when dt is close to zero then the length of the vector connecting f(t) with f(t+dt) is close to the arc length, i.e.
| f(t+dt) - f(t) | = "Arc length from t to t+dt"

picture a picture here


Multiplying and dividing by "dt" we get

> # that

     | f(t + dt) - f(t) |      | df(t) |
     | ---------------- | dt = | ----- | dt = "Arclength from t to t+dt"
     |        dt        |      |  dt   |

Recall that the magnitud of the velocity vector is the speed at which the particle is moving in the direction tangent to its trajectory. So, the above equation indicates that the amount of space traveled is just (speed)*(time). Hence, to compute the total space traveled by the particle with trajectory f(t) during the interval of time from t=a to t=b, all we need to do is to add from t=a to t=b the above formula. i.e.

> # formula

                                        b
                                        /
                                       |  | df(t) |
                             Length =  |  | ----- | dt
                                       |  |  dt   |
                                      /
                                      a

Clearly the length of a space curve can be computed independently of the coordinate system used to describe the curve or even the particular parametrization used. It is "intrinsic" to the curve. For this reason, the concept of arc length is very useful for defining other quantities that are also intrinsic to the curve. For example CURVATURE.

Curvature

The curvature, at a given point, of a space curve is defined as the rate of change of the unit tangent vector with respect to arc length.

In other words the CURVATURE at a point tells you how fast is the curve turning at that point. See the picture below.

picture a picture here


The formal definition of curvature is:
K = | dT/ds |
Where T is the unit tangent vector and s is arc length. It is easier to compute K in terms of the parameter t instead of s. Recall that,
|v| = ds/dt
Hence, by the chain rule we can write:
dT/dt = (dT/ds) (ds/dt)
from where we get,
K = |dT/ds| = |dT/dt| / |ds/dt|
Theorem
Consider a vector function f, but first some useful definitions for later,

> i:=vector([1,0,0]):j:=vector([0,1,0]):k:=vector([0,0,1]):
> len:= proc(u) sqrt(innerprod(evalm(u),evalm(u))); end;

len := proc(u) sqrt(innerprod(evalm(u),evalm(u))) end
> f := t -> x(t)*i + y(t)*j + z(t)*k;
                       f := t -> x(t) i + y(t) j + z(t) k

The unit tangent is T,

> Df := diff(f(t),t); D2f := diff(Df,t);

                    /  d      \     /  d      \     /  d      \
              Df := |---- x(t)| i + |---- y(t)| j + |---- z(t)| k
                    \ dt      /     \ dt      /     \ dt      /

                   /   2      \     /   2      \     /   2      \
                   |  d       |     |  d       |     |  d       |
            D2f := |----- x(t)| i + |----- y(t)| j + |----- z(t)| k
                   |   2      |     |   2      |     |   2      |
                   \ dt       /     \ dt       /     \ dt       /
> T := Df/len(Df): DT := diff(T,t):
 .. I spare you the output...

The curvature is then:

> K := len( DT ) / len( Df ):

   ... Again big output that we don't need to look at...

We now show that the curvature K has the alternative expression, Rhs, where

> Rhs := len( crossprod( Df, D2f ) ) / len( Df )^3:
> simplify(Rhs^2 - K^2);

                                       0

So YES! K = Rhs for all values of "t" and for all vector functions "f".
Q.E.D.

As usual it would be convenient to pack the curvature formula into a maple proc.

> curvature := proc(f,t) local Df, D2f, l,u,v;
> Df := diff(f(s),s);
> D2f := diff(Df,s);
> Df := subs(s=t,Df);
> D2f := subs(s=t,D2f);
> u := crossprod(Df,D2f);
> l := sqrt(innerprod(u,u));
> RETURN(l/sqrt(innerprod(Df,Df))^3);
> end;

curvature := proc(f,t)
             local Df,D2f,l,u,v;
                 Df := diff(f(s),s);
                 D2f := diff(Df,s);
                 Df := subs(s = t,Df);
                 D2f := subs(s = t,D2f);
                 u := crossprod(Df,D2f);
                 l := sqrt(innerprod(u,u));
                 RETURN(l/sqrt(innerprod(Df,Df))^3)
             end

Let's test it,

> assume(r > 0): curvature(t->r*cos(t)*i+r*sin(t)*j,Pi);

                                        1
                                      ----
                                       r~

If you don't "assume" that r > 0 maple is not able to simplify this much. So it works! Notice that this notion of curvature also agrees with our intuitive idea of "curvature". As it is shown above, the curvature of a circle of radius "r" is 1/r and the curvature is smaller the larger the radius of the circle.

The following picture shows how the "kissing" circle changes around the parabola y=x^2.

the curvature of a parabola

Exercise

The DNA molecule has the shape of a double helix. The radius of each helix is about 10 angstroms (1 angstrom = 10^(-8) cm). Each helix rises about 34 angstroms during each complete turn and there are about 2.9 x 10^(8) complete turns. Estimate the length of each helix.

Solution: 2 meters


Link to the commands in this file
Carlos Rodriguez <carlos@math.albany.edu>
Last modified: Fri Oct 12 11:55:44 EDT 2001