Initialization

You need to be in a directory that makes sense to you:

SetDirectory["C:\Documents and Settings\Paul\my \
documents\MAA-NES_Project_NeXT"];

The next two functions are useful when you go to write the gifs to the directory.

Clear[filename];
filename[
        k_]  :=  "Image"   <>   ToString[
          k]   <>   ".gif"

Clear[filewriter];
filewriter[
        t_]  :=  (Display[
            filename[t],  #,  "GIF"];  #)  &

Here are a bunch of 3D functions that I use a lot:

distance[pt1_, pt2_] := 
      Sqrt[(pt1[[1]] - pt2[[1]])^2  +  (pt1[[2]] - 
                pt2[[2]])^2  +  (pt1[[3]]  - 
                pt2[[3]])^2]

totaldistance[points_] := 
      Sum[distance[points[[i]], points[[i - 1]]], {i, 2, 
          Length[points]}]

amblight = GrayLevel[0.3];

lightsrc = {{{-0.25,1,1}, GrayLevel[1]}};

standardviewpoint = {3.780, 1.765, 0.779};
viewpoint = standardviewpoint;

axes[xmax_,ymax_,zmax_]:= Graphics3D[{
                               Thickness[0.003],
                               Line[{{0,0,0},{xmax,0,0}}],
                               Line[{{0,0,0},{0,ymax,0}}],
                               Line[{{0,0,0},{0,0,zmax}}]
                               }]

axes[{x,xmin_,xmax_},
     {y,ymin_,ymax_},
     {z,zmin_,zmax_}]:= Graphics3D[{
                               Thickness[0.003],
                               Line[{{xmin,0,0},{xmax,0,0}}],
                               Line[{{0,ymin,0},{0,ymax,0}}],
                               Line[{{0,0,zmin},{0,0,zmax}}]
                               }]

xticklen = 0.1; yticklen = 0.2; zticklen = 0.1;

xtick[x_]:= Graphics3D[{Thickness[0.003],
                      Line[{{x,-xticklen,0},{x,xticklen,0}}]
                    }];

ytick[y_]:= Graphics3D[{Thickness[0.003],
                      Line[{{-yticklen,y,0},{yticklen,y,0}}]
                    }];

ztick[z_]:= Graphics3D[{Thickness[0.003],
                      Line[{{0,-zticklen,z},{0,zticklen,z}}]
                    }];

Note that the only difference in the next two lists is the definition of DisplayFunction:

show3dopts = {Boxed->False, 
              Axes->None, 
              DisplayFunction->$DisplayFunction, 
              ViewPoint -> viewpoint,
              AmbientLight -> amblight,
              LightSources -> lightsrc,
              PlotRange -> All};

writegifs3dopts[n_]:= {Boxed->False, 
              Axes->None, 
              DisplayFunction->filewriter[n], 
              ViewPoint -> viewpoint,
              AmbientLight -> amblight,
              LightSources -> lightsrc,
              PlotRange -> All};

Helix-like curve

Here we make the curve and some tick marks:

t1 = 0.0;

t2 = 4*Pi;

xmin = -1.2; xmax = 1.2;
ymin = -1.2; ymax = 1.2;
zmin = 0.0; zmax = 32.0;

xticks = Table[xtick[i],{i,Ceiling[xmin],Floor[xmax]}];

yticks = Table[ytick[i],{i,Ceiling[ymin],Floor[ymax]}];

zticks = Table[ztick[i],{i,0,30,5}];

f[t_] := {Cos[t], Sin[t], (2/3) t^(3/2)}

curve = 
        ParametricPlot3D[
          Append[f[t], {RGBColor[0, 0, 1], Thickness[0.005]}], {t, t1, 
            t2}];

These last two computations determine the arc length :

Integrate[Sqrt[1 + t], {t, 0, 4 Pi}]

N[Integrate[Sqrt[1 + t], {t, 0, 4  Pi}]]

Make animation for Quicktime

This Do statement makes the frames in the animation. You can animate the results inside of Mathematica to get some idea of what the Quicktime animation will look like.

\(\(\(Do[
pts = 
          Table[f[t], {t, t1, 
              t2, \((t2 - t1)\)/n}]; 
gpts\  = \ 
          Graphics3D[{PointSize[0.02], 
              Map[Point, pts]}]; 
lines\  = \ 
          Graphics3D[{RGBColor[1, 0, 0], Thickness[0.004], 
              Line[pts]}]; 
Show[
axes[{x, xmin, xmax}, {y, ymin, 
              ymax}, {z, zmin, zmax}], 
curve, gpts, 
          lines, 
xticks, yticks, 
          zticks, 
show3dopts, 
ImageSize -> {600, 375}, 
BoxRatios -> {1, 
              1,  .75}, 
DefaultFont -> {"Courier-Bold", 
              18}, 
PlotLabel -> "number of line segments =" <> 
                ToString[
                  PaddedForm[n, 
                    3]]\  <> "
 approx length ="\ \ PaddedForm[
                N[totaldistance[pts]], {4, 
                  2}]
];, 
{n, 10, 
          50}
];\)\(
\)
    \)\)

Once you are happy with the results above, copy the Do statement and change show3dopts to writegifs3dopts. Also, it helps if you put the gifs in a new directory. Then it is easier to clean up.

SetDirectory["gifs"]

\(\(Do[
pts = 
          Table[f[t], {t, t1, 
              t2, \((t2 - t1)\)/n}]; 
gpts\  = \ 
          Graphics3D[{PointSize[0.02], 
              Map[Point, pts]}]; 
lines\  = \ 
          Graphics3D[{RGBColor[1, 0, 0], Thickness[0.004], 
              Line[pts]}]; 
Show[
axes[{x, xmin, xmax}, {y, ymin, 
              ymax}, {z, zmin, zmax}], 
curve, gpts, 
          lines, 
xticks, yticks, 
          zticks, 
writegifs3dopts[
            n - 9], 
ImageSize -> {600, 
              375}, 
BoxRatios -> {1, 
              1,  .75}, 
DefaultFont -> {"Courier-Bold", 
              18}, 
PlotLabel -> "number of line segments =" <> 
                ToString[
                  PaddedForm[n, 
                    3]]\  <> "
 approx length ="\ \ PaddedForm[
                N[totaldistance[pts]], {4, 
                  2}]
];, 
{n, 10, 
          50}
];\)\)

You are now ready to make an animation using Quicktime Pro.