VC.09 Spherical Coordinates
GIVE IT A TRY!

\(Off[General::spell]; 
Off[General::spell1]; 

    \(Off[ParametricPlot3D::ppcom]; \)\)Off[ParametricPlot::ppcom]; Off[Plot::plnr]; SetOptions[Limit, Analytic -> True];

CMView = {2.7, 1.6, 1.2};

Vector Drawer

BeginPackage["Vector3D`", "Graphics`Colors`"];

\(Axes3D::"usage" = 
      "Axes3D[a, b] creates a Graphics3D object of cartesian axes with x, y, and z running from -a/3 to a, and with axes labels b units beyond the tips of the axes.  Axes3D[a] is Axes3D[a, a/8]."; 

    \(Perpend::"usage" = 
      "Perpend[a] returns a unit vector which is perpendicular to the vector a."; \)\)Arrow::"usage" = 
      "Arrow[a] produces a 2 or 3 dimensional vector from the origin to a. \
Arrow[a, Tail -> tail] gives a vector from tail to a."; Vector::"usage" = 
      "Vector[a, b] gives a 2D or 3D vector from a to b."; ArrowHead::"usage" = 
      "ArrowHead[a, vec] produces an arrowhead with its tip placed at the \
point a, pointing in the direction of the vector vec."; Tail::"usage" = 
      "Tail -> point puts the tail of the vector at point."; Norm::"usage" = 
      "Norm[vec] returns the Euclidean length of vec."; Normalize::"usage" = 
      "Normalize[vec] returns a unit vector in the direction of vec, \
provided vec is nonzero."; Aperture::"usage" = 
      "Aperture is the ratio of the radius of the base to the length of the \
head of a vector."; TipSize::"usage" = 
      "TipSize specifies an absolute size for the inner tip length of the \
head of a vector."; TipRatio::"usage" = 
      "TipRatio is the ratio of the inner length of the arrowhead to the \
length of the shaft of a vector."; HeadRatio::"usage" = 
      "HeadRatio is the ratio of the outer length of the arrowhead to the \
length of the shaft of a vector."; HeadSize::"usage" = 
      "HeadSize specifies an absolute size for the head of a vector."; 
    ScaleFactor::"usage" = 
      "ScaleFactor specifies the amount to scale a vector in length and may \
be either a number or a pure function."; ZeroVectorPointSize::"usage" = 
      "ZeroVectorPointSize is the size of the point used to represent a \
zero vector."; Options[Vector] = 
      Options[Arrow] = 
        Options[ArrowHead] = {HeadRatio -> 0.18, 
            TipRatio -> 0.14, Aperture -> 0.3, 
            ScaleFactor -> 1, HeadType -> Polygon, 
            ShaftQ -> True, EdgesQ -> True, 
            VectorColor -> RGBColor[0, 0, 1], ShaftWidth -> 0.005, 
            ZeroVectorPointSize -> 0.01}; Begin["`Private`"]; SetOptions[ParametricPlot, AspectRatio -> Automatic]; SetOptions[Plot, AspectRatio -> Automatic]; SetOptions[Graphics, AspectRatio -> Automatic]; Axes3D[u_, v_] := 
      Graphics3D[{{Blue, Line[{{-(u/3), 0, 0}, {u, 0, 0}}]}, 
          Text["x", {u + v, 0, 0}], {Blue, 
            Line[{{0, -(u/3), 0}, {0, u, 0}}]}, 
          Text["y", {0, u + v, 0}], {Blue, 
            Line[{{0, 0, -(u/3)}, {0, 0, u}}]}, 
          Text["z", {0, 0, u + v}]}]; Axes3D[u_] := Axes3D[u, (u/8)]; Norm[a_?VectorQ] := N[(Sqrt[a . a])]; Normalize[a_?VectorQ] := If[a . a == 0, a, (a/Norm)[a]]; Perpend[a_?VectorQ] := 
      Normalize[{a[[2]], 
            -a[[1]]}] /; 
        Length[a] == 2Perpend[a_?VectorQ] := 
      Normalize[
          If[a[[1]] == 0, {1, 0, 0}, {0, 
              a[[3]], 
              -a[[2]]}]] /; 
        Length[a] == 3Base3D = 
      Table[{Cos[((2 k π)/8.) ], Sin[((2 k π)/8.) ]}, {k, 0, 
          8}]; Vector[from_?VectorQ, to_?VectorQ, opts___] := 
      Module[{sq, sw, ht, hs, hr, tr, ap, sf, vc, zvps, diff = to - from, 
            tip}, {sq, sw, ht, hs, hr, ts, tr, ap, sf, vc, zvps} = 
            {ShaftQ, ShaftWidth, HeadType, HeadSize, HeadRatio, TipSize, 
                  TipRatio, Aperture, ScaleFactor, VectorColor, 
                  ZeroVectorPointSize} /. {opts} /. Options[Vector]; 
          If[from == to, 
            Return[Graphics[{PointSize[zvps], vc, Point[from]}]]]; 
          diff = If[NumberQ[N[sf]], sf diff, sf[diff]]; tip = from + diff; 
          If[NumberQ[hs], hr = (hs/Norm)[diff]; tr = 0.75 hr]; 
          If[NumberQ[ts], tr = (ts/Norm)[diff]]; 
          Graphics[{
              If[sq, {vc, Thickness[sw], Line[{from, tip - tr diff}]}, {}], 
              With[{trans = ap hr Norm[diff] Perpend[diff]}, {vc, 
                  Thickness[sw], 
                  ht[{tip, tip - hr diff + trans, tip - tr diff, 
                      tip - hr diff - trans, tip}]}]}]] /; 
        Length[from] == Length[to] == 2Vector[from_?VectorQ, to_?VectorQ, opts___] := 
      Module[{sq, eq, sw, hs, hr, tr, ap, sf, vc, zvps, diff = to - from, 
            tip}, {sq, eq, sw, hs, hr, ap, sf, vc, zvps} = 
            {ShaftQ, EdgesQ, ShaftWidth, HeadSize, HeadRatio, Aperture, 
                  ScaleFactor, VectorColor, ZeroVectorPointSize} /. {opts}
                   /. Options[Vector]; 
          If[from == to, 
            Return[Graphics3D[{PointSize[zvps], vc, Point[from]}]]]; 
          diff = If[NumberQ[N[sf]], sf diff, sf[diff]]; tip = from + diff; 
          If[NumberQ[hs], hr = (hs/Norm)[diff]]; tr = (hr/2); 
          Graphics3D[{
              If[sq, {vc, Thickness[sw], Line[{from, tip - tr diff}]}, {}], 
              If[eq, {}, EdgeForm[]], {SurfaceColor[vc], 
                With[{temp = Perpend[diff]}, 
                  (Polygon[Append[#1, tip]]&)/@
                    Partition[
                      (tip - hr diff + #1&)/@
                        ((ap hr Norm[diff] Base3D) . {temp, 
                              Normalize[temp\[Cross]diff]}), 2, 1]]}}]] /; 
        Length[from] == Length[to] == 3Arrow[a_, Tail -> b_, opts___] := Vector[b, a + b, opts]Arrow[a_, opts___] := Vector[Table[0, {Length[a]}], a, opts]\(ArrowHead[a_, b_, opts___] := 
      Vector[a - b, a, ShaftQ -> False, opts]; 

End[]; 

    \(EndPackage[]; \)\)

Graphics`Colors`GosiaGreen = RGBColor[0,  0.392187,  0];

Spherical Setup

\(Clear[polar]; 

    polar[{x_, y_, z_}] := {\@\(x\^2 + y\^2 + z\^2\), ArcTan[y\/x], 
        ArcCos[z\/\@\(x\^2 + y\^2 + z\^2\)]}; 
Clear[X, length]; 

    length[X_] := \@\(X . X\); 
\(rr = 3; \)\)R = 5; scale = 0.8; red = RGBColor[1, 0, 0]; blue = RGBColor[0, 0, 1]; color1 = RGBColor[0.8, 0.2, 0.8]; color2 = RGBColor[0.2, 0.8, 0.2]; black = RGBColor[0, 0, 0]; \(Clear[axes]; 

    axes := Graphics3D[{Line[{X, {1.5\ rr, 0, 0}}], 
          Line[{X, {0, 1.5\ rr, 0}}], Line[{X, {0, 0, 2\ rr}}]}]; 

    Clear[xyplane]; 

    xyplane := 
      Graphics3D[
        Polygon[{{\(-2\)\ rr, \(-2\)\ rr, 0}, {\(-2\)\ rr, 2\ rr, 0}, {2\ rr, 
              2\ rr, 0}, {2\ rr, \(-2\)\ rr, 0}}]]; 
\(X = {0, 0, 0}; \)\)origin = Graphics3D[{black, Point[X]}]; Z = {2, 3, 5}; \(Clear[point]; 

    point := Graphics3D[{red, PointSize[0.03], Point[scale\ Z]}]; 

    \(Z0 = {0, 0, length[0.8\ Z]}; \)\)\(Clear[zpoint]; 
zpoint = Graphics3D[{black, Point[Z0]}]; 

    \(XY = scale\ Z\ {1, 1, 0}; \)\)\(Clear[xypoint]; 
xypoint := Graphics3D[{black, Point[XY]}]; 

    \(X0 = {length[scale\ Z\ {1, 1, 0}], 0, 0}; \)\)xpoint = Graphics3D[{black, Point[X0]}]; Y0 = {0, length[scale Z {1, 1, 0}], 0}; ypoint = Graphics3D[{black, Point[Y0]}]; \(Clear[ray]; 
ray := Graphics3D[{blue, Line[{X, scale\ Z}]}]; 

    Clear[ray1]; 
ray1 := Graphics3D[{color1, Line[{scale\ Z, Z}]}]; 

    Clear[xyray]; 
xyray := Graphics3D[{red, Line[{X, Z\ {1, 1, 0}}]}]; 

    \(rays := {ray, xyray}; \)\)xyaux = 
      (length[0.8 Z] (0.8 Z {1, 1, 0}))/
        length[0.8 Z {1, 1, 0}]; \(Clear[zarc]; 

    zarc = Graphics3D[{blue, 
          Line[Table[
              \(Cos[t]\ \) {0, 0, length[0.8\ Z]} + Sin[t]\ xyaux, {t, 0, 
                \(polar[0.8\ Z]\)[[3
                  ]],  .1}]]}]; 
Clear[zarc1]; 

    zarc1 = Graphics3D[{color1, 
          Line[Table[
              \(Cos[t]\ \) {0, 0, length[0.8\ Z]} + Sin[t]\ xyaux, {t, 
                \(polar[0.8\ Z]\)[[3]], 
                1,  .1}]]}]; 
Clear[zarc2]; 

    zarc2 = Graphics3D[{color1, 
          Line[Table[
              \(Cos[t]\ \) {0, 0, length[0.8\ Z]} + Sin[t]\ xyaux, {t, 
                \(-0.8\), 0,  .1}]]}]; 
Clear[xyarc]; 

    xyarc = Graphics3D[{blue, 
          Line[Table[
              Cos[t]\ X0 + Sin[t]\ Y0, {t, 0, 
                \(polar[XY]\)[[2
                  ]],  .1}]]}]; 
Clear[xyarc1]; 

    xyarc1 = Graphics3D[{color1, 
          Line[Table[Cos[t]\ X0 + Sin[t]\ Y0, {t, \(- .5\), 0,  .1}]]}]; 

    Clear[xyarc2]; 

    xyarc2 = Graphics3D[{color1, 
          Line[Table[
              Cos[t]\ X0 + Sin[t]\ Y0, {t, 
                \(polar[XY]\)[[2]], 
                \(polar[XY]\)[[2]] + 
                  0.3,  .1}]]}]; 
Clear[stick]; 

    stick = Graphics3D[{red, Line[{scale\ Z, XY}]}]; 

    \(xaxislabel = Text["x", {0.363, 0.26}]; \)\)yaxislabel = Text["y", {0.73, 0.3}]; zaxislabel = Text["z", { .5, 0.67}]; stickplot = 
      Show[xyplane, axes, ray, point, Boxed -> False, 
        ViewPoint -> {2.747, 1.594, 1.168}, 
        Epilog -> {xaxislabel, yaxislabel, zaxislabel}, 
        DisplayFunction -> Identity]; rho = Text["r", {0.53, 0.45}]; rlabel = 
      Show[xyplane, axes, ray, point, Boxed -> False, 
        ViewPoint -> {2.747, 1.594, 1.168}, 
        Epilog -> {rho, xaxislabel, yaxislabel, zaxislabel}, 
        DisplayFunction -> Identity]; phi = Text["s", {0.55, 0.57}]; slabel = 
      Show[xyplane, zpoint, axes, ray, point, zarc, zarc1, zarc2, 
        Boxed -> False, ViewPoint -> {2.747, 1.594, 1.168}, 
        Epilog -> {phi, xaxislabel, yaxislabel, zaxislabel}, 
        DisplayFunction -> Identity]; theta = Text["t", { .5, 0.3}]; tlabel = 
      Show[xyplane, axes, xypoint, xpoint, ray, stick, point, xyarc, xyarc1, 
        xyarc2, Boxed -> False, ViewPoint -> {2.747, 1.594, 1.168}, 
        Epilog -> {theta, xaxislabel, yaxislabel, zaxislabel}, 
        DisplayFunction -> Identity]; all = 
      Show[xyplane, axes, ray, stick, point, zpoint, xpoint, xypoint, xyarc, 
        xyarc1, xyarc2, zarc, zarc1, zarc2, Boxed -> False, 
        ViewPoint -> {2.747, 1.594, 1.168}, 
        Epilog -> {theta, phi, rho, xaxislabel, yaxislabel, zaxislabel}, 
        DisplayFunction -> Identity];

Crisscross

\(Clear[x]; 

    crisscross = 
      Plot[{Cos[x], Sin[x]}, {x, π\/8, \(3\ π\)\/8}, 
        PlotStyle -> {{RGBColor[1, 0, 0], Thickness[0.02]}}, 
        Axes -> None, AspectRatio -> 1\/3, 
        DisplayFunction -> Identity]; \)

G.1)  Plotting with spherical coordinates*

G.1.a)

Here is the physical meaning of the spherical coordinates r, s, and t:

Show[all, DisplayFunction -> $DisplayFunction];

Here are the formulas for spherical coordinates:

\(Clear[x, y, z, r, s, t]; 
x[r_, s_, t_] = r\ Sin[s]\ Cos[t]\)y[r_, s_, t_] = r Sin[s] Sin[t]z[r_, s_, t_] = r Cos[s]

Account for why the following plots turn out the way they do:

ParametricPlot3D[{x[4, s, t], y[4, s, t], z[4, s, t]}, {s, 0, 
        (π/4)}, {t, 0, π}, Axes -> Automatic];

ParametricPlot3D[{x[r, s, (π/3)], y[r, s, (π/3)], 
        z[r, s, (π/3)]}, {s, (π/3), ((2 π)/3)}, {r, 0, 3}, 
      Axes -> Automatic];

ParametricPlot3D[{x[r, (π/6), t], y[r, (π/6), t], 
        z[r, (π/6), t]}, {r, 1, 2}, {t, 0, π}, 
      Axes -> Automatic];

G.1.b.i)

Describe the part of the sphere 
       (x^2) +  (y^2) +  (z^2) = 4 
consisting of those points with y ≥ 0 in spherical coordinates.

G.1.b.ii)

Describe the cone 
       z = (Sqrt[(x^2) +  (y^2)]) 
in spherical coordinates.

You get this cone by rotating the line z = y (with y ≥ 0) in the yz-plane about the z-axis.

G.2)  Integrating*

G.2.a)

A sphere of radius rad contains a volume of
       ((4 π (rad^3))/3) 
cubic units.
Let R be the region inside and on the sphere
       (x^2) +  (y^2) +  (z^2) = (rad^2),
and use spherical coordinates to measure
       \(volume\ of\ R = 
        ∫\_\%\(∫\_\%\(∫\_\(\ R\)\%\ 
              dx dy dz\)\)\)
to give a quick explanation of how this formula comes to be.

G.2.b)

Calculate
       \(∫\_\%\(∫\_\%\(∫\_\(\ R\_xyz\)\%\((x\^2 + \ y\^2 + \ z\^2)\)\ 
              dx dy dz\)\)\)
where  (Subscript[R, xyz]) is the region consisting of everything between and on the spheres
       (x^2) +  (y^2) +  (z^2) = (a^2) and (x^2) +  (y^2) +  (z^2) = (b^2).
Assume 0 < a < b.

You can save a lot of time if you go to spherical coordinates with a ≤ r ≤ b.

G.2.c)

A spherical shell whose inner radius is 2 cm and whose outer radius is 8 cm is made of material of varying density.
At a point {x, y, z}, the density of the material is 0.39 times the square of the distance to the center of the sphere.
Assume all the air has been pumped out of the hollow interior.
Does the shell sink or float in water?

G.2.d)

Measure the volume of the solid region that is inside the sphere
       (x^2) +  (y^2) +  (z^2) = 4,
but is outside the cylinder 
       (x^2) +  (y^2) = 1.

Cylindrical coordinates 
       x = r Cos[t],
       y = r Sin[t],and 
       z = s
will work better than spherical coordinates.

G.2.e)

Calculate
       (∫_^)(∫_^)(∫_( (Subscript[R, xyz]))^) (((((x/a)))^2)+((((y/b)))^2)+((((z/c)))^2))dxdydz,
where (Subscript[R, xyz]) is the region consisting of everything inside and on the ellipsoid 
       ((((x/a)))^2)+((((y/b)))^2)+((((z/c)))^2)=1.

G.3)  Ice cream cones

G.3.a)

Here's sugar waffle ice cream cone plotted with a serving of ice cream:

\(Clear[x, y, z, r, s, t]; 
x[r_, s_, t_] = r\ Sin[s]\ Cos[t]; 

    \(y[r_, s_, t_] = r\ Sin[s]\ Sin[t]; \)\)z[r_, s_, t_] = r Cos[s]; \(Clear[coneplotter]; 

    coneplotter[r_, t_] = {x[r, π\/8, t], y[r, π\/8, t], 
        z[r, π\/8, t]}; 

    \(cone = ParametricPlot3D[
        Evaluate[coneplotter[r, t]], {r, 0, 4}, {t, 0, 2\ π}, 
        PlotPoints -> {2, Automatic}, DisplayFunction -> Identity]; 
    \)\)\(Clear[x, xx, y, yy, z, zz, r, s, t, radial, caplotter]; 

    xx[r_, s_, t_] = r\ Sin[s]\ Cos[t]; 

    \(yy[r_, s_, t_] = r\ Sin[s]\ Sin[t]; \)\)zz[r_, s_, t_] = r Cos[s]; radial[s_] = 4 + Cos[4 s]^2; {x[r_, s_, t_], y[r_, s_, t_], z[r_, s_, t_]} = {
        xx[r radial[s], s, t], yy[r radial[s], s, t], 
        zz[r radial[s], s, t]}; capplotter[s_, t_] = {x[1, s, t], y[1, s, t], z[1, s, t]}; \(cap = 
      ParametricPlot3D[
        Evaluate[capplotter[s, t]], {s, 0, π\/8}, {t, 0, 2\ π}, 
        DisplayFunction -> Identity]; 


    Show[cone, cap, Boxed -> False, BoxRatios -> Automatic, 
      ViewPoint -> CMView, PlotRange -> All, 
      AxesLabel -> {"x", "y", "z"}, 
      DisplayFunction -> $DisplayFunction]; \)

Tsk-tsk.
Any ice cream stand that tries to peddle ice cream cones like this will not stay in business very long.
Use the same sugar waffle base, but this time plot the ice cream the way you would like to see it, and measure the total volume of the ice cream in your fully stuffed cone.

G.4)  Skins

G.4.a)

Here's the skin of a mutant solid:

\(Clear[x, xx, y, yy, y, zz, r, radial, s, t]; 
    
{xx[r_, s_, t_], yy[r_, s_, t_], zz[r_, s_, t_]} = {r\ Sin[s]\ Cos[t], 
        r\ Sin[s]\ Sin[t], r\ Cos[s]}; 

    \(radial[s_] = 1.5\ \((1 - Sin[2\ s])\); \)\){x[r_, s_, t_], y[r_, s_, t_], z[r_, s_, t_]} = {
        xx[r radial[s], s, t], yy[r radial[s], s, t], 
        zz[r radial[s], s, t]}; mutant = 
      ParametricPlot3D[{x[1, s, t], y[1, s, t], z[1, s, t]}, {s, 0, 
          (π/2)}, {t, 0, 2 π}, Axes -> Automatic, 
        ViewPoint -> CMView, PlotRange -> All];

Measure the volume of the whole mutant solid.
Then measure the volume of the base and the centerpiece, and check your first measurement by adding the second and third measurements.

G.4.b)

Here is the skin of the shell of a young snail:

\(Clear[x, y, z, radial, s, t]; 
x[r_, s_, t_] = r\ Sin[s]\ Cos[t]; 

    \(y[r_, s_, t_] = r\ Sin[s]\ Sin[t]; \)\)z[r_, s_, t_] = r Cos[s]; radial[t_] = 1.5 (1 - Cos[(t/4)]); ParametricPlot3D[{x[radial[t], s, t], y[radial[t], s, t], 
        z[radial[t], s, t]}, {s, 0, (π/2)}, {t, 0, 2 π}, 
      AxesLabel -> {"x", "y", "z"}, 
      ViewPoint -> CMView, PlotRange -> All];

Measure the volume under this shell and over the xy-floor.

G.4.c)

Here's the skin of another snail shell:

\(Clear[x, y, z, r, s, t]; 
x[r_, s_, t_] = r\ Sin[s]\ Cos[t]; 

    \(y[r_, s_, t_] = r\ Sin[s]\ Sin[t]; \)\)z[r_, s_, t_] = r Cos[s]; r[t_] = 1.5 (1 - Cos[(t/8)]); ParametricPlot3D[{x[r[t], s, t], y[r[t], s, t], z[r[t], s, t]}, {s, 
        0, (π/2)}, {t, 0, 4 π}, 
      AxesLabel -> {"x", "y", "z"}, 
      ViewPoint -> CMView, PlotRange -> All];

Measure the volume under this shell and over the xy-floor.

Watch out, because as t runs from 0 to 4  π, this shell wraps around twice.
If you integrate with respect to t from t = 0 to t = 4  π, your answer will be off.

G.5)  Floaters

G.5.a)

All measurements here are in centimeters.
A solid floater of radius r is to be made in the shape of the sphere 
       (x^2) + (y^2) + (z^2) = (r^2).  
The density[x, y, z] of the floater is to be proportional to the distance of the point {x, y, z} from {0, 0, 0}; this means 
       density[x, y, z] = k (Sqrt[ (x^2) +  (y^2) +  (z^2)])
Give a formula for the function k[r] such that this beast of radius r will float in water if 0 < k < k[r] and will sink if k > k[r].
Plot k[r] as a function of r. 
Does k[r] have a limiting value (Underscript[(lim ), r  ->  ∞]) k[r]?

G.5.b)

A cubic centimeter of platinum weighs 21.4  grams.  A cubic centimeter of ethyl alcohol weighs 0.81  grams.
Your job is to build a hollow platinum spherical shell 100 centimeters in diameter with the outer wall h centimeters thick so that the hollow spherical shell will float in the ethyl alcohol.  How small does h have to be to pull this off?

This problem is a ringer, once you remeber that the volume of a sphere of radius r is ((4 π (r^3))/3) and that the floating spherical shell will displace the volume of water that weighs as much as the hollow sphere.
Neglect the weight of the air inside the spherical shell.

G.6)  Earth and moon

G.6.a.i)

The radius of the earth is approximately 6400 km.
The radius of the moon is approximately 1750 km.
The moon rotates about the earth in an approximately circular orbit, and the distance from the center of the earth to the center of the moon is approximately 384, 000 km.
Make a true scale plot showing the earth and moon in position as appropriately sized spheres.

If you put the center of the earth at {0, 0, 0}, then you can take any unit vector, like
       U = {-1, 1, 1}/(Sqrt[3]), 
 and put the center of the moon at 384, 000 U.
You are not obligated to use this choice of unit vector, put the moon where you think it looks best, but keep it in true scale.

G.6.a.ii)

Some scientists believe that the moon formed as a result of a huge collision between the earth and a large interplanetary body.

Many of these same scientists believe that at some time long, long ago, the moon was in circular orbit about the earth, but the distance between the center of the earth and the center of the moon was only about 70, 000 km.
Make a true scale plot showing the earth and moon in this position as appropriately sized spheres.

G.7)  Star Wars

Here's a curve and an ellipsoid:

\(Clear[h, P]; 
P[h_] = {h - 12, 2\ h, 0.1\ h\ \((h - 10)\) + h\/2}; 

    \({hlow, hhigh} = {1, 15}; \)\)\(curveplot = 
      ParametricPlot3D[P[h], {h, hlow, hhigh}, 
        DisplayFunction -> Identity]; 

Clear[x, y, z, r, s, t]; 
    
{x[r_, s_, t_], y[r_, s_, t_], z[r_, s_, t_]} = {r\ Sin[s]\ Cos[t], 
        r\ Sin[s]\ Sin[t], 2\ r\ Cos[s]}; 
    
{{slow, shigh}, {tlow, thigh}} = {{0, π}, {0, 2\ π}}; 


    Clear[plotter]; 

    \(plotter[s_, 
        t_] = {\(-9\), 5, 3} + {x[1, s, t], y[1, s, t], z[1, s, t]}; \)\)\(ellipseplot = 
      ParametricPlot3D[
        Evaluate[plotter[s, t]], {s, slow, shigh}, {t, tlow, thigh}, 
        DisplayFunction -> Identity]; 


    Show[ellipseplot, curveplot, BoxRatios -> Automatic, 
      ViewPoint -> CMView, PlotRange -> All, 
      AxesLabel -> {"x", "y", "z"}, 
      DisplayFunction -> $DisplayFunction]; \)

Here's how you can pick up the ellipsoid and move it so that the center of the ellipsoid is at P[h] on the curve, and aligned so that the long axis of the ellipsoid shares ink with the unit tangent vector to the curve at the point P[h].
Here's a plot in the case h = 8:

Clear[unittan, mainnormal, mainunitnormal, binormal, secondunitnormal]
        ;
unittan[h_]=((P'[h])/(Sqrt[Expand[P'[h].P'[h]]]));
mainnormal[h_] = Together[D[unittan[h], h]];
mainunitnormal[h_] = 
        Simplify[mainnormal[h]/(Sqrt[mainnormal[h] . mainnormal[h]])];
binormal[h_] = 
        Chop[Expand[Cross[unittan[h], mainunitnormal[h]]]];

Clear[egg];
egg[h_, r_, t_] = 
        P[h] + N[
            x[1, s, t] mainunitnormal[h] + y[1, s, t] binormal[h] + 
              z[1, s, t] unittan[h]];
eggplot = 
        ParametricPlot3D[
          Evaluate[egg[8, r, t]], {s, slow, shigh}, {t, tlow, thigh}, 
          ViewPoint -> CMView, DisplayFunction -> Identity];

Show[eggplot, curveplot, BoxRatios -> Automatic, 
        ViewPoint -> CMView, PlotRange -> All, 
        AxesLabel -> {"x", "y", "z"}, 
        PlotLabel -> "Center at P[8]", 
        DisplayFunction -> $DisplayFunction];

h = 12:

eggplot = 
      ParametricPlot3D[
        Evaluate[egg[12, r, t]], {s, slow, shigh}, {t, tlow, thigh}, 
        ViewPoint -> CMView, DisplayFunction -> Identity]; Show[eggplot, curveplot, BoxRatios -> Automatic, 
      ViewPoint -> CMView, PlotRange -> All, 
      AxesLabel -> {"x", "y", "z"}, PlotLabel -> "Center at P[12]", 
      DisplayFunction -> $DisplayFunction];

Play with other values of h.
Now stay with the same curve, but look at this cone:

\(Clear[x, y, z, r, s, t]; 
    
{x[r_, s_, t_], y[r_, s_, t_], z[r_, s_, t_]} = {r\ Sin[s]\ Cos[t], 
        r\ Sin[s]\ Sin[t], r\ Cos[s]}; 

    \({{rlow, rhigh}, {tlow, thigh}} = {{0, 5}, {0, 2\ π}}; \)\)Clear[plotter]; \(plotter[s_, 
        t_] = {\(-9\), 5, 3} + {x[r, π\/8, t], y[r, π\/8, t], 
          z[r, π\/8, t]}; 
    coneplot = 
      ParametricPlot3D[
        Evaluate[plotter[s, t]], {r, rlow, rhigh}, {t, tlow, thigh}, 
        PlotPoints -> {2, Automatic}, DisplayFunction -> Identity]; 
    

Show[coneplot, curveplot, BoxRatios -> Automatic, 
      ViewPoint -> CMView, PlotRange -> All, 
      AxesLabel -> {"x", "y", "z"}, 
      DisplayFunction -> $DisplayFunction]; \)

At the tip of this cone is a phaser (zapper). The cone itself represents the range of the phaser in the sense that any object that finds itself in the cone will be immediately disintegrated by the phaser. 
Any object outside the cone is immune to attack by the phaser.

G.7.a.i)

Your mission is to take the tip of the cone, and move it to a point P[h] on the curve so that the central axis of the cone is aligned with the unit tangent to the curve at P[h], and directed so that the open end points in the direction of the parameterization of the curve.
Plot in the cases h = 4, 9, and 15.

G.7.a.ii)

Stay with the same curve as in part i) above.
A hostile space station is anchored at the point {-3.2, 17.6, 3.5}.
If you move your phaser as above along the given curve, will your phaser be able to zap this space station?
Back up your answer with a decisive plot showing the cone eating the point or showing that the cone cannot eat the point.

G.7.a.iii)

Stay with the same curve as in parts i) and ii) above. When you think about it, you see that there are two ways for an object to become vulnerable to the phaser. The most obvious way is for the object to find itself at a point sitting in the opening at the wide end of the cone.
Give a plot of the skin of the solid consisting of all points that are vulnerable this way.

G.7.a.iv)

For some curves, there is another way for an object to become vulnerable to the phaser.  Say what this way is and discuss the problems you might encounter in plotting these additional vulnerable points.

G.8)  Planes between spheres

Here are two spheres:

center1 = {2, -1, 0}; \(Clear[x, y, z, r, s, t]; 
    
{x[r_, s_, t_], y[r_, s_, t_], z[r_, s_, t_]} = 
      center1 + {r\ Sin[s]\ Cos[t], r\ Sin[s]\ Sin[t], r\ Cos[s]}; 

    \(r1 = 1; \)\){{slow, shigh}, {tlow, thigh}} = {{0, π}, {0, 2 π}}; Clear[sphere1plotter]; sphere1plotter[s_, t_] = {x[r1, s, t], y[r1, s, t], z[r1, s, t]}; 
    sphere1plot = 
      ParametricPlot3D[
        Evaluate[sphere1plotter[s, t]], {s, slow, shigh}, {t, tlow, thigh}, 
        DisplayFunction -> Identity]; center2 = {1, 0, 1}; \(Clear[x, y, z, r, s, t]; 
    
{x[r_, s_, t_], y[r_, s_, t_], z[r_, s_, t_]} = 
      center2 + {r\ Sin[s]\ Cos[t], r\ Sin[s]\ Sin[t], r\ Cos[s]}; 

    \(r2 = 0.6; \)\){{slow, shigh}, {tlow, thigh}} = {{0, π}, {0, 2 π}}; Clear[sphere2plotter]; sphere2plotter[s_, t_] = {x[r2, s, t], y[r2, s, t], z[r2, s, t]}; 
    \(sphere2plot = 
      ParametricPlot3D[
        Evaluate[sphere2plotter[s, t]], {s, slow, shigh}, {t, tlow, thigh}, 
        DisplayFunction -> Identity]; 


    Show[sphere1plot, sphere2plot, Boxed -> False, 
      BoxRatios -> Automatic, ViewPoint -> CMView, 
      PlotRange -> All, AxesLabel -> {"x", "y", "z"}, 
      DisplayFunction -> $DisplayFunction]; \)

G.8.a)

As you can see, there is not a lot of room between these spheres, but there is room enough to insert a plane between them so that the two spheres are on different sides of the plane.
Insert such a plane into this plot.

Think about this vector:

center2 - center1

G.9)  Art

G.9.a)

Use spherical coordinates, tubes, and anything else you want to mix in to make a gallery of eye-catching surfaces of your own design.
Show off.

G.10) Four dimensions: Is it just science fiction?

G.10.a.i)

The equation
       (x^2)+(y^2)+(z^2)+ (t^2)=(3^2)
defines a (hyper)sphere of radius 3 in four dimensions.
If you set t = 2, you get a cross-section of the four dimensional sphere.  Identify this cross section and plot it.

Just the cross section of 3D spheres are circles, the cross sections of 4D spheres are 3D spheres.

G.10.a.ii)

The equation
       (x^2)+(y^2)+(z^2)+ (t^2)=(rad^2)
defines a (hyper)sphere of radius rad in four dimensions.
Use a system of double polar coordinates and the appropriate volume conversion factor to give a formula that measures the four dimensional volume of this (hyper)sphere of radius rad.

Agreeing that R stands for everything inside and on the four dimsional sphere of radius rad, you will also agree that its volume is
       \(∫\_\%\(∫\_\%\(∫\_\%\(∫\_\(\ R\)\%\ 
              dx dy dz 
                dt\)\)\)\).
Double polar coordinates mean:

\(Clear[x, y, z, t, r, s, u, v, rad]; 
x[r_, s_, u_, v_] = r\ Cos[s]; 

    \(y[r_, s_, u_, v_] = r\ Sin[s]; \)\)z[r_, s_, u_, v_] = u Cos[v]; t[r_, s_, u_, v_] = u Sin[v];

You let s and v run from 0 to 2  π, and to see what r and u do, substitute into      
       (x^2)+(y^2)+(z^2)+ (t^2)=(rad^2):

TrigExpand[
        x[r, s, u, v]^2 + y[r, s, u, v]^2 + z[r, s, u, v]^2 + 
          t[r, s, u, v]^2] == (rad^2)

This tells you to put  
       r[p, q] = p Cos[q], and 
       u[p, q] = p Sin[q], 
to let p run from 0 to rad, and to let q run from 0 to π/2.
Watch to be sure that your volume conversion factor stays positive.  This hypersphere does not have 4D volume 0.

G.10.b)

Conjure up the equation of a (hyper)sphere of radius r in five dimensions.
What is the five dimensional volume of this sphere?

Try using spherical coordinates on three dimensions and polar coordinates on the remaining two dimensions.

G.11) Eigenvalues and eigenvectors

One good way to extend your mathematical horizons is to look up some unfamiliar Mathematica instructions and try them out. This is what you will do here with a little coaching from your friends at Calculus&Mathematica.
A couple of lessons back, you might have looked at eigenvectors and eigenvalues in 2D.  Now is your chance to see them in 3D.
Take nine numbers 
       ax ,ay, az, bx, by, bz, cx, cy, and cz  
with bx = ay, cy = bz, and cx = az, and make a matrix:

\(Clear[ax, ay, az, bx, by, bz, cx, cy, cz]; 
bx = ay; cy = bz; cx = az; 
    
\(matrix = {{ax, ay, az}, {bx, by, bz}, {cx, cy, cz}}; \)\)MatrixForm[matrix]

Note the pattern of the entries not on the diagonal.
Now do the same thing with specific numbers:

{ax, ay, az, by, bz, cz} = {2.4, 0.6, 1.5, 1, 0, -1.9}; {{ax, ay, az}, {bx, by, bz}, {cx, cy, cz}} = {{ax, ay, az}, {ay, by, 
          bz}, {az, bz, cz}}; matrix = {{ax, ay, az}, {bx, by, bz}, {cx, cy, cz}}; MatrixForm[matrix]

Note the pattern.
Go from xyz-space to uvw-space with:

\(Clear[u, v, w, x, y, z]; 
    
{u[x_, y_, z_], v[x_, y_, z_], w[x_, y_, z_]} = {ax\ x + ay\ y + az\ z, 
        bx\ x + by\ y + bz\ z, cx\ x + cy\ y + cz\ z}\)

Here is how the xyz-paper sphere
       (x^2) +  (y^2) +  (z^2) = 1 
plots out in uvw-space in true scale:

\(Clear[r, s, t]; 
x[r_, s_, t_] = r\ Sin[s]\ Cos[t]; 

    \(y[r_, s_, t_] = r\ Sin[s]\ Sin[t]; \)\)z[r_, s_, t_] = r Cos[s]; r = 1; {{slow, shigh}, {tlow, thigh}} = {{0, π}, {0, 2 π}}; uvwplot = 
      ParametricPlot3D[
        Evaluate[{u[x[r, s, t], y[r, s, t], z[r, s, t]], 
            v[x[r, s, t], y[r, s, t], z[r, s, t]], 
            w[x[r, s, t], y[r, s, t], z[r, s, t]]}], {s, slow, shigh}, {t, 
          tlow, thigh}, BoxRatios -> Automatic, 
        ViewPoint -> CMView, 
        AxesLabel -> {"u", "v", "w"}];

You guessed right! 
This is a tilted ellipsoid centered at {0, 0, 0}.
Now look at:

eigens = Eigensystem[N[matrix]]

The eigenvalues of the matrix are:

{eigenvalue1, eigenvalue2, eigenvalue3} = 
      eigens[[1]]

The eigenvectors of the matrix are:

{eigenvector1, eigenvector2, eigenvector3} = 
      eigens[[2]]

The unit eigenvectors of the matrix are:

{uniteigen1, uniteigen2, uniteigen3} = {
        (eigenvector1/(Sqrt[eigenvector1 . eigenvector1])), 
        (eigenvector2/(Sqrt[eigenvector2 . eigenvector2])), 
        (eigenvector3/(Sqrt[eigenvector3 . eigenvector3]))}

Now put:

{amazing1, amazing2, amazing3} = {eigenvalue1 uniteigen1, 
        eigenvalue2 uniteigen2, eigenvalue3 uniteigen3}

And look at this plot:

\(\(eigenplot = 
      Show[Arrow[amazing1], 
		Arrow[amazing2], Arrow[amazing3], 
        Arrow[\(-amazing1\)], Arrow[\(-amazing2\)], Arrow[\(-amazing3\)], 
        BoxRatios -> Automatic, Axes -> True, 
        ViewPoint -> CMView, AxesLabel -> {"u", "v", "w"}]; \)\)

Show[GraphicsArray[{eigenplot, uvwplot}]];

Feast your eyes on the ellipsoid built from the amazing vectors shown beside the uvw-plot of the original xyz-sphere (x^2) +  (y^2) +  (z^2) = 1:

eigenellipsoid = 
      ParametricPlot3D[
        Evaluate[
          x[r, s, t] amazing1 + y[r, s, t] amazing2 + 
            z[r, s, t] amazing3], {s, slow, shigh}, {t, tlow, thigh}, 
        BoxRatios -> Automatic, ViewPoint -> CMView, 
        AxesLabel -> {"u", "v", "w"}, DisplayFunction -> Identity]; 
    Show[GraphicsArray[{eigenellipsoid, eigenplot, uvwplot}], 
      DisplayFunction -> $DisplayFunction];

Just for good measure, look at:

\(Clear[gradu, gradv, gradw, Vuvw]; 

    gradu[x_, y_, z_] = {D[u[x, y, z], x], D[u[x, y, z], y], 
        D[u[x, y, z], z]}; 

    gradv[x_, y_, z_] = {D[v[x, y, z], x], D[v[x, y, z], y], 
        D[v[x, y, z], z]}; 

    gradw[x_, y_, z_] = {D[w[x, y, z], x], D[w[x, y, z], y], 
        D[w[x, y, z], z]}; 

    Vuvw[x_, y_, z_] = Det[{gradu[x, y, z], gradv[x, y, z], gradw[x, y, z]}]; 
    

{eigenvalue1\ eigenvalue2\ eigenvalue3, Vuvw[x, y, z]}\)

Zingo.
The xyz-to-uvw volume conversion factor is the same as the product of the three eigenvalues.

G.11.a)

Remembering that the ellipoid above is the uvw-space plot of the xyz-space sphere circle (x^2) +  (y^2) +  (z^2) = 1, write down the uvw-space measurement of the volume enclosed by the ellipsoid plotted above.

The volume inside the xyz-space sphere 
       (x^2) +  (y^2) +  (z^2) = 1
measures out to ((4 π)/3) cubic units.

G.11.b)

Take nine new numbers 
       ax, ay, az, bx, by, bz, cx, cy, and cz,  
with bx = ay, cy = bz, and cx = az, and try it again:

{ax, ay, az, by, bz, cz} = {2.1, 1.0, 1.0, -4.2, 3.1, 1.2}; 
    {{ax, ay, az}, {bx, by, bz}, {cx, cy, cz}} = {{ax, ay, az}, {ay, by, 
          bz}, {az, bz, cz}}; matrix = {{ax, ay, az}, {bx, by, bz}, {cx, cy, cz}}; MatrixForm[matrix]

Go from xyz-space to uvw-space with:

\(Clear[u, v, w, x, y, z]; 
    
{u[x_, y_, z_], v[x_, y_, z_], w[x_, y_, z_]} = {ax\ x + ay\ y + az\ z, 
        bx\ x + by\ y + bz\ z, cx\ x + cy\ y + cz\ z}\)

Here is how the xyz-paper sphere
       (x^2) +  (y^2) +  (z^2) = 1
plots out in uvw-space in true scale:

\(Clear[r, s, t]; 
x[r_, s_, t_] = r\ Sin[s]\ Cos[t]; 

    \(y[r_, s_, t_] = r\ Sin[s]\ Sin[t]; \)\)z[r_, s_, t_] = r Cos[s]; r = 1; {{slow, shigh}, {tlow, thigh}} = {{0, π}, {0, 2 π}}; uvwplot = 
      ParametricPlot3D[
        Evaluate[{u[x[r, s, t], y[r, s, t], z[r, s, t]], 
            v[x[r, s, t], y[r, s, t], z[r, s, t]], 
            w[x[r, s, t], y[r, s, t], z[r, s, t]]}], {s, slow, shigh}, {t, 
          tlow, thigh}, BoxRatios -> Automatic, 
        ViewPoint -> CMView, 
        AxesLabel -> {"u", "v", "w"}];

You guessed right again! 
Another tilted ellipsoid centered at {0, 0, 0}.
Now look at:

eigens = Eigensystem[N[matrix]]; {eigenvalue1, eigenvalue2, eigenvalue3} = 
      eigens[[1]]; {eigenvector1, eigenvector2, eigenvector3} = 
      eigens[[2]]; {uniteigen1, uniteigen2, uniteigen3} = {
        (eigenvector1/(Sqrt[eigenvector1 . eigenvector1])), 
        (eigenvector2/(Sqrt[eigenvector2 . eigenvector2])), 
        (eigenvector3/(Sqrt[eigenvector3 . eigenvector3]))}; {amazing1, amazing2, amazing3} = {eigenvalue1 uniteigen1, 
        eigenvalue2 uniteigen2, eigenvalue3 uniteigen3}; \(eigenplot = 
      Show[Arrow[amazing1], Arrow[amazing2], Arrow[amazing3], 
        Arrow[\(-amazing1\)], Arrow[\(-amazing2\)], Arrow[\(-amazing3\)], 
        BoxRatios -> Automatic, Axes -> True, 
        ViewPoint -> CMView, AxesLabel -> {"u", "v", "w"}, 
        DisplayFunction -> Identity]; 


    Show[GraphicsArray[{eigenplot, uvwplot}], 
      DisplayFunction -> $DisplayFunction]; \)

Feast your eyes on the ellipsoid built from the amazing vectors shown beside the uvw-plot of the original xyz-sphere 
       (x^2) +  (y^2) +  (z^2) = 1:

eigenellipsoid = 
      ParametricPlot3D[
        Evaluate[
          x[r, s, t] amazing1 + y[r, s, t] amazing2 + 
            z[r, s, t] amazing3], {s, slow, shigh}, {t, tlow, thigh}, 
        BoxRatios -> Automatic, ViewPoint -> CMView, 
        AxesLabel -> {"u", "v", "w"}, DisplayFunction -> Identity]; 
    Show[GraphicsArray[{eigenellipsoid, eigenplot, uvwplot}], 
      DisplayFunction -> $DisplayFunction];

Radical.
Again, just for good measure, look at:

\(Clear[gradu, gradv, gradw, Vuvw]; 

    gradu[x_, y_, z_] = {D[u[x, y, z], x], D[u[x, y, z], y], 
        D[u[x, y, z], z]}; 

    gradv[x_, y_, z_] = {D[v[x, y, z], x], D[v[x, y, z], y], 
        D[v[x, y, z], z]}; 

    gradw[x_, y_, z_] = {D[w[x, y, z], x], D[w[x, y, z], y], 
        D[w[x, y, z], z]}; 

    Vuvw[x_, y_, z_] = Det[{gradu[x, y, z], gradv[x, y, z], gradw[x, y, z]}]; 
    
{eigenvalue1\ eigenvalue2\ eigenvalue3, Vuvw[x, y, z]}\)

Double zingo.
Play with some more choices of nine new numbers 
       ax, ay, az, bx, by, bz, cx, cy, and cz,  
with bx = ay, cy = bz, and cx = az, and try it again until you get enough experience to form your own opinions about the anwers to the questions:
-> What do you think unit eigenvectors are?
-> What do you think eigenvalues are?
-> Why are lots of folks delighted with eigenvectors and eigenvalues?

Don't look up the answer in a linear algebra book, because most linear algebra books don't look at eigenvector and eigenvalues from this visual geometric perspective.  Instead, they make eigenvectors and eigenvalues the final products of some dreary algebra.
Sadly decadent.

G.11.b)

What do you think happens to the ellipsoid when one of the eigenvalues is 0?
What do you think happens to the ellipsoid when two of the eigenvalues are 0?

G.11.c)

If what you've seen so far hasn't blown your mind, look at these:

{ax, ay, az, by, bz, cz} = {4.6, 2.1, -1.0, 5.8, 1.7, 3.9}; 
    {{ax, ay, az}, {bx, by, bz}, {cx, cy, cz}} = {{ax, ay, az}, {ay, by, 
          bz}, {az, bz, cz}}; matrix = {{ax, ay, az}, {bx, by, bz}, {cx, cy, cz}}; MatrixForm[matrix]

Go from xyz-space to uvw-space with:

\(Clear[u, v, w, x, y, z]; 
    
{u[x_, y_, z_], v[x_, y_, z_], w[x_, y_, z_]} = {ax\ x + ay\ y + az\ z, 
        bx\ x + by\ y + bz\ z, cx\ x + cy\ y + cz\ z}\)

Check this out:

eigens = Eigensystem[N[matrix]]; {eigenvalue1, eigenvalue2, eigenvalue3} = 
      eigens[[1]]; {eigenvector1, eigenvector2, eigenvector3} = 
      eigens[[2]]; {uniteigen1, uniteigen2, uniteigen3} = {
        (eigenvector1/(Sqrt[eigenvector1 . eigenvector1])), 
        (eigenvector2/(Sqrt[eigenvector2 . eigenvector2])), 
        (eigenvector3/(Sqrt[eigenvector3 . eigenvector3]))}; {amazing1, amazing2, amazing3} = {eigenvalue1 uniteigen1, 
        eigenvalue2 uniteigen2, eigenvalue3 uniteigen3}

{u[x, y, z], v[x, y, z], w[x, y, z]} == 
      ExpandAll[
        Together[{x, y, z} . uniteigen1 amazing1 + {x, y, z} . uniteigen2 
              amazing2 + {x, y, z} . uniteigen3 amazing3]]

It works for any  ax, ay, az, bx, by, bz, cx, cy, and cz you feed in as long as you go with bx = ay, cy = bz, and cx = az.

{ax, ay, az, by, bz, cz} = {Random[Real, {-10, 10}], 
        Random[Real, {-10, 10}], Random[Real, {-10, 10}], 
        Random[Real, {-10, 10}], Random[Real, {-10, 10}], 
        Random[Real, {-10, 10}]}; {{ax, ay, az}, {bx, by, bz}, {cx, cy, cz}} = {{ax, ay, az}, {ay, by, 
          bz}, {az, bz, cz}}matrix = {{ax, ay, az}, {bx, by, bz}, {cx, cy, cz}}; MatrixForm[matrix]

Go from xyz-space to uvw-space with:

\(Clear[u, v, w, x, y, z]; 
    
{u[x_, y_, z_], v[x_, y_, z_], w[x_, y_, z_]} = {ax\ x + ay\ y + az\ z, 
        bx\ x + by\ y + bz\ z, cx\ x + cy\ y + cz\ z}\)

eigens = Eigensystem[N[matrix]]; {eigenvalue1, eigenvalue2, eigenvalue3} = 
      eigens[[1]]; {eigenvector1, eigenvector2, eigenvector3} = 
      eigens[[2]]; {uniteigen1, uniteigen2, uniteigen3} = {
        (eigenvector1/(Sqrt[eigenvector1 . eigenvector1])), 
        (eigenvector2/(Sqrt[eigenvector2 . eigenvector2])), 
        (eigenvector3/(Sqrt[eigenvector3 . eigenvector3]))}; {amazing1, amazing2, amazing3} = {eigenvalue1 uniteigen1, 
        eigenvalue2 uniteigen2, eigenvalue3 uniteigen3}; {u[x, y, z], v[x, y, z], w[x, y, z]} == 
      ExpandAll[
        Together[{x, y, z} . uniteigen1 amazing1 + {x, y, z} . uniteigen2 
              amazing2 + {x, y, z} . uniteigen3 amazing3]]

In other words when you go with any numbers  
       ax, ay, az, bx, by, bz, cx, cy, and cz,  
with 
     bx = ay, cy = bz, and cx = az,
and you put 
       u[x, y, z] = ax x +  ay y +  az z,
       v[x, y, z] = bx x +  by y +  bz z,  and 
       w[x, y, z] = cx x +  cy y +  cz z, 
then you can count on having
       {u[x, y, z], v[x, y, z], w[x, y, z]}
         = ({x, y, z} . uniteigen1) amazing1  
             +({x, y, z} . uniteigen2) amazing2
             +({x, y, z} . uniteigen3) amazing3
This resolves {u[x, y, z], v[x, y, z], w[x, y, z]} into three perpendicular components in the directions of the three unit eigenvectors because
       amazing1 = eigenvalue1 uniteigen1,
       amazing2 = eigenvalue2 uniteigen2, and
       amazing3 = eigenvalue3 uniteigen3.    
Fancy folks call this the "spectral theorem" and make this the centerpiece of a good linear algebra course.  Some interesting thoughts about stretching, shrinking, and flipping may come to you mind.  If so, write them down. 
On the other hand, if you don't want to say anything, then don't.  It's your choice and you won't be graded down for copping out.