VC.02 Perpendicularity
 LITERACY

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

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

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

L.1)

How do you know that the vector X = {t, -(s/2), -(s/2)} is perpendicular to the vector Y = {s, t, t}?

L.2)

Given X = {1, 1, 1} and Y = {2, 0, 0}, calculate X . Y and X×Y.

L.3)

Given two 3D vectors X and Y, say why you are sure that 
     X . (X×Y) = Y . (X×Y) = 0.

L.4)

Come up with a unit vector that points in the same direction as the vector X = {3, 0, 4}.

L.5)

If X is a non-zero vector, then what is the length of (X/(Sqrt[X  .  X]))? 
What is the relation between the direction of X and the direction of (X/(Sqrt[X  .  X]))?

L.6)

A plane has xyz-equation 
       x -  y +  5 z = 10.
Give a vector perpendicular to the plane, and give a point on the plane.

L.7)

Here are xyz-equations for two planes:
       x +  y +  z = 9, and
       2  x -  y -  z = 3.
Say how you can tell that these planes cut each other at right angles.

L.8)

Put normal1 = {1, 1, 1} and normal2 = {2, -1, -1}. Explain how you know that the cross product
       normal1×normal2
is parallel to the line in which the planes
       x +  y +  z = 9, and
       2  x -  y -  z = 3
intersect each other.

L.9)

In an effort to find a formula for the line in which the planes 
       x +  y +  z = 9, and
       2  x -  y -  z = 3
intersect, the lab dweeb Calculus Cal added the two equations, and announced that a formula for the line of intersection of these planes is 
       3  x = 12 (or x = 4).  
Say why Cal's answer is a hundred yards short of the green.

L.10)

How do you know that the planes
       x -  2  y +  4  z = 12, 
and 
       3  x -  6  y +  12  z = 4
are parallel?

L.11)

Given that X and Y are perpendicular unit vectors in 2D, describe the curve traced out by 
       P [t] = Cos[t] X +  Sin[t] Y as t runs from 0 to 2  π.

L.12)

Given that X and Y are perpendicular unit vectors in 3D, describe the curve traced out by 
       P [t] = 2  Cos[t] X +  4  Sin[t] Y as t runs from 0 to 2  π.

L.13)

Given a fixed point {a, b, c}, and fixed, perpendicular unit vectors X and Y in 3D, describe the curve traced out by  
       P [t] = {a, b, c} +  2 Cos[t] X +  2 Sin[t] Y as t runs from 0 to 2  π.

L.14)

Given a fixed point {a, b, c}, and given fixed, perpendicular unit vectors X and Y in 3D, describe the curve traced out by  
       P [t] = {a, b, c} +  2  Cos[t] X +  3  Sin[t] Y as t runs from 0 to 2  π.

L.15)

Say how to use unit vectors to help plot any 2D ellipse.

L.16)

If you were asked to plot a duplicate copy of the ellipse 
       ((((x/a)))^2)+ ((((y/b)))^2)=1 
on a given 3D plane, how would you go about it?

L.17)

You are walking around a closed curve with no loops (a curve like a distorted circle) in the counterclockwise way, and at time t, you are at the point {x[t], y[t]}.
Does the unit normal vector 
       (({y'[t] , -x'[t]})/(Sqrt[((x'[t])^( 2)) + ((y'[t])^( 2))]))
transplanted with its tail at {x[t], y[t]} point out away from the curve toward your right foot, or does it point inside the curve toward your left foot?

L.18)

Here is a curve parameterized by a certain formula 
     P [t] = {x[t], y[t]} for 0 ≤ t ≤ 2  π:

ParametricPlot[{Cos[t], Sin[t] (E^(0.5 Sin[5 t]))}, {t, 0, 
        2 π}, PlotStyle -> Thickness[0.01], PlotPoints -> 50, 
      AxesLabel -> {"x", "y"}, Ticks -> None, 
      AspectRatio -> (1/2)];

As t advances from 0 to 2  π, you are given that P [t] moves along this curve in the counterclockwise direction.  Pencil in some of the unit normals 
       (({y'[t] , -x'[t]})/(Sqrt[((x'[t])^( 2)) + ((y'[t])^( 2))]))
with their tails at {x[t], y[t]}.

L.19)

Here is a curve parameterized by a certain formula 
       P [t] = {x[t], y[t]} for 0 ≤ t ≤ 4:

ParametricPlot[{t, (E^(0.2 t)) Sin[2 t]}, {t, 0, 4}, 
      PlotStyle -> Thickness[0.01], 
      AxesLabel -> {"x", "y"}];

As t advances from 0 to 4, you are given that P [t] moves from left to right along this curve. Pencil in some of the main unit normals  
       mainunitnormal[t]=D[unittan[t] ,  t]
                /(Sqrt[D[unittan[t] ,  t]  .  D[unittan[t] ,  t]])
with tail at {x[t], y[t]}.
(In order to be able to answer this question, experience with the GiveItaTry problem called "Kissing circles and curvature" would be helpful.)

L.20)

What is curvature?

L.21)

Describe how you can use unit tangents, main unit normals, and binormals to make a plot like this:

\(Clear[P, x, y, z, t, unittan, mainunitnormal, binormal]; 

    x[t_] = 1 + 5\ t; 
\(y[t_] = 2\ \((t - 0.3)\)\^2; \)\)z[t_] = -2 t; P[t_] = {x[t], y[t], z[t]}; curve = 
      ParametricPlot3D[Evaluate[P[t]], {t, 0, 2}, 
        DisplayFunction -> Identity]; unittan[t_]=((P'[t])/(Sqrt[P'[t].P'[t]]));unittanvectors = 
      Table[Arrow[unittan[t], Tail -> P[t]], {t, 0, 2, 0.5}]; mainunitnormal[t_] = 
      N[(∂_t) unittan[t]/(Sqrt[Expand])[
              (∂_t) unittan[t] . (∂_t) unittan[t]]]; mainnormalvectors = 
      Table[Arrow[mainunitnormal[t], Tail -> P[t]], {t, 0, 2, 0.5}]; binormal[t_] = 
      N[Det[{{i, j, k}, unittan[t], mainunitnormal[t]}] /. {
            i -> {1, 0, 0}, j -> {0, 1, 0}, k -> {0, 0, 1}}]; 
    binormalvectors = 
      Table[Arrow[binormal[t], Tail -> P[t]], {t, 0, 2, 0.5}]; everything = 
      Show[curve, unittanvectors, mainnormalvectors, binormalvectors, 
        ViewPoint -> CMView, PlotRange -> All, Boxed -> False, 
        BoxRatios -> Automatic, Axes -> None, 
        DisplayFunction -> $DisplayFunction];

Describe how you can use unit tangents, main unit-normals, and binormals to make a tube like this:

radius = 1; ParametricPlot3D[
      Evaluate[N[
          P[t] + radius Cos[s] mainunitnormal[t] + 
            radius Sin[s] binormal[t]]], {t, 0, 2}, {s, 0, 2 π}, 
      ViewPoint -> CMView, Axes -> None, Boxed -> False, 
      BoxRatios -> Automatic, 
      AxesLabel -> {"x", "y", "z"}];

L.22)

You are going to cut an elliptical hole out of a piece of plywood with a drill bit whose radius is 1.05 inches. Here is the shape of the hole with all units in inches:

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


    curve = ParametricPlot[{x[t], y[t]}, {t, 0, 2\ π}, 
        AxesLabel -> {"x", "y"}, AspectRatio -> Automatic]; 
    \)

Why should the plot of the following curve coincide with the plot of the center of the drill bit as you cut the hole out of the plywood?

Clear[P]P[t_]={x[t], y[t]}-((1.05 {y'[t],-x'[t]})/(Sqrt[((x'[t])^2)+((y'[t])^2)]));\(drillpath = 
      ParametricPlot[P[t], {t, 0, 2\ π}, 
        DisplayFunction -> Identity]; 


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

Is the path of the drill bit an ellipse?