VC.02 Perpendicularity
GIVE IT A TRY!

\(Off[General::spell]; 
\(Off[General::spell1]; \)\)Off[ParametricPlot3D::ppcom]; Off[ParametricPlot::ppcom]; \(Off[Plot::plnr]; 
Off[$MaxExtraPrecision::meprec]; 

    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];

G.1)  Plane fundamentals*

G.1.a)

Here are a point and a vector with the tail of the vector stuck at the given point:

point = {0, -2, 1}; vector = {2, 3, 4}; \(threedims = Axes3D[2, 0.2]; 

    \(pointandvector = 
      Show[Arrow[vector, Tail -> point, VectorColor -> Red], 
        threedims, Graphics3D[{PointSize[0.04], Point[point]}], 
        ViewPoint -> CMView, Axes -> Automatic, 
        AxesLabel -> {"x", "y", "z"}, PlotRange -> All]; \)\)

Throw a plot of a plane perpendicular to the given vector and passing through the given point into the plot above. Write down the xyz-equations for this plane.

G.1.b.i)

Here are three points:

point1 = {-2, 1, 4}; point2 = {3, 1, 8}; point3 = {-9, -5, 0}; \(threedims = Axes3D[3, 0.2]; 

    \(pointandvector = 
      Show[Graphics3D[{Red, PointSize[0.04], Point[point1]}], 
        Graphics3D[{Red, PointSize[0.04], Point[point2]}], 
        Graphics3D[{Red, PointSize[0.04], Point[point3]}], threedims, 
        Axes -> Automatic, PlotRange -> All, 
        ViewPoint -> CMView, AxesLabel -> {"x", "y", "z"}]; \)\)

Pick one of the points and add the two vectors running from this point to each of the other two points.
Use what you see to plot the plane on which all three points reside.
Confirm your work by showing the three points on the plane plot.

Tip:

You can use the three points to write down two direction vectors.
Once you do this, your thinking is done.

G.1.b.ii)

Here are two lines in 3D:

\(Clear[line1, line2, s, t]; 

    line1[t_] = {1, 2, 1} + t\ {\(-1\), \(-1\), 1}; 

    \(line2[s_] = {\(-1\), 0, 1} + s\ {1, 1, 0}; \)\)line1plot = 
      ParametricPlot3D[line1[t], {t, -3, 3}, PlotPoints -> 2, 
        DisplayFunction -> Identity]; \(line2plot = 
      ParametricPlot3D[line2[s], {s, \(-4\), 5}, PlotPoints -> 2, 
        DisplayFunction -> Identity]; 


    Show[line1plot, line2plot, AxesLabel -> {"x", "y", "z"}, 
      ViewPoint -> CMView, Axes -> Automatic, 
      PlotRange -> All, DisplayFunction -> $DisplayFunction]; \)

At what point do these lines intersect?
Plot the plane on which both of these lines reside.
Confirm your work by showing the lines and the plane in the same plot.

G.1.c.i)

What do you get when you intersect the planes with xyz-equations
       x +  y -  z = 1
and
     -x +  2 y +  3 z = 6?
Give a parametric formula that describes the points on this intersection and confirm your work with a plot.

If you add the two equations
         x +  y -  z = 1, and
       -x +  2  y +  3  z = 6 
and get
       3  y +  2  z = 7,
you aren't done, because 3  y +  2  z = 7 is the xyz-equation of a plane passing through {1, 0, (7/2)} with normal vector {0, 3, 2}.

G.1.c.ii)

How can you tell without plotting that the planes
       x +  y -  z = 1
and
       x +  4  y +  5  z = 6
cut each other at right angles?

Tip:

Are their normal vectors perpendicular?

G.1.d)

When you take the aggregate (collection, set) of all lines through the point 
       {3, -4, 7}
that are also perpendicular to a given vector 
       {a, b, c}, 
what do you get?
Give an equation that describes the points {x, y, z} on this aggregate of lines.

G.2)  Plotting on planes*

G.2.a)

Look at:

\(Clear[a, b, t, radius, vector1, vector2, curve, vectors, point]; 
    
{a, b} = {1, 3}; 
\(t = π\/3; \)\)radius = 2; vector1 = {Cos[t], Sin[t]}; vector2 = {Cos[t + (π/2)], Sin[t + (π/2)]}; \(Clear[s]; 

    curve = ParametricPlot[{a, b} + 
          radius\ \((Cos[s]\ vector1 + Sin[s]\ vector2)\), {s, 0, 2\ π}, 
        PlotStyle -> {{Blue, Thickness[0.01]}}, 
        DisplayFunction -> Identity]; 

    vectors = {
        Arrow[vector1, Tail -> {a, b}, VectorColor -> Red, 
          ScaleFactor -> radius], 
        Arrow[vector2, Tail -> {a, b}, VectorColor -> Red, 
          ScaleFactor -> radius]}; 

    point = Graphics[{PointSize[0.04], Point[{a, b}]}]; 


    Show[curve, vectors, point, AspectRatio -> Automatic, 
      DisplayFunction -> $DisplayFunction]; \)

Looks like a circle.
How does the following information tell you for sure that this is a circle and not just some other ellipse?

{vector1 . vector1 == vector2 . vector2, vector1 . vector2 == 0}

What do you get when you change t?

G.2.b)

Look at:

{a, b, c} = {2, -2, 3}; Clear[s, t]; vector1 = 2 {1, -1, 2}; vector2 = 
      2 {-2, (1/5) (-2 + 2 (Sqrt[6])), (1/5) (4 + (Sqrt[6]))}; curve = 
      ParametricPlot3D[{a, b, c} + Cos[s] vector1 + Sin[s] vector2, {s, 0, 
          2 π}, DisplayFunction -> Identity]; \(vectors = {
        Arrow[vector1, Tail -> {a, b, c}, VectorColor -> Red], 
        Arrow[vector2, Tail -> {a, b, c}, VectorColor -> Red]}; 

    point = Graphics3D[{Red, PointSize[0.03], Point[{a, b, c}]}]; 

    \(Show[point, vectors, curve, ViewPoint -> CMView, 
      Axes -> True, AxesLabel -> {"x", "y", "z"}, 
      PlotRange -> All, BoxRatios -> Automatic, 
      DisplayFunction -> $DisplayFunction]; \)\)

Looks like a circle.
How does the following information tell you for sure that this is a circle and not just some other ellipse?

Simplify[{vector1 . vector1 == vector2 . vector2, 
        vector1 . vector2 == 0}]

Come up with an xyz-equation of the plane in which this circle resides.

G.2.c.i)

Even though a plane starts out with two direction vectors, any given plane has infinitely many direction vectors. 
Here is a true scale piece of the plane determined by the following point and two direction vectors:

point = {0.5, 0, 1}; vector1 = {-2, 1, 0}; vector2 = {-0.2, 1, -1}; \(Clear[planeplotter, u, v]; 

    planeplotter[u_, v_] = point + u\ vector1 + v\ vector2; 

    \({ulow, uhigh} = {\(-2\), 2}; \)\){vlow, vhigh} = {-3, 3}; plane = 
      ParametricPlot3D[
        Evaluate[planeplotter[u, v]], {u, ulow, uhigh}, {v, vlow, vhigh}, 
        PlotPoints -> {2, 2}, DisplayFunction -> Identity]; \(threedims = Axes3D[3.5, 0.4]; 

    \(planeplot = 
      Show[threedims, plane, PlotRange -> All, Axes -> Automatic, 
        AxesLabel -> {"x", "y", "z"}, PlotRange -> All, 
        ViewPoint -> CMView, BoxRatios -> Automatic, 
        DisplayFunction -> $DisplayFunction]; \)\)

You get the same plane by using new direction vectors
       newvector1 = 0.4  vector1 +  0.7  vector2
and
       newvector2 = 2  vector1 -  1.5  vector2:

\(newvector1 = 0.4\ vector1 + 0.7\ vector2; 

    \(newvector2 = 2\ vector1 - 1.5\ vector2; \)\)\(Clear[newplaneplotter, u, v]; 

    newplaneplotter[u_, v_] = point + u\ newvector1 + v\ newvector2; 

    \({ulow, uhigh} = {\(-5\), 5}; \)\){vlow, vhigh} = {-1, 1}; newplane = 
      ParametricPlot3D[
        Evaluate[newplaneplotter[u, v]], {u, ulow, uhigh}, {v, vlow, vhigh}, 
        PlotPoints -> {2, 2}, DisplayFunction -> Identity]; newplaneplot = 
      Show[threedims, newplane, Axes -> Automatic, 
        PlotRange -> All, ViewPoint -> CMView, 
        BoxRatios -> Automatic, 
        DisplayFunction -> $DisplayFunction];

But when you plot the plane using the new direction vectors, as above, you plot a different piece of the plane than you plotted with the original direction vectors:

Show[planeplot, newplaneplot];

Show[planeplot, newplaneplot, ViewPoint -> vector1];

Go with the plane whose xyz-equation is 
       2 (x +  1) +  3 (y -  1) +  (z -  1) = 0,
and come up with a point on this plane, and two perpendicular unit vectors that serve as direction vectors for this plane.

The point of the lead-in to this question is to stress that there is no single correct answer to this problem.  In fact, there are infinitely many correct answers to this problem.

G.2.c.ii)

Plot the circle of radius 3 centered at the point {-1, 1, 1} in the plane whose xyz-equation is
       2 (x +  1) +  3 (y -  1) +  (z -  1) = 0.
Include in your plot a big enough piece of the plane to accommodate the circle.

G.2.c.iii)

Here's a plot of a spiral in the xy-plane:

\(Clear[spiral, t]; 
spiral[t_] = {t\ Cos[2\ t], t\ Sin[2\ t]}; 

    \(ParametricPlot[spiral[t], {t, 0, 3\ π}, 
      AxesLabel -> {"x", "y"}]; \)\)

Use your answer to part i) above to help plot a true scale duplicate copy of this spiral on the plane with xyz-equation         
       2 (x +  1) +  3 (y -  1) +  (z -  1) = 0.
Center your spiral at {-1, 1, 1} and include in your plot a big enough hunk of the plane to accomodate the spiral.

G.3)  Serious 3D plots: Tubes and ribbons*

G.3.a)

Here's a 3D curve:

\(Clear[P, t]; 
P[t_] = {\(-t\), t, 1\/2\ t\ \((8 - t)\)}; 

    \(arch = ParametricPlot3D[P[t], {t, 0, 8}, Axes -> Automatic, 
        AxesLabel -> {"x", "y", "z"}, PlotRange -> All, 
        Boxed -> False, ViewPoint -> CMView, 
        BoxRatios -> Automatic]; \)\)

You are asked to plot the tube whose skin consists of all circles of radius 0.5 that
-> are centered on this curve, and
-> lie in planes that cut this curve perpendicularly.

G.3.b)

Here's the same 3D curve:

\(Clear[P, t]; 
P[t_] = {\(-t\), t, 1\/2\ t\ \((8 - t)\)}; 

    \(arch = ParametricPlot3D[P[t], {t, 0, 8}, Axes -> Automatic, 
        AxesLabel -> {"x", "y", "z"}, PlotRange -> All, 
        Boxed -> False, ViewPoint -> CMView, 
        BoxRatios -> Automatic]; \)\)

You are asked to plot a ribbon two units wide whose center curve coincides with the curve plotted above. Corrugate the ribbon if you like.

As you may have noted, there are many such ribbons; you are asked to plot just one.
You'll probably want to use binormal[t].

G.3.c)

Here's a different 3D curve:

\(Clear[curveplotter, t]; 
curveplotter[t_] = {\(-t\), t, Sin[t]}; 

    \(snake = 
      ParametricPlot3D[curveplotter[t], {t, 0, 8}, Axes -> Automatic, 
        AxesLabel -> {"x", "y", "z"}, PlotRange -> All, 
        Boxed -> False, ViewPoint -> CMView, 
        BoxRatios -> Automatic]; \)\)

This time you're asked to add to this plot four additional curves with the property that if you slice the original curve by any plane perpendicular to the original curve, then:
-> The four additional curves will show up on this plane as dots at the corners of a square one unit on a side, and 
-> the original curve will show up as a dot in the center of the square.

As you may have noted, there are many such sets of four curves; you are asked to plot just one set.
You'll probably want to use mainunitnormal[t] and binormal[t].  Your plot may reveal an unexpected phenom.  If so, then try to explain why it happened.

G.3.d)

Now it's time to take the shackles off.  Turn yourself loose and do something artistic and creative with a curve of your choice.
Show off.

G.4)  Experiments with linearizations*

Linearization is a technique much favored by advanced scientists. You will run across linearizations throughout most of the lessons to follow, so you might as well get your feet wet here.

G.4.a) Linearizations of f[x]

Here is a simple curve in two dimensions:

\(Clear[f, x]; 
f[x_] = E\^\(-x\^2\); 

    \(fplot = 
      Plot[f[x], {x, \(-2\), 2}, AxesLabel -> {"x", "y"}, 
        PlotStyle -> {{Blue, Thickness[0.01]}}]; \)\)

Here's what a lot of folks call the linearization of f[x] at x = a:

Clear[linearf, a];
linearf[x_, a_]=f[a]+f'[a] (x - a)

And a plot in the case a = 0.5:

\(Clear[a, linplot, pointplot]; 

    linplot[a_] := 
      Plot[linearf[x, a], {x, a - 0.5, a + 0.5}, 
        PlotStyle -> {{Red, Thickness[0.01]}}, 
        PlotRange -> {0, 1.2}, Ticks -> {Automatic, None}, 
        DisplayFunction -> Identity]; 

    \(pointplot[a_] := Graphics[{PointSize[0.03], Point[{a, f[a]}]}]; \)\)Show[linplot[0.5], fplot, pointplot[0.5], 
      DisplayFunction -> $DisplayFunction];

A little movie:

Table[
      Show[linplot[a], fplot, pointplot[a], 
        DisplayFunction -> $DisplayFunction], {a, -1, 1, (2/4)}];

That's right;  linearf[x, a] is nothing but the tangential approximation line at x = a.
As you can see, it's a pretty darn good approximation of f[x] for x's near a. This is why the folks like linearizations–they approximate well and they are line functions so they are easy to work with.
Play, as above, with linearizations for functions f[x] (of one variable) of your own choice at points of your own choice. You may want to change the value of the PlotRange specification.

G.4.b.i)

With somewhat more work than needed for functions of one variable, you can linearize a function f[x, y] of two variables.
Here's the idea:
According to the work in B.3), you can calculate a normal to the surface z = f[x, y] at a point {a, b, f[a, b]} as follows:

\(Clear[x, y, f, a, b, surfacepoint]; 

    surfacepoint[x_, y_] = {x, y, f[x, y]}; 
Clear[xcurve, ycurve]; 

    xcurve[x_] = surfacepoint[x, b]; 
\(ycurve[y_] = surfacepoint[a, y]; 
    \)\)\(xtanvector = D[xcurve[x], \ x] /. x -> a; 

    ytanvector = D[ycurve[y], \ y] /. y -> b; 

    normal = Cross[xtanvector, ytanvector]\)

This tells you that the xyz-equation for a plane touching the surface z = f[x, y] at {a, b, f[a, b]} and sharing the same normal vector comes from:

normal . {x - a, y - b, z - f[a, b]} == 0

This gives you 
       z=f[a, b]+ ∂f[a, b]/∂x(x -  a) + ∂f[a, b]/∂y(y -  b).
The pros call this the linearization, 
       linearf[x, y], 
of f[x, y] at {a, b}.
Here's a plot of 
       z = f[x, y] = (x^2) +  (y^2) 
and its linearization at 
       {a, b} = {0.5, 0.8}:

\(Clear[f, linearf, x, y]; 
f[x_, y_] = x\^2 + y\^2; 

    \({a, b} = {0.5, 0.8}; \)\)\(A = D[f[x, y], \ x] /. {x -> a, y -> b}; 

    B = D[f[x, y], \ y] /. {x -> a, y -> b}; 

    \(linearf[x_, y_] = f[a, b] + A\ \((x - a)\) + B\ \((y - b)\); \)\)surface = 
      Plot3D[f[x, y], {x, -1.5, 1.5}, {y, -1.5, 1.5}, 
        PlotRange -> {0, 2}, ClipFill -> None, 
        DisplayFunction -> Identity]; linearized = 
      Plot3D[linearf[x, y], {x, a - 0.3, a + 0.3}, {y, b - 0.3, b + 0.3}, 
        PlotPoints -> {2, 2}, DisplayFunction -> Identity]; pointoflinearization = 
      Graphics3D[{PointSize[0.02], Point[{a, b, f[a, b]}]}]; Show[surface, linearized, pointoflinearization, 
      AxesLabel -> {"x", "y", "z"}, 
      BoxRatios -> Automatic, Boxed -> False, 
      ViewPoint -> CMView, DisplayFunction -> $DisplayFunction];

Here's what you get when you linearize the same function at 
       {a, b} = {0, 0}:

{a, b} = {0, 0}; \(Clear[linearf]; 
A = D[f[x, y], \ x] /. {x -> a, y -> b}; 

    B = D[f[x, y], \ y] /. {x -> a, y -> b}; 

    \(linearf[x_, y_] = f[a, b] + A\ \((x - a)\) + B\ \((y - b)\); \)\)linearized = 
      Plot3D[linearf[x, y], {x, a - 0.3, a + 0.3}, {y, b - 0.3, b + 0.3}, 
        PlotPoints -> {2, 2}, DisplayFunction -> Identity]; pointoflinearization = 
      Graphics3D[{PointSize[0.02], Point[{a, b, f[a, b]}]}]; Show[surface, linearized, pointoflinearization, 
      AxesLabel -> {"x", "y", "z"}, 
      BoxRatios -> Automatic, Boxed -> False, 
      ViewPoint -> CMView, DisplayFunction -> $DisplayFunction];

Plot the same function and its linearization at 
       {a, b} = {1, 0}.
Then plot the same function and its linearization at 
       {a, b} = {0.1, 0.5}.
Describe what you see and then say what relation the linearized surface has to the actual surface at the point of linearization.
How well do the linearized versions approximate the actual function at the points of linearization?

G.4.b.ii)

Stay with the same function as above and look at the surface and its linearization at
       {a, b} = {0.7, 0.4}:

{a, b} = {0.7, 0.4}; \(Clear[linearf]; 
A = D[f[x, y], \ x] /. {x -> a, y -> b}; 

    B = D[f[x, y], \ y] /. {x -> a, y -> b}; 

    \(linearf[x_, y_] = f[a, b] + A\ \((x - a)\) + B\ \((y - b)\); \)\)linearized = 
      Plot3D[linearf[x, y], {x, a - 0.3, a + 0.3}, {y, b - 0.3, b + 0.3}, 
        PlotPoints -> {2, 2}, DisplayFunction -> Identity]; pointoflinearization = 
      Graphics3D[{PointSize[0.02], Point[{a, b, f[a, b]}]}]; Show[surface, linearized, pointoflinearization, 
      AxesLabel -> {"x", "y", "z"}, 
      BoxRatios -> Automatic, Boxed -> False, 
      ViewPoint -> CMView, DisplayFunction -> $DisplayFunction];

What you see are plots of the function and its linearized version at the point of linearization at {0.7, 0.4}.
Put 
       {x[t], y[t]} = {0.7 - 4  Sin[t], 0.4  (e^t)} 
and note that this curve passes through the point of linearization, {0.7, 0.4}, when t = 0:

\(Clear[x, y, t]; 
{x[t_], y[t_]} = {0.7 + 4\ Sin[t], 0.4\ E\^t}; 
    
{x[t], y[t]} /. t -> 0\)

Now look at plots of the curves 
       f[x[t], y[t]] and linearf[x[t], y[t]] 
for  
       -0.1 ≤ t ≤ 0.1:

h = 0.1; \(\(Plot[{f[x[t], y[t]], linearf[x[t], y[t]]}, {t, 0 - h, 0 + h}, 
      PlotStyle -> Thickness[0.01], AspectRatio -> 1, 
      AxesLabel -> {"t", \*""""}, 
      Epilog -> {Red, PointSize[0.04], Point[{0, f[x[0], y[0]]}]}]; 
    \)\)

This time put
       {x[t], y[t]} = {0.7  Cos[3  t]], 0.4 - t} 
and note that this curve also passes through the point of linearization at {0.7, 0.4} when t = 0:

\(Clear[x, y, t]; 
{x[t_], y[t_]} = {0.7\ Cos[3\ t], 0.4 - t}; 
    
{x[t], y[t]} /. t -> 0\)

Now look at plots of the curves f[x[t], y[t]], and linearf[x[t], y[t]] for
       -0.1 ≤ t ≤ 0.1:

h = 0.1; \(\(Plot[{f[x[t], y[t]], linearf[x[t], y[t]]}, {t, 0 - h, 0 + h}, 
      PlotStyle -> Thickness[0.01], AspectRatio -> 1, 
      AxesLabel -> {"t", \*""""}, 
      Epilog -> {Red, PointSize[0.04], Point[{0, f[x[0], y[0]]}]}]; 
    \)\)

Describe what you see in the two plots above and try to account for why you see it.
Explain why you will see the same phenomenon no matter what
       {x[t], y[t]}  
you go with provided 
       {x[t], y[t]} = {0.7, 0.4} when t = 0.

G.5)  Badger borings

G.5.a.i)

You are the chief engineer at the Badger Steel Plate Company in Madison, Wisonsin.  In comes an order for 750 square steel plates, each measuring 12 inches wide and 12 inches long.
Go to the drawing board:

plate = 
      Graphics[{SteelBlue, Thickness[0.01], 
          Line[{{-6, -6}, {-6, 6}, {6, 6}, {6, -6}, {-6, 
                -6}}]}]; plateplot = 
      Show[plate, Axes -> True, AxesOrigin -> {0, 0}, 
        AspectRatio -> Automatic, AxesLabel -> {"x", "y"}];

But here's the kicker:
The plates are to have everything inside the ellipse
       ((((x/4)))^2) +  ((((y/2)))^2) = 1 
cut out.
Take a look:

\(Clear[x, y, t]; 
x[t_] = 4\ Cos[t]; 
\(y[t_] = 2\ Sin[t]; \)\)hole = 
      ParametricPlot[{x[t], y[t]}, {t, 0, 2 π}, 
        PlotStyle -> {{SteelBlue, Thickness[0.01]}}, 
        DisplayFunction -> Identity]; Show[plateplot, hole, DisplayFunction -> $DisplayFunction];

You have a new robotic router that takes instructions from Mathematica and whose cutting center can be programmed to follow any curve you tell it to follow.
If you are going to use a bit 1 inch in diameter, then what curve should you program in as the path of the center of the router to cut out the ellipse?
After you have found the correct curve, add its plot to the plot above.

If your curve is an ellipse, then you screwed up.
The normal vector D[unittan[t], t] could be very useful.

G.5.a.ii)

Actually, the bit size of 1 inch in diameter used above was arbitrarily chosen by reaching into the drawer and pulling out a bit.  You could always get by with a smaller bit. Why?
But you cannot use bits that are too large.  Why?
Try to estimate the diameter of the largest bit that you could use to do the job.

G.6)  Using the product rule to break acceleration vectors into normal and tangential components

G.6.a.i)

At time t, an object is given to be at a point 
       P[t] = {x[t], y[t]}.
Its velocity at time t is just
       velocity[t] = D[P[t], t].
The unit tangent vector at P[t] is
       unittan[t]=velocity[t]/(Sqrt[velocity[t] . velocity[t]]) .
Explain why 
       velocity[t] = speed[t] unittan[t] 
where 
       speed[t] = (Sqrt[velocity[t] . velocity[t]]) .

G.6.a.ii)

The acceleration vector at P[t] is given by
       accel[t] = D[velocity[t], t].
Use the fact that
       velocity[t] = speed[t] unittan[t], 
 and use the product rule for taking derivatives to say why 
       accel[t] = D[speed[t], t] unittan[t] +  speed[t] mainnormal[t].

G.6.a.iii)

When you write
       accel[t] = D[speed[t], t] unittan[t] +  speed[t] mainnormal[t], 
then why is it fairly transparent that
       D[speed[t], t] unittan[t]
is the tangential component of the acceleration and
       speed[t] mainnormal[t] 
is the normal component of the acceleration?

G.6.a.iv)

Explain why the following true scale plot came out the way it did and discuss the information the plot exhibits.

\(Clear[P, t, velocity, accel, speed, unittan, tanaccel]; 

    P[t_] = {8\ Cos[0.8\ t], 5\ Sin[0.8\ t]}; 

    \(path = ParametricPlot[P[t], {t, 0, 2\ π}, 
        PlotStyle -> {{Blue, Thickness[0.01]}}, 
        DisplayFunction -> Identity]; \)\)\(velocity[t_] = D[P[t], \ t]; 
accel[t_] = D[velocity[t], \ t]; 

    unittan[t_] = velocity[t]\/\@\(velocity[t] . velocity[t]\); 

    \(speed[t_] = \@\(velocity[t] . velocity[t]\); \)\)\(tanaccel[t_] = D[speed[t], \ t]\ unittan[t]; 

    vectors = 
      Table[{Arrow[accel[t], Tail -> P[t]], 
          Arrow[tanaccel[t], Tail -> P[t], VectorColor -> Red], 
          Arrow[accel[t] - tanaccel[t], Tail -> P[t], 
            VectorColor -> Red]}, {t, π\/4, 2\ π, π\/4}]; 

    \(Show[path, vectors, AspectRatio -> Automatic, 
      DisplayFunction -> $DisplayFunction]; \)\)

G.7)  Using the normal vector to bounce light beams off surfaces

G.7.a)

Here's a piece of the surface  
       z = 4 -  ((((x/2)))^2) +  ((((y/2)))^2):

\(Clear[f, x, y, z, r, t, surfaceplotter]; 

    f[x_, y_] = 4 - \((x\/2)\)\^2 + \((y\/2)\)\^2; 
\(x[r_, t_] = r\ Cos[t]; 
    \)\)y[r_, t_] = r Sin[t]; z[r_, t_] = f[x[r, t], y[r, t]]; \(surfaceplotter[r_, t_] = {x[r, t], y[r, t], z[r, t]}; 


    surface = 
      ParametricPlot3D[surfaceplotter[r, t], {r, 0, 2}, {t, 0, 2\ π}, 
        ViewPoint -> CMView, PlotRange -> All, Boxed -> False, 
        AxesLabel -> {"x", "y", "z"}]; \)

A light beam emanates from {-1, 1, 6} and strikes the surface at:

hit = surfaceplotter[1, 1.2]

Here's a look:

lightsource = {-1, 1, 6}; Show[surface, 
      Arrow[hit - lightsource, Tail -> lightsource, 
        VectorColor -> Red], PlotRange -> All];

Your job is to plot the vector on which the reflected light moves.

G.8)  Kissing circles and curvature

A curve in two dimensions is plotted by specifying two functions x[t] and y[t] and plotting 
       P[t] = {x[t], y[t]} 
for t running through a desired interval.
A curve in three dimensions is plotted by specifying three functions x[t], y[t], and z[t] and plotting 
       P[t] = {x[t], y[t], z[t]} 
for t running through a desired interval.
In both situations, you get the unit tangent vector at P[t] through the formula:
       unittan[t]=D[P[t], t]/(Sqrt[D[P[t], t] . D[P[t], t]]).
In both situations, the main normal at P[t] is given by
       mainnormal[t] = D[unittan[t], t].
The vector mainnormal[t] is a measurement of how fast the unit tangent is turning as t progresses.
You can get an even better measurement of how the curve turns by calculating the instantaneous rate of change of the unit tangent as a function of arc length s measured on the curve from a specified reference point usually at one end of the curve. 
This measurement is intrinsic to the shape of the curve, and does not depend on the specific parameterization of the curve you are using.
The chain rule tells you that at P[t], this measurement is given by
       turn[t] = D[unittan[t], s]
        = D[unittan[t], t] D[t, s]
       =D[unittan[t], t]/(Sqrt[D[P[t], t] . D[P[t], t]])
because
       D[t, s]=(1/(Sqrt[(x^′)[t]^2 +  (y^′)[t]^2]))
       =(1/(Sqrt[D[P[t], t] . D[P[t], t]]))

For an elucidation on this formula for D[t, s], double click the box.

Two dimensions:
Arc length s is the integral of (Sqrt[(x^′)[t]^2 +  (y^′)[t]^2]) .
So 
       D[s, t] = (Sqrt[(x^′)[t]^2 +  (y^′)[t]^2]) 
        = (Sqrt[D[P[t], t] . D[P[t], t]])
because D[P[t],  t]={x'[t],y'[t]}.
Accordingly,
     D[t, s]=(1/(Sqrt[(x^′)[t]^2 +  (y^′)[t]^2]))
     =(1/(Sqrt[D[P[t], t] . D[P[t], t]])).
Three dimensions:
Arc length s is the integral of (Sqrt[(x^′)[t]^2 +  (y^′)[t]^2 +  
          (z^′)[t]^2]).
So 
       D[s, t] = 
        (Sqrt[(x^′)[t]^2 +  (y^′)[t]^2 +  
            (z^′)[t]^2])
        = (Sqrt[D[P[t], t] . D[P[t], t]]),
because D[P[t], t]={x'[t],y'[t],z'[t]}.
Accordingly
     D[t, s]=(1/(Sqrt[(x^′)[t]^2 +  (y^′)[t]^2 +  
                  (z^′)[t]^2]))
     =(1/(Sqrt[D[P[t], t] . D[P[t], t]])).

Make note of the fact that
-> turn[t] is a vector that points in the same direction as mainnormal[t].
Why? 
Because it's a positive multiple of 
       D[unittan[t], t] = mainnormal[t].  
This tells you that turn[t] is perpendicular to the curve at P[t].
The length of turn[t] measures the roundness of the curve at P[t].

G.8.a.i)

Here, in true scale, is the curve  
     P[t] = {5  Cos[t], 3  Sin[t]} for 0 ≤ t ≤ π:

\(Clear[P, t]; 
P[t_] = {3\ Cos[t], 2\ Sin[t]}; 

    \(curve = 
      ParametricPlot[P[t], {t, 0, π}, 
        PlotStyle -> {{Blue, Thickness[0.01]}}, 
        AspectRatio -> Automatic]; \)\)

Here's the same curve together with a selection of vectors turn[t] with tails at P[t]:

\(Clear[unittan, turn]; 

    unittan[t_] = D[P[t], \ t]\/\@\(D[P[t], \ t] . D[P[t], \ t]\); 

    \(turn[t_] = D[unittan[t], \ t]\/\@\(D[P[t], \ t] . D[P[t], \ t]\); 
    \)\)scalefactor = 3; \(turnvectors = 
      Table[Arrow[turn[t], Tail -> P[t], VectorColor -> Red, 
          ScaleFactor -> scalefactor\ ], {t, π\/8, \(7\ π\)\/8, 
          π\/8}]; 

    \(Show[curve, turnvectors, AspectRatio -> Automatic]; \)\)

Describe, in words, how the lengths of the turn vectors are related to flatness or roundness of the curve.
Then plot the length
       ‖turn[t]‖ = 
        (Sqrt[turn[t] . turn[t]]) for 0 ≤ t ≤ π.
Discuss the relations between the two plots.
How does ‖turn[t]‖ plot out over intervals where the curve is fairly flat?
On what side of the curve does turn[t], with its tail at P[t], point?

G.8.a.ii)

Here is the same curve shown in true scale with the circle of radius
       (1/‖)turn[a]‖=(1/((Sqrt[turn[t] . turn[t]])))
centered at
       P[a]+ turn[a]/turn[a] . turn[a] 
for a = (π/4):

\(Clear[a, center, radius, circle, point]; 

    center[a_] = P[a] + turn[a]\/turn[a] . turn[a]; 

    \(radius[a_] = 1\/\@\(turn[a] . turn[a]\); \)\)circle[a_] = Graphics[{Red, Circle[center[a], radius[a]]}]; point[a_] = Graphics[{Red, PointSize[0.04], Point[P[a]]}]; a = (π/4); Show[curve, circle[a], point[a], PlotRange -> All, 
      AspectRatio -> Automatic];

Here's what happens when you go with a = ((5  π)/6):

a = ((5 π)/6); Show[curve, circle[a], point[a], PlotRange -> All, 
      AspectRatio -> Automatic];

Experiment with what happens when you go with other choices of  
       a with 0 ≤ a ≤ π, 
paying special attention to what you get when you go with 
       a = 0, (π/2), and π.
Make a movie if you like.
After you are done experimenting, say what you think is happening and try to explain why it is happening.

G.8.a.iii) Kissing, smooching, osculating, and curvature

Fancy folks call the circles you were studying in the last part by the name "osculating circle" at P[a]. You might prefer to call them "kissing circles" or "smooching circles" at P[a].
Most everyone calls 
       ‖turn[a]‖ = 
        (Sqrt[turn[t] . turn[t]]) = (1/radius)
(where radius stands for the radius of the kissing circle at P[a]) by the name "curvature" at P[a].
Explain what curvature tries to measure. 
Does a high curvature number at P[a] mean that the curve is very flat or very rounded at P[a]?
What does a low curvature number mean?

G.8.a.iv)

Here's a true scale parametric plot of part of the curve y=(12/x):

\(Clear[P, t]; 
P[t_] = {t, 12\/t}; 

    \(curve = 
      ParametricPlot[P[t], {t, 1, 10}, 
        PlotStyle -> {{Blue, Thickness[0.01]}}, 
        AspectRatio -> Automatic]; \)\)

Estimate the point on this curve at which the curvature is biggest and plot the kissing circle at that point. Then, on a separate plot, show the curve, the kissing circle at the point of biggest curvature, and a few other kissing circles.
A good eye-ball estimate is OK.

G.8.b.i) 3D curves

Here's a 3D curve:

\(Clear[P, t]; 
P[t_] = {Cos[t], 1.5\ Sin[t], t\/2}; 

    \(curve = 
      ParametricPlot3D[P[t], {t, 0, π}, BoxRatios -> Automatic, 
        ViewPoint -> CMView]; \)\)

Here's the same 3D curve together with a selection of vectors     
       unittan[t] and turn[t] with tails at P[t]:

\(Clear[unittan, turn]; 

    unittan[t_] = D[P[t], \ t]\/\@\(D[P[t], \ t] . D[P[t], \ t]\); 

    \(turn[t_] = D[unittan[t], \ t]\/\@\(D[P[t], \ t] . D[P[t], \ t]\); 
    \)\)\(unittanvectors = 
      Table[Arrow[unittan[t], Tail -> P[t], VectorColor -> Blue], {
          t, π\/8, \(7\ π\)\/8, π\/8}]; 

    turnvectors = 
      Table[Arrow[turn[t], Tail -> P[t], VectorColor -> Red], {t, 
          π\/8, \(7\ π\)\/8, π\/8}]; 

    \(Show[curve, unittanvectors, turnvectors, ViewPoint -> CMView, 
      BoxRatios -> Automatic]; \)\)

Describe how you believe the lengths and directions of the turn vectors are related to the shape of the curve.

G.8.b.ii)  Kissing, smooching, and osculating in 3D

You can do kissing circles in three dimensions:
Given a curve P[t] and a value t = a, you center the circle at
       center=P[a]+ turn[a]/turn[a] . turn[a]
and put 
       radius=(1/‖)turn[a]
                    ‖=(1/(Sqrt[turn[a] . turn[a]]))
and now you gotta choose two perpendicular unit vectors to determine the plane in which the circle resides. You want the circle to be tangent to the plane, so one good unit vector to go with is 
       vector1[a] = unittan[a]. 
The other vector you want is:
       vector2[a]=turn[a]/(Sqrt[turn[t] . turn[t]]).
Try it out on the same curve as plotted above:

\(Clear[P, t]; 
P[t_] = {Cos[t], 1.5\ Sin[t], t\/2}; 

    \(curve = 
      ParametricPlot3D[P[t], {t, 0, π}, 
        DisplayFunction -> Identity]; \)\)\(Clear[unittan, turn]; 

    unittan[t_] = D[P[t], \ t]\/\@\(D[P[t], \ t] . D[P[t], \ t]\); 

    \(turn[t_] = D[unittan[t], \ t]\/\@\(D[P[t], \ t] . D[P[t], \ t]\); 
    \)\)\(Clear[t, a, center, radius, point, vector1, vector2, kisser]; 

    point[a_] = Graphics3D[{Red, PointSize[0.03], Point[P[a]]}]; 

    \(center[a_] = P[a] + turn[a]\/turn[a] . turn[a]; \)\)radius[a_] = (1/(Sqrt[turn[a] . turn[a]])); vector1[a_] = unittan[a]; vector2[a_] = turn[a]/(Sqrt[turn[a] . turn[a]]); kisser[a_] := 
      ParametricPlot3D[
        center[a] + 
          radius[a] (Cos[t] vector1[a] + Sin[t] vector2[a]), {t, 0, 
          2 π}, DisplayFunction -> Identity]; a = (π/4); Show[curve, point[a], kisser[a], ViewPoint -> CMView, 
      BoxRatios -> Automatic, DisplayFunction -> $DisplayFunction];

Another:

a = ((2 π)/3); Show[curve, point[a], kisser[a], ViewPoint -> CMView, 
      BoxRatios -> Automatic, DisplayFunction -> $DisplayFunction];

Estimate the point on this curve at which the curvature is biggest and plot the kissing circle at that point.

G.9)  Measurements with the cross product*

Given two vectors 
       X = {x[1], x[2], x[3]} 
and 
       Y = {y[1], y[2], y[3]}:

\(Clear[X, x, Y, y, k]; 
X = {x[1], x[2], x[3]}; 

    \(Y = {y[1], y[2], y[3]}; \)\)

To calculate the cross product X×Y you make a matrix with 
       {i, j, k} 
in the top (horizontal) row, with X in the middle (horizontal) row, and with Y in the bottom row:

\(Clear[i, j, k]; 
MatrixForm[{{i, j, k}, X, Y}]\)

Next, take the determinant of this matrix:

Det[{{i, j, k}, X, Y}]

To arrive at the cross product X×Y, you replace 
       i by {1, 0, 0}, 
replace 
       j by {0, 1, 0} 
and replace 
       k by {0, 0, 1}:

XcrossY = 
      Det[{{i, j, k}, X, Y}] /. {i -> {1, 0, 0}, j -> {0, 1, 0}, 
          k -> {0, 0, 1}}

For example, if X and Y are:

X = {-12, -37, 92}; Y = {0, -68, 49};

Then X×Y is:

XcrossY = 
      Det[{{i, j, k}, X, Y}] /. {i -> {1, 0, 0}, j -> {0, 1, 0}, 
          k -> {0, 0, 1}}

A quick command for this is built into Mathematica:

XcrossY == Cross[X, Y]

And the vector X×Y is autoamtically perpendicular to both X and Y:

X . XcrossY

Y . XcrossY

G.9.a) The length of X×Y

The following calculations give clues to finding out what the length of X×Y measures:

Clear[X, x, Y, y]; X = {x[1], x[2], x[3]}; Y = {y[1], y[2], y[3]}; \(XcrossY = Cross[X, Y]; 

    Expand[\((X . Y)\)\^2 + XcrossY . XcrossY]\)

Expand[(X . X ) ( Y . Y)]

Remembering that 
       (((X . Y))^2) = 
        ‖X(‖^2) 
          ‖Y(‖^2) 
          Cos[angle between]^2,
explain how these calculations reveal that 
       ‖X×Y(‖^2)
         
        = (X×Y) . (X×Y) 
        = 
        ‖X(‖^2) 
          ‖Y(‖^2) 
          Sin[angle between]^2,
so that
       ‖X×Y‖ = 
        ‖X‖ 
          ‖Y‖ 
          |Sin[angle between]|.

Tip:

Remember:

\(Clear[t]; 
TrigExpand[Sin[t]\^2 + Cos[t]\^2]\)

G.9.b.i)

No matter what s you take, the following vectors are perpendicular:

Clear[X, Y, s]; X[s_] = {Cos[s]/(Sqrt[2]), Cos[s]/(Sqrt[2]), Sin[s]}; Y[s_] = {-Sin[s]/(Sqrt[2]), -Sin[s]/(Sqrt[2]), Cos[s]}; Expand[X[s] . Y[s], Trig -> True]

They are unit vectors, because the length of each of them is 1:

TrigExpand[X[s] . X[s]]

TrigExpand[Y[s] . Y[s]]

No matter what s you take, you find that X[s]×Y[s] is a unit vector:

\(cross = Cross[X[s], Y[s]]; 
TrigExpand[cross . cross]\)

Explain why:
If you take any two perpendicular unit vectors X and Y, then 
-> X×Y is perpendicular to both X and Y and
-> X×Y is also a unit vector.
If X and Y are unit vectors, but X is not perpendicular to Y, then can X×Y be a unit vector? Why not?

G.9.b.ii)

Use this to explain why if you have a curve P[t] in three dimensions, then
       binormal[t] = unittan[t]×mainunitnormal[t]
is a unit vector perpendicular to the curve at P[t] and perpendicular to mainunitnormal[t] at P[t].

Tip:

If you don't understand the terminology, see the Tutorial problem on tubes and horns.

G.9.b.iii) Using the cross product to measure area of parallelograms

Here are two vectors in two dimensions:

X = {2, 1}; Y = {1, 3}; Show[Arrow[X, VectorColor -> Red], 
      Arrow[Y, VectorColor -> Red], Axes -> Automatic];

And here is the parallelogram they determine:

Show[Arrow[X, VectorColor -> Red], 
      Arrow[Y, VectorColor -> Red], 
      Arrow[Y, Tail -> X, VectorColor -> Blue], 
      Arrow[X, Tail -> Y, VectorColor -> Blue], 
      Axes -> Automatic];

Now look at:

X; Y; XthreeD = {X[[1]], 
        X[[2]], 0}; YthreeD = {Y[[1]], 
        Y[[2]], 0}; \(cross = Cross[XthreeD, YthreeD]; 
\@\(cross . cross\)\)

Use the fact that 
       ‖X×Y‖ 
        = (Sqrt[(X×Y) . (X×Y)])
        = 
        ‖X‖ 
          ‖Y‖ 
          |Sin[angle between]|
to explain why the output from the last instruction above measures the area of the parallelogram plotted above.

Tip:

Remember that the area of a parallelogram is given by
       B h
where B is the length of the base and h is the height measured perpendicularly from the base.

G.10)  Thumbs up or thumbs down?

This is a chance for you to learn how the cross product X×Y is oriented with respect to X and Y.  By this point, you know that X×Y is perpendicular to both X and Y. But you can say a little more after you do some experimentation.

G.10.a)

Here are several samples of plots of 3D vectors X, Y, and the cross product X×Y:

\(X = {1, 0, 0}; 
Y = {0, 1, 0}; 
XcrossY = Cross[X, Y]; 

    Show[Arrow[X], Graphics3D[Text["X", X\/2 + {0, 0, 0.1}]], Arrow[Y], 
      Graphics3D[Text["Y", Y\/2 + {0, 0, 0.1}]], 
      Arrow[XcrossY, VectorColor -> Red], 
      Graphics3D[Text["XcrossY", XcrossY\/2]], BoxRatios -> Automatic, 
      ViewPoint -> CMView, Axes -> None, Boxed -> False]; \)

If you grab onto the shaft of X×Y with your right hand so as to use your fingers to push X onto Y through the smaller of the two possible angles, does your thumb point with X×Y or against X×Y?

X = {1, 0.4, 0}; Y = {0, 1, 1.2}; \(XcrossY = Cross[X, Y]; 

    Show[Arrow[X, Tail -> {0, 0, 0}, VectorColor -> Blue], 
      Graphics3D[Text["X", X\/2 + {0, 0, 0.1}]], 
      Arrow[Y, Tail -> {0, 0, 0}, VectorColor -> Blue], 
      Graphics3D[Text["Y", Y\/2 + {0, 0, 0.1}]], 
      Arrow[XcrossY, Tail -> {0, 0, 0}, VectorColor -> Red], 
      Graphics3D[Text["XcrossY", XcrossY\/2]], PlotRange -> All, 
      BoxRatios -> Automatic, ViewPoint -> CMView, 
      Axes -> None, Boxed -> False]; \)

If you grab onto the shaft of X×Y with your right hand so as to use your fingers to push X onto Y through the smaller of the two possible angles, does your thumb point with X×Y or against X×Y?

X = {-1, 1, 1}; Y = {-1, 0, 1.3}; XcrossY = X\[Cross]Y; Show[Arrow[X], Graphics3D[Text["X", (X/2) + {0, 0, 0.1}]], Arrow[Y], 
      Graphics3D[Text["Y", (Y/2) + {0, 0, 0.1}]], 
      Arrow[XcrossY, VectorColor -> Red], 
      Graphics3D[Text["XcrossY", (XcrossY/2)]], PlotRange -> All, 
      BoxRatios -> Automatic, ViewPoint -> CMView, 
      Axes -> None, Boxed -> False];

If you grab onto the shaft of X×Y with your right hand so as to use your fingers to push X onto Y through the smaller of the two possible angles, does your thumb point with X×Y or against X×Y?

X = {1, 1, 0}; Y = {1, -0.5, 0.3}; XcrossY = X\[Cross]Y; Show[Arrow[X], Graphics3D[Text["X", (X/2)]], Arrow[Y], 
      Graphics3D[Text["Y", (Y/2)]], Arrow[XcrossY, VectorColor -> Red], 
      Graphics3D[Text["XcrossY", (XcrossY/2)]], ViewPoint -> CMView, 
      Axes -> None, Boxed -> False];

If you grab onto the shaft of X×Y with your right hand so as to use your fingers to push X onto Y through the smaller of the two possible angles, does your thumb point with X×Y or against X×Y?
Do more experiments like these and then describe how X×Y is oriented with respect to X and Y.

G.10.b)

Given two 3-dimensional vectors X and Y, then how do you express 
       Y×X in terms of X×Y?
Try some examples before you jump to a conclusion.
Use your ideas from part a) to say why this is natural.

Tip:

Try some examples.  Here's one:

X = {4, 0, 0}; Y = {0, 4, 0}; XcrossY = 
      Det[{{i, j, k}, X, Y}] /. {i -> {1, 0, 0}, j -> {0, 1, 0}, 
          k -> {0, 0, 1}}

YcrossX = 
      Det[{{i, j, k}, Y, X}] /. {i -> {1, 0, 0}, j -> {0, 1, 0}, 
          k -> {0, 0, 1}}

Another:

X = {47.86, 87.12, 19.55}; Y = {27.18, 31.14, 57.00}; XcrossY = 
      N[Det[{{i, j, k}, X, Y}] /. {i -> {1, 0, 0}, j -> {0, 1, 0}, 
            k -> {0, 0, 1}}]

YcrossX = 
      N[Det[{{i, j, k}, Y, X}] /. {i -> {1, 0, 0}, j -> {0, 1, 0}, 
            k -> {0, 0, 1}}]

If you went to a high school that taught terminology instead of calculation, then you'll see that the cross product defines a multiplication that is not commutative.
If you went to a high school that emphasized calculation, then you have a good chance of knowing what properties of determinants force the situation to be as it is.