Algebra → Geometry Lexicon

by
K. D.  Stroyan
University of Iowa

copyright 1997 by Academic Press, Inc.- All rights reserved.

Special Mathematica Functions used in this NoteBook

We told you not to look.  This horrible stuff sets various defaults and defines some functions needed to draw the geometric side of the lexicon.  Ignore the details here and go on to the lesson.

Off[General::spell];
Off[General::spell1];
Off[ParametricPlot3D::ppcom]
Needs["Graphics`Colors`"]

SetOptions[Graphics,Axes->False,AxesOrigin->{0,0},AspectRatio->Automatic];
SetOptions[Graphics3D,ViewPoint->{5,2,1},Boxed->False,AspectRatio->Automatic];
SetOptions[ParametricPlot3D,ViewPoint->{5,2,1},AspectRatio->Automatic];
SetOptions[Plot3D,ViewPoint->{5,2,1},AspectRatio->Automatic];
SetOptions[ParametricPlot,AspectRatio->Automatic];
SetOptions[Plot,AspectRatio->Automatic];

colorQ[a_]:=(Head[a]===RGBColor);
grayQ[a_]:=(Head[a]===GrayLevel);
thickQ[a_]:=(Head[a]===Thickness);
absthickQ[a_]:=(Head[a]===AbsoluteThickness);
notruleQ[u_] := !(Head[u]===Rule);
ruleQ[u_] := (Head[u]===Rule);

Norm::usage = "Norm[expr] returns the Euclidean length of the
		vector, 'expr'.";

Norm[a_?VectorQ] := Sqrt[a.a];

Angle[a_?VectorQ,b_?VectorQ] := ArcCos[(a.b)/(Norm[a] Norm[b])]

Proj[a_?VectorQ,b_?VectorQ] := ((a.b)/(b.b))b

tol = .5*10^-6;

OrthUp[a_?VectorQ] :=
	Module[{b,c,d,f},
		d = N[a/Norm[a]];
		If[Chop[d[[3]]^2 - 1,tol] == 0, b={1,0,0} ,
		b = {0,0,1} - d[[3]] d; b = b/Norm[b];];
	Return[b]];
	
OrthSet[a_?VectorQ] :=
	Module[{b,c,d},
		d = N[a/Norm[a]];
		If[Chop[d[[1]],tol]==0,b={1,0,0},
			 If[Chop[d[[2]],tol]==0,b={0,1,0},
			  b={-d[[2]],d[[1]],0}]];
			b=b/Norm[b];c = Cross[d,b];
	Return[{b,c/Norm[c],d}]];

				
Rotate[a_?VectorQ,theta_] :=
	Module[{u,v,r},
		u = OrthSet[a];
		v = Transpose[u];
		r = N[{{Cos[theta],-Sin[theta],0},{Sin[theta],Cos[theta],0},{0,0,1}}];
	Return[v.r.u]];

Vector2D[tail_,tip_,opts___]:=
	Module[{ntail,ntip,sopts,Punit,up,arrow},
	ntail = N[tail];
	ntip = N[tip];
	
	sopts = Join[Select[{opts},colorQ],Select[{opts},
				thickQ],Select[{opts},absthickQ],Select[{opts},grayQ]];

If[Chop[ntail.ntail+ntip.ntip,tol] == 0,
			(*too small to plot or not number*)
			Return[Graphics[Point[{0,0}]]];
	,						
If[Chop[(ntip-ntail).(ntip-ntail),tol] == 0,
		Return[Graphics[{Join[sopts,{Line[{ntail,ntip}]}]}]];
	,
	Punit = 0.075 (ntip-ntail) ;
	up = 0.15 {-Punit[[2]],Punit[[1]]};
	arrow = Line[{ntail,ntip,ntip-Punit+up,ntip,ntip-Punit-up}];
	]];
Return[Graphics[{Join[{AbsoluteThickness[2]},Join[sopts,{arrow}]]}]];
];

Vector3D[tail_,tip_,opts___]:=
	Module[{ntail,ntip,sopts,Punit,up,u2,u3,u4,rotmat,arrow},
	ntail = N[tail];
	ntip = N[tip];
	
	sopts = Join[Select[{opts},colorQ],Select[{opts},
				thickQ],Select[{opts},absthickQ],Select[{opts},grayQ]];

If[Chop[ntail.ntail+ntip.ntip,tol] == 0,
			(*too small to plot or not number*)
			Return[Graphics3D[Point[{0,0,0}]]];					
	,		
If[Chop[(ntip-ntail).(ntip-ntail),tol] == 0,
		Return[Graphics3D[{Join[sopts,{Line[{ntail,ntip}]}]}]];
	,
	Punit = (ntip-ntail);
	rotmat = Rotate[Punit,N[Pi/2]];
	up = OrthUp[Punit];
	Punit = .075 Punit;
	up = .15 Norm[Punit] up;
	u2 = rotmat.up;
	u3 = rotmat.u2;
	u4 = rotmat.u3;
	arrow = Line[{ntail,ntip,
				ntip - Punit + up,ntip,
				ntip - Punit + u2,ntip,
				ntip - Punit + u3,ntip,
				ntip - Punit + u4}];
	]];
Return[Graphics3D[{Join[{AbsoluteThickness[2]},Join[sopts,{arrow}]]}]];
];

aRCtAN[y_,x_] := Module[{v},
	If[ Chop[N[x],tol] == 0 ,If[ N[y] < 0, v = -N[Pi/2], v = N[Pi/2]],
		v = N[ArcTan[y/x]];
		If[ x < 0 && y < 0, v = N[Pi -  v],v]];
	Return[v]];

Arc2D[X_,Y_,opts___] := Graphics[{opts,
		Disk[{0,0},1,{Min[
							aRCtAN[
						N[X[[2]]],N[X[[1]]]
								]
							,
							aRCtAN[
							N[Y[[2]]],N[Y[[1]]]
								]
						]
						,
					Max[
							aRCtAN[
						N[X[[2]]],N[X[[1]]]
								]
							,
							aRCtAN[
							N[Y[[2]]],N[Y[[1]]]
								]
						]}
				]}
				];
Arc3D[X_,Y_] := 
	Module[{t,U,V},
		U[V_]:= N[(1/Sqrt[V.V]) V];
		Return[Graphics3D[
		Polygon[Append[Table[U[t X + (1-t) Y],{t,0,1,0.1}],{0,0,0}]]
				]
		]
	];

(*Zero Arrow causes trouble. Put in Vector?*)

Vector[tail_,tip_,opts___]:=
	If[Length[N[tail]]==2,Return[Vector2D[tail,tip,opts]],
		Return[Vector3D[tail,tip,opts]]];
		
Arrow[vec_,opts___]:= 
	Module[{a,b},
				If[Length[N[vec]]==2,
				a=ToExpression["Tail"]/.Select[{opts},ruleQ]/.
					{ToExpression["Tail"]->{0,0}};
				Return[Vector2D[a,a+vec,opts]],
				a=ToExpression["Tail"]/.Select[{opts},ruleQ]/.
					{ToExpression["Tail"]->{0,0,0}};
				Return[Vector3D[a,a+vec,opts]]]
				];

Frame2D[delta_] := 
      Graphics[{
            {Green,Line[{{-delta/4,0},{delta,0}}]},
                    Text["x",{1.01 delta,0}],
            {Green,Line[{{0,-delta/4},{0,delta}}]},
                    Text["y",{0, 1.01 delta}]}];

Frame3D[delta_] := 
      Graphics3D[{
            {Green,Line[{{-delta/4,0,0},{delta,0,0}}]},
                    Text["x",{1.01 delta,0,0}],
            {Green,Line[{{0,-delta/4,0},{0,delta,0}}]},
                    Text["y",{0, 1.01 delta,0}],
            {Green,Line[{{0,0,-delta/4},{0,0,delta}}]},
                    Text["z",{0,0,1.01 delta}]}];

View2D[stuff_] := Show[stuff,Frame2D[1]];
View3D[stuff_] := Show[stuff,Frame3D[1]];

Notebook Overview: The Lexicon

This NoteBook gives a basic lexicon of corresponding algebraic and geoemtric vector ideas.  It is a combination of a number of other NoteBooks that explain each topic below in more detail.  This NoteBook gathers them all together (without explanation) in one "lexicon" of ideas that can be translated in both the language of algebra and in the language of geometry of 2 or 3 dimensions.

This NoteBook is very big and is NOT intended to be run all at once.  Rather, it is a "dictionary" of all the important translations gathered for reference when you need a quick review.

To be proficient in analytical geometry, you need to learn how to translate geometry into algebra and algebra into geometry.  To do this, reformulate your problem until it fits an entry in the lexicon and then move to the other language.

A "position vector" in 2 or 3 dimensions is an arrow that points from a reference origin to another point in space.  An "oriented displacement" is an arrow with its tail at one point in space and its tip at another.  Vectors can be measured by perpendicular cartesian coordinates, 2 coordinates in 2 dimensions, 3 coordinates in 3D.  These coordinates can then be used to calculate geometric quantities.  In short, these calculations are the subject called "analytical geometry."  The algebra of the coordinates is linked to the geometry of the vectors measured by coordinates.

In its vector formulation, analytical geometry is a "translation" between the language of algebra (in coordinates) and the language of geomety represented by the arrows.  Some, but not all, figures in geometry have an exact counterpart in algebra and some, but not all, computations have an exact counterpart in geometry.  We think of the ideas that have counterparts in both as entries in a "translation dictionary" or lexicon.

The computer is good at algebra.  You can think of the whole lexicon as a way to make the computer draw the pictures by giving it the correct algebra.

References to the Text

Chapter 15

Vector Sum, Vector Difference, Scalar Multiplication, Dot Product, Length, Angle & Projection

Also see the separate NoteBooks on these topics.

Chapter 16

Parametric equations of a line.

Also see the separate NoteBook on this topic.

Chapter 17

Explicit and Implicit equations of a plane.

Also see the separate NoteBooks on these topics.

Coordinates for Vectors

In Mathematica a vector is a list of numbers, for example

X = {2, -3}     or     Y = {4,-3, 8}

<Enter> the computations below to see examples.

2-D

X = {4, 3}; View2D[Arrow[X, Blue]];

X = {4, 3}; Y = {2, -3}; View2D[{Arrow[Y, Blue], Arrow[X, Red]}];

3-D

X = {1, 2, 3}; View3D[Arrow[X, Red]];

X = {1, 2, 3}; Y = {2, -4, -1}; View3D[{Arrow[X, Red], Arrow[Y, Blue]}];

Vector Sum

Tips - to - tails

2-D

X = {3, 4}; Y = {-5, 2}; Z = X + Y; Print[X, " + ", Y, " = ", Z]; View2D[{Arrow[X, Blue], Arrow[Y, Blue], 
        Arrow[Y, Tail -> X, Brown], Arrow[Z, Blue]}]; View2D[{Arrow[X, Blue], Arrow[X, Tail -> Y, Red], 
        Arrow[Y, Blue], Arrow[Z, Blue]}]; View2D[{Arrow[X, Blue], Arrow[Y, Blue], 
        Graphics[{Yellow, Polygon[{{0, 0}, X, X + Y, Y}]}], Arrow[Z, Blue]}];

3-D

X = {3, 5, 4}; Y = {1, -2, 1}; Z = X + Y; Print[X, " + ", Y, " = ", Z]; View3D[{Arrow[X, Blue], Arrow[Y, Blue], 
        Arrow[Y, Tail -> X, Brick], Arrow[Z, Blue]}]; View3D[{Arrow[X, Blue], Arrow[X, Tail -> Y, Carrot], 
        Arrow[Y, Blue], Arrow[Z, Blue]}]; View3D[{Arrow[X, Blue], Arrow[Y, Blue], Arrow[Z, Blue], 
        Graphics3D[Polygon[{{0, 0, 0}, X, X + Y, Y}]]}];

Vector Difference and Free Arrows

2-D

X = {3, 4}; Y = {-5, 2}; W = Y - X; Print["W = ", W]; View2D[{Arrow[X, Blue], Arrow[Y, Blue], 
        Arrow[Y - X, Tail -> X, GreenDark], Arrow[W, Blue], 
        Graphics[Text["W", 1.1 W]]}];

3-D

X = {3, 4, 5}; Y = {1, -2, 1}; W = Y - X; Print["W = ", W]; View3D[{Arrow[X, Blue], Arrow[Y, Blue], 
        Arrow[Y - X, Tail -> X, VenetianRed], Arrow[W, Blue], 
        Graphics3D[Text["W", 1.1 W]]}];

Scalar Multiples

2-D

X = {3, 4}; Y = 2 X; Print["2", X, " = ", Y]; View2D[{Arrow[X, Navy], Arrow[X, Tail -> X, SteelBlue]}]; View2D[{Arrow[Y, NavyBlue]}];

3-D

X = {3, -4, 2}; Y = 2 X; Print["2", X, " = ", Y]; View3D[{Arrow[X, Navy], Arrow[X, Tail -> X, SteelBlue]}]; View3D[{Arrow[Y, Navy]}];

Dot Product & Length

Dot Product

Clear[A, a, b, c, X, x, y, z]; A = {a, b, c}; B = {a, b}; X = {x, y, z}; Y = {x, y}; A . XB . YA . Y

2 - D

X = {5, 12}; Y = {4, 3}; d = X . Y; x = Norm[X]; y = Norm[Y]; View2D[{Arrow[X, Blue], Graphics[Text[x "=Norm", 0.5 X]], 
        Arrow[Y, Red], Graphics[Text[y "=Norm", 0.8 Y]]}]; Print["|X|*|Y|*Cos[Angle[X,Y]] = ", x, "*", y, "*", 
      Cos[Angle[X, Y]], " = ", x y Cos[Angle[X, Y]]]; Print[X, ".", Y, " = ", d];

3-D

X = {3, 4, 2}; Y = {1, -2, 3}; x = Norm[X]; y = Norm[Y]; d = X . Y; View3D[{Arrow[X, Blue], 
        Graphics3D[Text[x " = Norm[X]", 0.7 X]], Arrow[Y, Red], 
        Graphics3D[Text[y " = Norm[Y]", 0.8 Y]]}]; Print["|X|*|Y|*Cos[Angle[X,Y]] = ", x, "*", y, "*", 
      Cos[Angle[X, Y]], " = ", x y Cos[Angle[X, Y]]]; Print[X, ".", Y, " = ", d];

Angle and Direction

Angle

Norm[X_] := (Sqrt[X . X]); Angle[X_, Y_] := ArcCos[X . (Y/(Norm[X] Norm[Y]))]Angle[{1, 1}, {1, 0}]N[Angle[{1, 1}, {1, 0}]]

2-D

Y = {5, 5 (Sqrt[3])}; \(X = {4, 4}; 
θ = Angle[X, Y]; 

    Print["Exact angle = ", θ]; 
a = N[θ, 2]; 

    View2D[{Arrow[X, Blue], Arrow[Y, Red], Arc2D[X, Y], 
        Graphics[Text[a\ "=a",  .3\ Y +  .4\ X]]}]; \)

3-D

X = {-3, 1, 2}; \(Y = {1, \(-2\), 1}; 
θ = Angle[X, Y]; 

    Print["Exact angle = ", θ]; 
a = N[θ, 2]; 

    \(View3D[{Arrow[X, Blue], Arrow[Y, Red], Arc3D[X, Y], 
        Graphics3D[Text[a\ "=a",  .3\ Y +  .4\ X]]}]; \)\)

Direction Cosines & Direction Angles

2-D

X = {1, (Sqrt[3])}; \(E1 = {1, 0}; 
α\_1 = Angle[X, E1]; 
a1 = N[α\_1]; 

    E2 = {0, 1}; 
α\_2 = Angle[X, E2]; 
a2 = N[α\_2]; 

    Print["Exact angle to x-axis = ", α\_1, " ≈ ", 
      a1]; 
Print["Direction Cosines = (", 
      X[[1]]\/Norm[X], " , ", 
      X[[2]]\/Norm[X], ")"]; 

    \(View2D[{Arrow[X, Blue], Arrow[E1, Red], Arrow[E2, GreenDark], 
        Arc2D[X, E1, Yellow], Arc2D[X, E2, GreenPale], 
        Graphics[Text[a1\ "=a1",  .5\ E1 +  .2\ X]], 
        Graphics[Text[a2\ "=a2",  .5\ E2 +  .2\ X]]}]; \)\)

3-D

X = {1, 2, 3}; E1 = {1, 0, 0}; E2 = {0, 1, 0}; E3 = {0, 0, 1}; \(View3D[{Arrow[X, Blue], Arc3D[X, E1], Arc3D[X, E2], Arc3D[X, E3]}]; 

    α\_1 = Angle[X, E1]; 
α\_2 = Angle[X, E2]; 

    α\_3 = Angle[X, E3]; 
a1 = N[α\_1, 2]; 
    a2 = N[α\_2, 2]; a3 = N[α\_3, 2]; 

    Print["Angles=(", α\_1, " , ", α\_2, " , ", 
      α\_3, ")"]; 

    \(Print["Approximate Angles = (", a1, " , ", a2, " , ", a3, 
      ")"]; \)\)Print["Direction Cosines = (", 
      X[[1]]/Norm[X], " , ", 
      X[[2]]/Norm[X], " , ", 
      X[[3]]/Norm[X], ")"]; Print["Approximate Cosines = (", 
      N[X[[1]]/Norm[X]], " , ", 
      N[X[[2]]/Norm[X]], " , ", 
      N[X[[3]]/Norm[X]], ")"];

Perpendicular Projection

Proj[X_, Y_] := ((X . Y Y)/Y) . YX = {3, 4}; Y = {1, 1}; Proj[X, Y]

2-D

X = {2, 2 (Sqrt[3])}; Y = {4 (Sqrt[3]), 4}; Z = Proj[X, Y]View2D[{Arrow[X, Blue], Arrow[Y, Red], Arrow[Z, Yellow], 
        Graphics[Line[{Z, X}]]}];

3-D

X = {3, 4, 5}; Y = 4 {1, 2, 1}; Z = Proj[X, Y]View3D[{Arrow[X, Blue], Arrow[Y, Red], Arrow[Z, Yellow], 
        Graphics3D[Line[{Z, X}]]}];

Try this:

X = {3, 4, 5}; Y = {1, -2, 1}; Z = Proj[X, Y]

Parametric Lines

2-D

P = {1, 2}; V = {3, -2}; V = (V/Norm)[V]; SetOptions[Graphics, 
      PlotRange -> {{-1, 4}, {-0.5, 4.5}}]; Do[
      View2D[{Graphics[{Green, Line[{P - 2 V, P + 2 V}]}], 
          Arrow[P, Yellow], Graphics[Text["P",  .6 P]], 
          Arrow[P + t V, Blue], 
          Graphics[Text["P + t V", 1.1 (P + t V)]], 
          Arrow[t V, Tail -> P, Red]}]; , {t, -2, 2, 0.25}]; 
    SetOptions[Graphics, PlotRange -> Automatic];

3-D

P = {1, 1, 3}; V = {-2, 4, -1}; V = (V/Norm)[V]; SetOptions[Graphics3D, 
      PlotRange -> {{0, 4}, {- .7, 3.3}, {0, 4}}]; Do[
      View3D[{Graphics3D[{Green, Line[{P - 2 V, P + 2 V}]}], 
          Arrow[P, Yellow], Graphics3D[Text["P",  .6 P]], 
          Arrow[P + t V, Red], 
          Graphics3D[Text["P + t V", 1.1 (P + t V)]], 
          Arrow[t V, Tail -> P, Blue]}]; , {t, -2, 2, 0.25}]; 
    SetOptions[Graphics3D, PlotRange -> Automatic];

Two Points Determine a Line

A = {4, 5, 2}; B = {1, -2, 3}; vectorPlot = View3D[{Arrow[A, Blue], Arrow[B, Blue]}];

Clear[X]; X[t_] := A + t (B - A); linePlot = ParametricPlot3D[X[t], {t, -1.1, 1.1}];

Show[linePlot, vectorPlot];

Implicit Lines and Planes

2-D

V = {-2, 3}; P = {1, 2}; Clear[X, x, y, z]; X = {x, y}; eq = V . (X - P) == 0Solve[eq, y]

explicitLine = 
      Plot[((2 (x + 2))/3), {x, -1, 4}, PlotRange -> {0, 5}];

vectorPlot = View2D[{Arrow[P, Red], Arrow[V, Tail -> P, Blue]}];

Show[explicitLine, vectorPlot];

3-D

V = {(1/3), -1, 2}; P = {1, 2, 3}; Clear[X, x, y, z]; X = {x, y, z}; eq = V . (X - P) == 0Solve[eq, z]

explicitPlane = 
      Plot3D[(1/6) (13 - x + 3 y), {x, -1, 4}, {y, -1, 4}, 
        PlotRange -> {0, 5}, BoxRatios -> {1, 1, 1}, 
        DisplayFunction -> Identity]; vectorPlot = View3D[{Arrow[P, Red], Arrow[V, Tail -> P, Blue]}]; 
    Show[{explicitPlane, vectorPlot}, 
      DisplayFunction -> $DisplayFunction];

Distance from a point to the previous plane

V = {(1/3), -1, 2}; P = {1, 2, 3}; Clear[X, x, y, z]; X = {x, y, z}; eq = V . (X - P) == 0

Q = {-2, 3, 1}View3D[{Arrow[P, Blue], Arrow[V, Tail -> P, Red], 
        Arrow[Q, Brick], Graphics3D[Text["Q", 1.1 Q]]}];

equn = V . (Q + t V - P) == 0Solve[equn, t]

arrows = 
      View3D[{Arrow[P, Blue], Arrow[V, Tail -> P, Red], Arrow[Q, Brick], 
          Graphics3D[Text["Q", 1.1 Q]], 
          Arrow[((27 V)/23), Tail -> Q, Pink]}];

Show[arrows, explicitPlane];

dist = Norm[((27 V)/23)]N[dist]

Cross Product

2-D

Cross Product is strictly a 3D notion.  There is no corresponding 2D idea.

3-D

Clear[X, Y, a, b, c, x, y, z]; X = {a, b, c}; Y = {x, y, z}; Z = X\[Cross]YSimplify[Z . X]Simplify[Z . Y]

X =  .5 {2, 3, 1}; Y =  .3 {-4, -2, 1}; Z = X\[Cross]Y; View3D[{Graphics3D[Polygon[{{0, 0, 0}, X, X + Y, Y}]], Arrow[X, Red], 
        Arrow[Y, Red], Arrow[Z, Red]}]; Print[X, " x ", Y, " = ", Z, " |Z| = ", Norm[Z]]; Print["|X|*|Y|*Sin[Angle[X,Y] = ", Norm[X], " * ", Norm[Y], 
      " * ", Sin[Angle[X, Y]], " = ", 
      Norm[X] Norm[Y] N[Sin[Angle[X, Y]]]];

Three Points Determine a Plane

F = {-1, 1.5, 1}; G = {- .5, - .5, 1.3}; H = { .6, 1.2,  .6}; View3D[{Arrow[F, Red], Graphics3D[Text["F", 1.1 F]], 
        Arrow[G, Red], Graphics3D[Text["G", 1.1 G]], Arrow[H, Red], 
        Graphics3D[Text["H", 1.1 H]], Graphics3D[Polygon[{F, G, H}]]}];

View3D[{Arrow[F, Blue], Graphics3D[Text["F", 1.1 F]], 
        Arrow[G, Blue], Graphics3D[Text["G", 1.1 G]], 
        Arrow[G - F, Blue], Graphics3D[Text["G-F",  .5 (G - F)]], 
        Arrow[G - F, Tail -> F, Red], 
        Graphics3D[Text["G-F", 1.1 F +  .5 (G - F)]], 
        Arrow[H, Blue], Graphics3D[Text["H", 1.1 H -  .1 G]], 
        Arrow[H - F, Blue], Graphics3D[Text["H-F",  .5 (H - F)]], 
        Arrow[H - F, Tail -> F, Red], 
        Graphics3D[Text["H-F", 1.2 H -  .4 (H - F)]]}];

P = (G - F)\[Cross](H - F); View3D[{Arrow[P, Blue], 
        Graphics3D[Text["P=(G-F)x(H-F)", 1.1 P]], 
        Arrow[P, Tail -> F, Red], Arrow[F, Blue], Arrow[G, Blue], 
        Arrow[G - F, Blue], Graphics3D[Text["G-F", 1.1 (G - F)]], 
        Arrow[G - F, Tail -> F, Red], Arrow[H, Blue], 
        Arrow[H - F, Blue], Graphics3D[Text["H-F", 1.1 (H - F)]], 
        Arrow[H - F, Tail -> F, Red], Graphics3D[Polygon[{F, G, H}]]}];

Oriented Area in 2D

2-D

Clear[A, B, matrix]A = {5, 2}; B = {1, 3}; matrix := {A, B}View2D[{Arrow[A, Red], Graphics[Text["A", 1.1 A]], 
        Arrow[B, Red], Graphics[Text["B", 1.1 B]], 
        Graphics[{Green, Polygon[{{0, 0}, A, A + B, B}]}]}]; Print["Oriented Area = determinant[matrix] = ", Det[matrix]]; 
    Print["matrix ="]; TableForm[matrix]

Clear[t]; B[[1]] + 
      t A[[1]]Solve[
      B[[1]] + 
          t A[[1]] == 0, t]

t = -(1/5); View2D[{Arrow[A, Red], Arrow[B, Red], 
        Graphics[{Green, Polygon[{{0, 0}, A, A + B, B}]}], 
        Arrow[t A, Tail -> B, Blue], 
        Graphics[Text["B+tA", 1.1 (B + t A)]]}]; View2D[{Arrow[A, Red], Arrow[B + t A, Red], 
        Graphics[{Green, Polygon[{{0, 0}, A, A + B, B}]}], 
        Graphics[{Yellow, 
            Polygon[{{0, 0}, A, (1 + t) A + B, B + t A}]}]}]; B = B + t A; TableForm[matrix]

Clear[t]; t B[[2]] + 
      A[[2]]Solve[
      t B[[2]] + 
          A[[2]] == 0, t]

t = -(10/13); View2D[{Arrow[A, Red], Arrow[B, Red], 
        Graphics[{Green, Polygon[{{0, 0}, A, A + B, B}]}], 
        Arrow[t B, Tail -> A, Blue], 
        Graphics[Text["A+tB", 1.1 (A + t B)]]}]; View2D[{Arrow[A + t B, Red], Arrow[B, Red], 
        Graphics[{Green, Polygon[{{0, 0}, A, A + B, B}]}], 
        Graphics[{Yellow, 
            Polygon[{{0, 0}, B, (1 + t) B + A, A + t B}]}]}]; A = A + t B; TableForm[matrix]Print["Determinant = ?"];

Oriented Volume in 3D

3-D

Clear[F, G, H, O3d, matrix, Box]; matrix := {F, G, H}; Box := 
      Graphics3D[{Polygon[{O3d, F, F + G, G}], Polygon[{O3d, H, H + G, G}], 
          Polygon[{O3d, F, F + H, H}], Polygon[{F, F + G, F + G + H, F + H}], 
          Polygon[{H, H + G, H + G + F, H + F}], 
          Polygon[{G, G + H, G + H + F, G + F}]}]; F = {-4, 1, 1}; G = {2, 5, 1}; H = {1, -1, 4}; O3d = {0, 0, 0}; arrows = 
      View3D[{Arrow[F, Red], Graphics3D[Text["F", 1.1 F]], 
          Arrow[G, Red], Graphics3D[Text["G", 1.1 G]], Arrow[H, Red], 
          Graphics3D[Text["H", 1.1 H]]}]; Show[Box, arrows]; TableForm[matrix]Print["The oriented volume of the box = ", Det[matrix]]

Clear[t]; G[[1]] + 
      t F[[1]]Solve[
      G[[1]] + 
          t F[[1]] == 0, t]

t = (1/2); arrows = 
      View3D[{Arrow[F, Red], Graphics3D[Text["F", 1.1 F]], 
          Arrow[G, Red], Graphics3D[Text["G", 1.1 G]], Arrow[H, Red], 
          Graphics3D[Text["H", 1.1 H]], 
          Arrow[t F, Tail -> G, Blue], 
          Graphics3D[Text["G+tF", 1.1 (G + t F)]]}]; G = G + t F; Show[Box, arrows]; TableForm[matrix]

Clear[t]; H[[1]] + 
      t F[[1]]Solve[
      H[[1]] + 
          t F[[1]] == 0, t]

t = (1/4); arrows = 
      View3D[{Arrow[F, Red], Graphics3D[Text["F", 1.1 F]], 
          Arrow[G, Red], Graphics3D[Text["G", 1.1 G]], Arrow[H, Red], 
          Graphics3D[Text["H", 1.1 H]], 
          Arrow[t F, Tail -> H, Blue], 
          Graphics3D[Text["H+tF", 1.1 (H + t F)]]}]; H = H + t F; Show[Box, arrows]; TableForm[matrix]

Clear[t]; F[[2]] + 
      t G[[2]]Solve[
      F[[2]] + 
          t G[[2]] == 0, t]

t = -(2/11); arrows = 
      View3D[{Arrow[F, Red], Graphics3D[Text["F", 1.1 F]], 
          Arrow[G, Red], Graphics3D[Text["G", 1.1 G]], Arrow[H, Red], 
          Graphics3D[Text["H", 1.1 H]], 
          Arrow[t G, Tail -> F, Blue], 
          Graphics3D[Text["F+tG", 1.2 (F + t G)]]}]; F = F + t G; Show[Box, arrows]; TableForm[matrix]

Clear[t]; H[[2]] + 
      t G[[2]]Solve[
      H[[2]] + 
          t G[[2]] == 0, t]

t = (3/22); arrows = 
      View3D[{Arrow[F, Red], Graphics3D[Text["F", 1.1 F]], 
          Arrow[G, Red], Graphics3D[Text["G", 1.1 G]], Arrow[H, Red], 
          Graphics3D[Text["H", 1.1 H]], 
          Arrow[t G, Tail -> H, Blue], 
          Graphics3D[Text["H+tG", 1.2 (H + t G)]]}]; H = H + t G; Show[Box, arrows]; TableForm[matrix]

Clear[t]; F[[3]] + 
      t H[[3]]Solve[
      F[[3]] + 
          t H[[3]] == 0, t]

t = -(8/49); arrows = 
      View3D[{Arrow[F, Red], Graphics3D[Text["F", 1.1 F]], 
          Arrow[G, Red], Graphics3D[Text["G", 1.1 G]], Arrow[H, Red], 
          Graphics3D[Text["H", 1.1 H]], 
          Arrow[t H, Tail -> F, Blue], 
          Graphics3D[Text["F+tH", 1.2 (F + t H)]]}]; F = F + t H; Show[Box, arrows]; TableForm[matrix]

Clear[t]; G[[3]] + 
      t H[[3]]Solve[
      G[[3]] + 
          t H[[3]] == 0, t]

t = -(33/98); arrows = 
      View3D[{Arrow[F, Red], Graphics3D[Text["F", 1.1 F]], 
          Arrow[G, Red], Graphics3D[Text["G", 1.1 G]], Arrow[H, Red], 
          Graphics3D[Text["H", 1.1 H]], 
          Arrow[t H, Blue, Tail -> G], 
          Graphics3D[Text["G+tH", 1.2 (G + t H)]]}]; G = G + t H; Show[Box, arrows]; TableForm[matrix]

Print["Det[matrix] = 4*11/2*49/11 = ", Det[matrix]]

Oriented Area in 3D

3-D

Clear[F, G, H]; O3d = {0, 0, 0}; Parallelogram := Graphics3D[Polygon[{O3d, F, F + G, G}]]; F = {2, 5, 1}; G = {-4, 1, 1}; t = N[(1/Norm)[F]]; s = N[(1/Norm)[G]]; F = t F; G = s G; H = F\[Cross]G; arrows = 
      View3D[{Arrow[F, Red], Graphics3D[Text["F", 1.1 F]], 
          Arrow[G, Red], Graphics3D[Text["G", 1.1 G]], Arrow[H, Red], 
          Graphics3D[Text["H", 1.1 H]], Parallelogram}]; Print["|F|*|G|*Sin[Angle[F,G] =", Norm[F], "*", Norm[G], 
      "*", Sin[N[Angle[F, G]]], " = ", 
      Norm[F] Norm[G] Sin[N[Angle[F, G]]]]; Print["|H| = |F x G| = ", Norm[H]];

F = {-4, 1, 1}; G = {2, 5, 1}; t = N[(1/Norm)[F]]; s = N[(1/Norm)[G]]; F = t F; G = s G; H = F\[Cross]G; arrows = 
      View3D[{Arrow[F, Red], Graphics3D[Text["F", 1.1 F]], 
          Arrow[G, Red], Graphics3D[Text["G", 1.1 G]], Arrow[H, Red], 
          Graphics3D[Text["H", 1.1 H]], Parallelogram}]; Print["|F|*|G|*Sin[Angle[F,G] =", Norm[F], "*", Norm[G], 
      "*", Sin[N[Angle[F, G]]], " = ", 
      Norm[F] Norm[G] Sin[N[Angle[F, G]]]]; Print["|H| = |F x G| = ", Norm[H]];

F = {-1, 5, 1}; G = {-4, 3, 2}; t = N[(1/Norm)[F]]; s = N[(1/Norm)[G]]; F = t F; G = s G; H := F\[Cross]G; K = Proj[F, G]; arrows = 
      View3D[{Arrow[F, Red], Graphics3D[Text["F", 1.1 F]], 
          Arrow[G, Red], Graphics3D[Text["G", 1.1 G]], Arrow[K, Red], 
          Graphics3D[Text["K", 1.1 K]], 
          Arrow[-K, Tail -> F, Blue], 
          Graphics3D[Text["F-K", F - 1.2 K]], Graphics3D[Line[{K, F}]], 
          Arrow[H, Red], Graphics3D[Text["H", 1.1 H]], Parallelogram}]; 
    Print["|F|*|G|*Sin[Angle[F,G] =", Norm[F], "*", Norm[G], 
      "*", Sin[N[Angle[F, G]]], " = ", 
      Norm[F] Norm[G] Sin[N[Angle[F, G]]]]; Print["|H| = |F x G| = ", Norm[H]]; F = F - K; arrows = 
      View3D[{Arrow[F, Red], Graphics3D[Text["F", 1.1 F]], 
          Arrow[G, Red], Graphics3D[Text["G", 1.1 G]], Arrow[H, Red], 
          Graphics3D[Text["H", 1.1 H]], Parallelogram}]; Print["|F|*|G|*Sin[Angle[F,G] =", Norm[F], "*", Norm[G], 
      "*", Sin[N[Angle[F, G]]], " = ", 
      Norm[F] Norm[G] Sin[N[Angle[F, G]]]]; Print["|H| = |F x G| = ", Norm[H]];

Add to Your Copy of the Lexicon

You should add important translations between analytical and geometric formulations of topics throughout the course.  For example, in Chapter 16 we give the tangent to a curve both symbolically and graphically.  In Chapters 17 and 18 we connect the gradient to linear and nonlinear contour plots.  In Chapters 17 and 18 we give the normal to a plane and a surface symbolically and graphically.  As you learn an important new connection between algebra and geometry, add it to your lexicon.