Math Moments – Building a Curved Path

Finally, we have all the tools laid out and ready, we can focus on doing something constructive, or at least interesting, with the math we have learned.

Often in architecture, engineering, physics, math, chemistry, design, artwork, or any number of creative fields, we need to build paths (lines and curves) to describe motion or outline objects.

We already have drawn lines and hooked them together to make straight “angular paths”, like we did in orienteering, going in straight lines from point to point.

We start with a bunch of points placed in the order that we want our path to go through, P0, P1, P2, P3, P4.  We listed 5 here, but there could be any number of points on our path.  We will also start by looking at just the “x” coordinate of the first segment between the first two points, P0 and P1.  As we have seen, we can expand this into more dimensions (x, y, z) later.

Let’s look at the, now familiar, equation for the x coordinate of a line between the first two points P0:(x0, y0) and P1:(x1, y1):

    x(S) = x0 + Dx0*S

The independent variable “S” marks the distance traveled along this segment from P0, and the Dx0 is the x-direction of this segment between P0 and P1.  “S” starts at S=0 (at P0) and goes to S=S1 (at P1), where “S1“ is the distance of the line segment between P0 and P1.

Since this first segment of the path stops when the line reaches the end point (x1, y1) after traveling the distance between them, S1:

     x1 = x(S1) = x0 + Dx0*S1

thus

     x1 – x0 = Dx0*S1        and
     Dx0 = (x1 – x0)/S1

Substituting this expression for Dx0 into the equation of the line we get:

     x(S) = x0 + (x1 – x0)*S/S1

Notice that the ratio S/S1 can be thought of as a percentage and ranges from 0 to 1 as S goes from 0 to S1.  To avoid calculating lengths of the segments, we can use the substitution:

        t = S/S1

into the equation for a line and we get:

       x(t) = x0 + (x1 – x0)*t     where t goes from 0 to 1.

This turns out to be a very convenient way to write the equation of a line between two points.  With this equation, x(0) = x0 and x(1) = x1, and “t” marks the “percentage” traveled along the line segment, from 0% (t=0) to 100% (t=1).

Expanding this into two dimensions we get the equations for all 4 segments between the 5 points:

Segment 1:      (x(t), y(t)) = (x0, y0) + (x1-x0, y1-y0)*t
Segment 2:      (x(t), y(t)) = (x1, y1) + (x2-x1, y2-y1)*t
Segment 3:      (x(t), y(t)) = (x2, y2) + (x3-x2, y3-y2)*t
Segment 4:      (x(t), y(t)) = (x3, y3) + (x4-x3, y4-y3)*t

In each case, “t” goes from 0 to 1.  This is written out in full detail to make sure that you can see the pattern.  In two dimensions you can find the length of Segment 1 by S12 = (x1-x0)2 + (y1-y0)2.  The others are not written out, the pattern should be obvious.

Alright, we can draw lines between the points. Now let’s look at drawing curves between the points.  This becomes a bit harder to pin down because there literally are an infinite number of curves that could be drawn between these same 5 points.  We will have to specify the kind of curves we want.

We will learn how to draw curve segments between the points and put them together smoothly to form any continuous path we desire.  We could even use this math to find an equation that describes the path of a fly walking around on the ceiling.

One common way of doing this is to use a method called “cubic splines”.  With this method the coordinates of each curve are written as a “cubic” equation in t:

    x(t) = c0 + c1*t + c2*t2 + c3*t3

where we can pick any numbers we want for c0, c1, c2, and c3.  The numbers we pick determine the shape and position of the curve. We can also write this expression using the “dot” product we have discussed before:

    x(t) = (c0, c1, c2, c3).(1, t, t2, t3)

The “c”s are called the coefficients and the powers of “t” are called the basis functions.  We can now take the derivative of the x-coordinate as we learned in the last post.

      dx/dt = (c0, c1, c2, c3).(0, 1, 2*t, 3*t2)

as you recall, we can use these derivatives to find the direction of the tangent line at any point “t” along the curve.  As it turns out, we now have all the tools necessary to draw a “cubic spline” curve between the points.

We can pick “t” to be a “percentage of the curve” where “t” starts at t=0, the beginning of the curve, and goes to t=1 at the end of the curve (similar to how we drew lines).  And so:

    x(0) = (c0, c1, c2, c3).(1, 0, 0, 0)  =  x0 (Substitute t=0 into the equations above)
    x(1) = (c0, c1, c2, c3).(1, 1, 1, 1)  =  x1 (Substitute t=1 into the equations above)

written out this means:

    c0 + 0  + 0 +  0  = x0           and
    c0 + c1 + c2 + c3 = x1

and we have found that the coefficient c0 = x0 (the x-coordinate of the starting point) and the sum of the coefficients must add to x1 (the x-coordinate of the ending point).  This meets the conditions that the curve will start at the beginning point and end at the ending point.  We still need some more conditions to determine what the other c’s will be.

It is natural to also place conditions on the direction that the curve leaves the starting point and the direction it arrives at the ending point.  This is determined by the tangent direction (derivatives) at these points:

dx/dt(0)   = (c0, c1, c2, c3).(0, 1, 0, 0) = S0*Dx0
dx/dt(1)   = (c0, c1, c2, c3).(0, 1, 2, 3) = S1*Dx1

We can set S0, S1 and the directions Dx0 and Dx1 to be whatever we want and we can immediately see:

                c1                = S0*Dx0
    c1 + 2*c2 + 3*c3 = S1*Dx1

We have determined c0 and c1 from the starting point and the direction of the tangent at that point.  We can use substitutions to find the rest.  We have 4 equations and 4 unknowns and so we do this:

      3*c0 + 3*c1 + 3*c2 + 3*c3 = 3*x1   (multiply the sum by 3)
                       c1 + 2*c2 + 3*c3 = S1*Dx1  (from above)

Subtracting the second equation from the first and making substitutions for c0 and c1:

      3*c0 +   2*c1 +   1*c2 + 0*c3 = 3*x1 – S1*Dx1  (making subs)
      3*x0 + 2*S1*Dx0 + c2              = 3*x1 – S1*Dx1   (solve for c2)

          c2 = 3*x1 – 3*x0 – S1*Dx1 – 2*S0*Dx0      or
         c2 = 3*(x1 – x0) – (S1*Dx1+2* S0*Dx0)

          c3 = x1 – (c0 + c1 + c2)     (rearranging the sum)
          c3 = x1 – [x0 + S0*Dx0 + 3*(x1 – x0) – (S1*Dx1 + 2*S0*Dx0)]
          c3 = -2*(x1 – x0) + S1*Dx1 + S0*Dx0

and now we have found all the “c” coefficients.

We can now draw the curves between the points if we know the starting point (x0, y0), the ending point (x1, y1), the starting direction (Dx0,Dy0) and the ending direction (Dx1, Dy1). The S0 and S1 variables are arbitrary and can be varied to taste.  We now plug all of these coefficients into our original curve:

      x(t) = (c0, c1, c2, c3).(1, t, t2, t3)
      dx/dt = (c0, c1, c2, c3).(0, 1, 2*t, 3*t2)   = S0*Dx0 (tangent direction)

the y(t) equation follows exactly the same pattern (just substitute “y” for “x” in all the equations).  Voila, we have found a “cubic” curve that passes through these points and has these tangent directions.

We can now do the same for all of the curves between each pair of points, drawing curves through all of the points.  There is a little bit of wiggle room in these curve equations.  The S0, S1, … and direction parameters for the tangents at the points can be set at will.  Since the direction vectors are the same at the points, the curve will smoothly pass through the points in the same direction.  These direction vectors show the “nose” direction (Dx,Dy) and “speed” (S) that a fly would be traveling if it were walking along the curve. It is fun to program these equations into a computer that draws them and watch the curves change as you change the location of the points and the directions and magnitudes of the tangents at the points.  This is how most modern, curve-fitting software works.

Of course, you can use another set of “basis functions” rather than just the powers of “t”, if you wish, to possibly get a better fit on your curves.  You might also want to impose other conditions, such as minimum curvature.  Just remember, if you use more basis functions, you will have more equations to solve for, you will need more conditions, and you might need some experience in “linear algebra” to solve for the coefficients.  Happy curving!

Standard

Math Moments – Derivatives

We covered the concept of differential calculus in just the last post.  It is time to slow down just a bit, catch our breath, and explore more in depth what this all means.

First, we started out with the concept of a function.  We used the example of a curve in space where the x-coordinate (and all of the others) depend on an index “t” that indicates where each point is along this curve in space.

     x(t) = x-coordinate of a point at the index t

If you specify a “t” value, the function x(t) will give the x-coordinate of a point along the curve that corresponds to “t”.

It might not have been perfectly clear, but we assumed that the curve is made out of points that are infinitely close to each other (same as a line).  There are no gaps or kinks in the curve, such that when you increase “t” by an infinitesimally small amount “dt” it will return the coordinates of a point that is infinitesimally close along the curve.  This is the concept of a “smooth” or “continuous” function.

An example of this is a car traveling down a straight road.  Suppose the function x(t) shows how far the car has gone down the road at a time “t”.  At each time, “t”, the function x(t) will tell you the exact position of the car. Now since a car can’t instantaneously disappear from one point and appear in a new point, it always takes time to travel continuously between any two points, which means that if you look at the position of the car a billionth of a second later, the position will be very close to where it was before.

    As we discussed, “dt” is much smaller than a billionth of a second, it is the smallest amount possible without being zero.  If “t” has increased by a small amount, “t+dt”, then the x-coordinate also will have changed by a very small amount “dx”. This is what we mean by the expression:

           dx = x(t+dt) – x(t)

The derivative dx/dt is defined to be:

     dx/dt  = [x(t+dt) – x(t)]/dt

which indicates how fast “x” is changing in relation to a change in “t” at the point “t”.  We can now hopefully see why differential calculus is the mathematics of motion.  In the example of the car above, dx/dt is velocity of the car at any instant “t” along its path – it moves a distance dx in the time dt.

    In the example where:

    x(t)       =      t2
 x(t+dt)   =  (t+dt)2

   dx = x(t+dt) – x(t)
         =  (t+dt)2 –  t2
         = t2+2*t*dt + dt2 – t2   (the t2 cancels out)
         = 2*t*dt + dt2

and

    dx/dt = [x(t+dt) – x(t)]/dt
                 = 2*t       (when dt –> zero)

We say that the derivative of t2 is 2*t, which also indicates how fast x is changing in ratio to the change in t at every point along the curve.

This function and differential notation is very powerful, we can get the answers to some questions without even knowing the exact function.

Suppose that x(t) is the sum of two functions of t, f(t), g(t):

    x(t) = f(t) + g(t)    where f(t) and g(t) are smooth

     df = f(t+dt) – f(t)
     dg = g(t+dt) – g(t)

dx =         x(t+dt)                –       x(t)
         = f(t+dt) + g(t+dt)     –    (f(t) + g(t))
         = [f(t+dt) – f(t)] + [g(t+dt) – g(t)]
         =             df           +          dg

Thus the derivative is also the sum of the derivatives:

    dx/dt =  df/dt  + dg/dt.   

Suppose that x(t) is the product of two functions of t:

    x(t) = f(t)*g(t)    where f(t) and g(t) are smooth

   dx =           x(t+dt)          –       x(t)
         = f(t+dt)*g(t+dt)     –    f(t)*g(t)
         =[df + f(t)]*[dg + g(t)] – f(t)*g(t)
         = df*dg + df*g(t) + f(t)*dg + f(t)*g(t) – f(t)*g(t)
         = df*dg + df*g(t) + f(t)*dt

Thus the derivative is:

dx/dt = df*(dg/dt) + (df/dt)*g(t) + f(t)*(dg/dt)
            = (df/dt)*g(t) + f(t)*(dg/dt)     because df –> 0

dx/dt = (df/dt)*g(t) + f(t)*(dg/dt)

Notice that we must always divide differentials by differentials to get derivatives, and all differentials standing alone (dx, df, dg, dt) go to zero.

We can now use the product rule to get the derivative of:

    x(t) = t3 = t2 * t   {f(t) = t2,  g(t) = t}

we already know that df/dt = 2*t from above and

    dg/dt = [t+dt – t]/dt = 1

therefore since

dx/dt = (df/dt)*g(t) + f(t)*(dg/dt)

dx/dt =    (2*t)*t      +    t2*1
                  = 3*t2

By extending this we can show that for any power of t:

If x(t) = tn  =  t(n-1) * t

then

  dx/dt = n * t(n-1)

We can see where some of the derivative tables in your calculus book come from.

We will end off by finding the derivative for a ratio of functions:

    x(t) = f(t)/g(t)

   dx/dt = [f(t+dt)/g(t+dt)        –    f(t)/g(t)]/dt
               = [(df+f(t))/(dg+g(t)) –    f(t)/g(t)]/dt
               = [[g(t)*(df+f(t))-f(t)*(dg+g(t))]/(g(t)*(dg+g(t))]/dt
  = [g(t)*(df/dt) + f(t)*g(t)/dt – f(t)*(dg/dt) – f(t)*g(t)/dt]/ (g(t)*dg + g(t)*g(t))

and when df and dg –> 0,

    dx/dt  = [g(t)*(df/dt) – f(t)*(dg/dt)]/(g(t)*g(t))

When we learn the “algebra” of differentials, we can find derivatives for a vast array of smooth functions.

As we have seen, when we know the derivatives of a curve, we can find the direction of the tangent line at any point along the curve. Recall from the last post in 2-D:

    (Dx, Dy) = (dx/dt, dy/dt)/((dx/dt)2+(dy/dt)2)1/2

The nice thing about this notation is that it is easy to go to 3-D, 4-D, and as many -D’s that you want just by continuing the pattern.

Standard

Math Moments – Differential Calculus

Calculus deals with the mathematics of movement. In order to move from a starting point (x(S), y(S)), in 2-D, to the point next to it, you need to know how to move a tiny distance “dS” in some direction (Dx, Dy).  If we are moving along a line, then we already have a way to express this.  If (x(S+dS), y(S+dS)) is the function notation for the adjacent point along the line

(x(S), y(S)) = (x0, y0) + (Dx, Dy)*S

(we are writing this in function notation) then the line segment that connects them can be written (it works out):

       (x(S+dS), y(S+dS)) = (x(S), y(S)) + (Dx, Dy)*dS

Looking at just the x-coordinate this means:

     x(S+dS) = x(S) + Dx*dS   or

     x(S+dS) – x(S) = Dx*dS

Now it is pretty easy to see that when dS goes to zero, the distance between the x-coordinate of the ending point and the starting point  “x(S+dS) – x(S)” also goes to zero.  We can use our differential notation to express this:

       dx = x(S+dS) – x(S)

where “dx” is defined as the difference between the x-coordinates.  We now can write the differential expression:

       dx = Dx*dS

Recall that the small “dx” means differential (the infinitesimal distance moved, and the large “Dx” means the direction it moves.  See the diagram above.

Now we are ready to make the leap.  Even though dx and dS get as close as possible to zero, their ratio in this example is fixed:

                    dx/dS = Dx

This is because the Direction of the line segment is fixed and does not depend on the distance between points, no matter how small.

The concept of calculus is used to travel a tiny distance “dS” to arrive at an adjoining point.  No matter how small dS is, you can always cut it in half (dS/2) to find a point that is closer.  Recall that this concept allows us to “zoom in” to a single point throughout all eternity and never get to the point.  In calculus “dS” is called a “differential” and it is “infinitesimally” small (as close as possible to zero, without being zero).  This is the concept that makes Calculus a bit strange but also makes it interesting.

We can use the same concepts to describe what happens along a smooth non-linear curve (x(t), y(t)).  If we then move along the curve by increasing “t” by “dt”, an infinitesimal amount to the point (x(t+dt), y(t+dt)) then these two points on the curve are infinitesimally close to one another.  We define the differentials:

     (dx, dy) = (x(t+dt)-x(t), y(t+dt)-y(t))  or

        dx = x(t+dt) – x(t)

        dy = y(t+dt) – y(t)

Note that the variable “t” no longer denotes a distance, it is just an “index” that determines the position of the point on the curve.

Let’s consider an example, with just the x-coordinate.  Suppose

     x(t) = 1+ t2   then

     x(t+dt) = 1+ (t+dt)2 = 1+ t2 +2*t*dt + dt2

      dx = x(t+dt) – x(t) = 2*t*dt + dt2

      dx/dt = 2*t + dt

as dt goes to zero, we can ignore the “dt” term.

        dx/dt = 2*t

The line between these two points can be written as:

       (x(t+dt), y(t+dt)) = (x(t), y(t)) + (Dx, Dy)*dS

      (x(t+dt)-x(t), y(t+dt)-y(t)) = (Dx, Dy)*dS

Or   (dx(t), dy(t)) = (Dx, Dy)*dS

now dS2 = dx(t)2 + dy(t)2 or

          dS2 = [(dx(t)/dt)2 + (dy(t)/dt)2]*dt2

which shows that “dS” also scales with “dt”.

Once we know these relationships then we can solve for the direction (Dx(t), Dy(t)) of the line that connects two infinitesimally close points on the curve (x(t), y(t)) at the index “t”.  We use the function notation for the direction parameters to indicate that the direction of this “tangent” line depends on where it is along the curve.

Just as in the case of a line, even if dS, dt, dx, and dy go to zero, as the points get closer together, they could have ratios between them that do not go to zero.  Everything depends on the shape of the curve.  Certainly, we expect that the direction of the line will not necessarily change as the points converge.  Such a curve is called “differentiable”.

Let’s look at an example.  Suppose:

   (x(t), y(t)) = (t, t2)              then

   (x(t+dt), y(t+dt)) = (t+dt, (t+dt)2) = (t+dt, t2+2*t*dt + dt2)

   (dx(t), dy(t)) = (x(t+dt)-x(t), y(t+dt)-y(t)) = (dt, 2*t*dt+dt2)

    dS2 = dx2 + dy2 = dt2+(2*t*dt)2 = [1+(2*t)2]*dt2

since    (dx(t), dy(t)) = (Dx, Dy)*dS

              (dt, 2*t*dt+dt2) = (Dx, Dy)* [1+(2*t)2]1/2*dt

So    (Dx, Dy) = (dt, 2*t*dt+ dt2)/ [1+(2*t)2]1/2*dt

and  (Dx, Dy) = (1, 2*t + dt)/ [1+(2*t)2]1/2

And so, the direction of the line is well defined when “dt” goes to zero, and we add function notation:

     (Dx(t), Dy(t)) = (1, 2*t)/ [1+(2*t)2]1/2

This line direction is called the tangent to the curve at the point (x(t), y(t)).  At this point, this line will only touch the curve at this one singular point.

Also

   dS/dt = [1+(2*t)2]1/2

and all is solved for every location “t” on the curve.  Perhaps there are many questions remaining.  One of them being, for example, how to calculate the distance along the curve “S” from one point to another.  These questions will be left for other posts.

Standard

Math Moments – Functional Curves

So far, we have only described lines where the distance between any two points on the line is well defined by a “metric”.  Before we look at how to draw curves, let’s remind ourselves what a line looks like in math language:

     (x, y) = (x0, y0) + (Dx, Dy)*S

The starting point on the line is (x0, y0) and the direction the line takes (Dx, Dy) in a cartesian coordinate system, and “S” is the distance from the starting point. Note that “S” serves as an index or indicator for every point on the line. In math language, “S” is known as the “independent variable”. It determines the exact point on a line a distance “S” from the starting point. Of course, we assume we already know the starting point (x0, y0) and direction (Dx, Dy) of the line.

In “function notation” we put the independent variable (S) next to the “dependent variables” (x and y) in parenthesis to remind ourselves that if we pick a number for “S”, it will give us an exact point (x(S), y(S)) on the line:

     (x(S), y(S)) = (x0, y0) + (Dx, Dy)*S

This “function” notation is extremely helpful. We can use this notation to replace the variable “S” with any number or symbol we wish. For example, let us replace the variable “S” with “t” (like a “cut-paste” of “S” with “t”):

     (x(t), y(t)) = (x0, y0) + (Dx, Dy)*t

We can even replace “S” with a mathematical statement:

     (x(S+3), y(S+3)) = (x0, y0) + (Dx, Dy)*(S+3)

The rule is that whatever goes in the parenthesis in function notation it is substituted into the “function” at the appropriate place.

Now we can start drawing curves by considering functions that are “non-linear” (they don’t draw a line).  We have already looked at how to draw a circle.  You may recall that we use the same equation for a line, but instead of varying the distance “S” we varied the direction (Dx, Dy) = (Cos(t), Sin(t)), where “t” is the angle off the x-axis.  So, the equation for a circle of radius S=1, centered at (x0, y0) = (0, 0) would be written:

        (x(t), y(t)) = (Cos(t), Sin(t))

where “t” goes from 0 to 360 degrees.  We could also draw just any arc of the circle by determining the range that the angle “t” spans, for example, a quarter circle is drawn when t goes from 0 to 90 degrees.  You get the idea.

We should mention at this point that we chose “t” as the “index” that indicates where any point is on the curve.  It doesn’t tell us how much distance traveled along the curve, or even the time that it takes for a point to travel along the curve.  It is just taken as a general parameter.  In the case of the circle of radius 1, we know that the circumference is 2*Pi over 360 degrees and so the distance traveled along the circle from 0 to the angle “t” is S = 2*Pi * (t/360).

Now we can have fun drawing a bunch of curves, using this function notation.

An oval that has major axis 3 and minor axis 2 has this equation:

        (x(t), y(t)) = (3*Cos(t), 2*Sin(t))

A spiral that starts at (0, 0) and goes to (1, 0) is drawn by this equation:

        (x(t), y(t)) = ((t/360)*Cos(t), (t/360)*Sin(t))

We can also draw curves in 3-dimensions just as easily; here is a spiral around a cone:

      (x(t), y(t), z(t)) = ((t/360)*Cos(t), (t/360)*Sin(t), t/360)

We can use any non-linear equation to draw a curve, like:

(x(t), y(t)) = (-2*t+3*t2, 2*t2-5*t3+4*t4)

We could keep going all day, curves are always visually interesting.

Later we will see how we can hook curves together to form any shape we want, but first we need another tool to analyze curves, differential calculus.  It really is not as difficult as you might think, so keep tuned.

Standard

Math Moments – Finding Directions in 4-D

As we enter dimensions beyond our physical experience, it might help our understanding to look back and see patterns in smaller dimensions that still apply in larger dimensions.  Is there such a pattern when finding directions (Dx, Dy, Dz, Dt) in 4 dimensions or larger.  One obvious pattern, as dimensions increase, is the way we measure distance:

   1-D:         Dx2 = 1
   2-D:         Dx2 + Dy2 = 1
   3-D:          Dx2 + Dy2 + Dz2 = 1
   4-D:          Dx2 + Dy2 + Dz2 + Dt2 = 1

The pattern for higher dimensions is obvious. We expect this pattern to continue to any number of dimensions; we just keep adding on perpendicular triangles.  See the diagram above.

There is one problem with setting directions in higher dimensions that is not so obvious. For example, in 1-D, Dx2 = 1 means that Dx = 1 or Dx = -1, this defines the directions to be along the positive or negative x-axis.  So far so good. In 2-D, however, when Dy2 = 1, it forces Dx2 = 0, which does not indicate either a positive or negative direction along the x-axis.  This ambiguity is due to the rotational symmetry of perpendicular lines, as we have mentioned before, you can “flip” negative and positive directions around a perpendicular direction, and nothing changes.

This ambiguity of direction exists whenever we add a new dimension.  In 3-D, for example, when Dz2 = 1, it forces Dx2 + Dy2 = 0 and there are ambiguities as to where to place the direction of both the x-axis and y-axis.  To a man standing exactly on the north pole, for example, every direction is south, there is no east and west.  I have also heard it said that no matter how you comb the fuzz flat on a tennis ball, there will always be a part (singularity).

To deal with these ambiguities when any of our direction parameters is zero, it is helpful to fix the angles of the x-axis, y-axis, z-axis, etc. so that directions will not be ambiguous when you pass through the “singularities” where one or more of the direction parameters are forced to be zero.  So a man standing on the north pole, where every direction is south, still knows which angle to face if he wants to point to Paris, France.  This makes defining directions consistent.

Let us look at a way to define directions as we are increasing dimensions. We defined the angle Axy to be the angle from the x-axis in the x-y plane.  Then we defined the angle Az to be the angle off of the x-y plane in the z direction.  Listing the direction parameters for the dimensions we know:

   2D: D2 = (D2x, D2y) = (Cos(Axy), Sin(Axy))
   3D: D3 = (D3x, D3y, D3z) = (D2x*Cos(Az), D2y*Cos(Az), Sin(Az))
                 = (D2x, D2y, 0)*Cos(Az) + (0, 0, 1)*Sin(Az)

We added the “2” and “3” subscripts to indicate the dimension.

It might take you a few minutes to see the pattern.  Expanding into 4-D, we define the angle At to be the angle off the x-y-z space toward the t-axis, then continuing the pattern, the direction in 4-D is:

    D4 = (D4x, D4y, D4z, D4t) = (D3x, D3y, D3z, 0)*Cos(At) + (0, 0, 0, 1)*Sin(At)

    So putting them together and stacking them we get:

         D4x = Cos(Axy)*Cos(Az)*Cos(At)
         D4y = Sin(Axy)*Cos(Az)*Cos(At)
         D4z =                   Sin(Az)*Cos(At)
         D4t =                                   Sin(At)

And we have found the Direction parameters in 4-D, and hopefully we can see the pattern that will allow us to use the same scheme to find directions in any dimension. An interesting side note: The angle in the t-direction, At, determines how close the 4-D direction is to the t-axis. When it gets close to 90 degrees, the direction is close to the t-axis and Cos(At) is close to zero, and D4x, D4y and D4z are close to zero, this restricts motion in the x-y-z space. The faster time is moving, the more restricted the motion is in 3-D space. How strange. We will see just how strange in the following post.

Standard

Math Moments – What do Dot Products Mean?

We have seen the power of the dot products between two direction vectors.  We have shown that the dot product between two perpendicular directions is zero.  We will review this in two dimensions, because it is easier to see. Using our head reference the nose direction in 2-D is N:(Dx, Dy) and the Left ear direction is L: (-Dy, Dx):

   N.N = (Dx, Dy).(Dx, Dy) = Dx2 + Dy2 = 1
   N.L = (Dx, Dy).(-Dy, Dx) = -Dx*Dy + Dy*Dx = 0

We have also seen that we can travel to any point in 2-D (x, y) by traveling in the N direction a distance SN and then turning left and traveling in the perpendicular L direction another distance SL:

    (x, y) = N*SN + L*SL

And then we used the power of the direction dot products to see what happens when we dot these direction vectors with any point (x, y) in the 2-D space:

   N.(x, y) = N.(N*SN + L*SL) = N.N*SN + N.L*SL = 1*SN + 0*SL
                  = SN

    L.(x, y) = L.(N*SN + L*SL) = L.N*SN + L.L*SL = 0*SN + 1*SL
                 = SL

Written in concise dot product notation:

      [N, L].(x, y) = (SN, SL)

This means that dotting these “head direction vectors” (N, L) with any point gives you back the coordinates of the point in the “head frame of reference” (SN, SL), the distance traveled in the Nose direction and the distance traveled in the Left direction to arrive at the point.  From the last post, in 3-D, we saw that SN is the distance from the Nose to the perpendicular View Plane where the point lives.

We can conclude that in any dimension, if we dot the Nose direction (N) with any point we get back the “nose coordinate” in the “nose frame of reference” (SN):

     N.(any point) = SN

It might take a few moments of thought for this to sink in, but when it does, we start to realize that we can convert any point into the “nose frame of reference” no matter where our nose is pointing.  It is like rotating the reference frame into any direction we want and converting the coordinates into this “nose frame of reference”.

We might ask what happens when we dot two direction vectors together that are not perpendicular.  Suppose we have two Nose directions (N1 and N2) in 2-D:

   N1 = (Dx1, Dy1)
   N2 = (Dx2, Dy2)

Since any point (x, y) can be expressed in the N1 frame of reference, (Dx2, Dy2) can also be written in the N1 frame:

  (x, y) = N1*SN + L1*SL
  N2 = (Dx2, Dy2) = N1*SN + L1*SL

Refer to the diagram above for clarification.  Now we can easily see what happens when we dot N1.N2:

    N1.N2 = N1.(N1*SN + L1*SL) = N1.N1*SN + N1.L1*SL
               = SN

Now from the diagram we also can see that SN is just the Cos(A) because the length of N2 is 1, where A is the angle between the two directions:

   N1.N2 = Cos(A)

So, when we dot two direction vectors together, we get the Cosine of the angle between them.  This is consistent with what we have seen, because when the two directions are the same, A = 0 degrees, and when they are perpendicular, A = 90 degrees. Cos(o) = 1 and Cos(90) = 0 this is consistent with what we have shown when dotting direction vectors together so far.

   I have earned some good money from knowing this.  On one occasion, a ship captain wanted me to find the distance between two points in the ocean given the longitude and latitude of each point.  Recall that the longitude and latitude is the same as the “head direction” as seen from the center of the earth. (Axy1, Az1 and Axy2, Az2).

I realized that if I could find the angle between these two “head” directions (A), I could find the distance between the two points along the surface of the earth.  Since I know that the circumference of the earth (CE), the distance between the points is CE*(A/360).  I found N1 (the direction vector to the first point) and N2 the direction to the second point, dotted them together to find the angle: N1.N2 = Cos(A), and took home a large check (he still uses it to navigate).  Could you fill in the details?

Standard

Math Moments – How to Project 3-D on a 2-D Flatscreen

No matter where we turn our head in our 3-D world, we see the world projected on the 2-D “screen” in the back of our eyes.  These days, flat screens and cell phones are everywhere, they can display 2-D images on a flat surface that our brain interprets as being projections into a 3-D world.  From the last post, we are now equipped with math language to describe how this projection works.

We can imagine that everything we see in front of our face is displayed on a big flat screen that is always a certain fixed distance in front of our nose and moves around with our head (it could be transparent).  Let’s call this screen the “View Plane” and say that it is always placed a fixed distance (SV) perpendicular to our Nose direction (N).  This is not hard to imagine, I see lots of people carrying their cell phones around like this in front of their face all the time.

Your personal reference point (0, 0, 0), the origin, is always between your ears, the Nose direction (N), always points straight out in front of your face, the Left Ear direction (L) always points in the direction of your left ear, and the Top of head direction (T) always points through the top of your head.  This personal reference frame moves as you change the orientation of your head.

Since the View Plane in front of you is 2-D, every point on this screen can be located on a 2-D “xv-yv plane”.  Let’s draw such Cartesian coordinates on our View Plane. We choose the origin of the View Plane (0, 0) to be where our Nose direction (N) passes through the plane. We can choose the xv-axis on the plane to point to the right (opposite the L direction), and then the yv-axis would point in the Top of Head direction (T).

A single point (pixel) on this 2-D view screen (xv, yv), with a color (cv), can also be located in the 3-D world.  Start at the origin (0, 0, 0), the middle of your head, then travel a distance Sv in the N direction to arrive at the origin of the View Plane (0, 0), then from there travel along the xv-axis (in the negative L direction) a distance xv, and then along the yv-axis (in the T direction) a distance yv.  From our orienteering days, we already know how find this 3-D point in math language:

    (x, y, z) = N*Sv + (-L)*xv + T*yv
                   = [N, L, T].(Sv,-xv,yv)

And so, we can find the 3-D coordinates for any point on the 2-D View screen (xv, yv) when we know the distance to the view screen (Sv) and the orientation of the head (N).  In review, the middle of the head is always at the origin (0, 0, 0) and you are looking in the Nose direction N:(Dx, Dy, Dz) in the 3-D world, the direction vectors of the head reference frame are:

         N = (Dx, Dy, Dz)
         L = (-Dy/Dr, Dx/Dr, 0)
         T = (-Dx*Dz/Dr, -Dy*Dz/Dr, Dr)

         Dr2 = Dx2 + Dy2

In the Cartesian frame of the 3-D world around us the orientation of our head can be determined by two angles (Axy and Az).  As you remember, Axy is the angle we have rotated our head left or right in the x-axis in the x-y plane, and Az is the angle that we have tilted our head up or down off the x-y plane.  In review, the direction vector of the head is found from the following:

       Dx = Cos(Axy)*Cos(Az)
       Dy = Sin(Axy)*Cos(Az)
       Dz = Sin(Az)

The dot products of the [N, L, T] head reference vectors are:

   N.N = L.L = T.T = 1
   N.L = N.T = L.T = 0

since they are all perpendicular to each other.
We also find that:

     N.(x, y, z) = N.( N*Sv + L*(-xv) + T*yv )
                        = N.N*Sv + N.L*(-xv) + N.T*yv
                        = 1*Sv + 0*(-xv) + 0*yv
                        = Sv

     L.(x, y, z) = L.( N*Sv + L*(-xv) + T*yv )
                        = L.N*Sv + L.L*(-xv) + L.T*yv
                        = 0*Sv + 1*(-xv) + 0*yv
                        = -xv

     T.(x, y, z) = T.( N*Sv + L*(-xv) + T*yv )
                        = T.N*Sv + T.L*(-xv) + T.T*yv
                        = 0*Sv + 0*(-xv) + 1*yv
                        = yv

Another way of writing these stacked equations with dot products is simply:

      [N, L, T].(x, y, z) = (Sv, -xv, yv)

So, we can see that with this miracle matrix [N, L, T] can map a point in 3-D space onto a point (xv, yv) on a View Plane that is a distance Sv away.

Let’s finish this idea off.  Suppose we have any point in 3-D space (x, y, z), then

[N, L, T].(x, y, z) = (SN, -xN, yN)

maps (x, y, z) onto a point (xN, yN) on 2-D view plane that is a distance SN away from your nose.  Using simple geometry, this point can be mapped onto a point (xv, yv) in any parallel View Plane that is a distance Sv away by using:

    (xv, yv) = (xN, yN)*Sv/SN

And so, we can map a 3-D world onto a 2-D view plane.  Our brain perceives these 2-D images from colored points (pixels) from our flat screens as 3-D images.

Standard

Math Moments – Navigating in 3-D Space

We can navigate in 3-D to any point (xR, yR, zR), in Cartesian Coordinates, by starting at the origin (0, 0, 0) and in the 2-D, x-y plane, walking in the x-direction (1, 0, 0) a distance xR, then turning left 90 degrees and walking a distance yR in the y-direction (0, 1, 0), still on the x-y plane.  This is the same as we did in 2-D except we put an extra ‘0’ in the third ‘z’ direction.  At this point we are still on the x-y plane at the point (xR, yR, 0).  The z-direction is straight up, so we would now need a ladder to climb up or a shovel to dig down, it is helpful to pretend we can fly (or dig).  From this point (xR, yR, 0) on the x-y “ground” plane, we fly straight up in the z-direction (0, 0, 1) a distance zR, and we successfully arrive at the point (xR, yR, zR).

We can express this journey with vectors, as we did in 2-D, by connecting (adding) lines together to form the path:

   (xR, yR, zR) = (1, 0, 0)*xR + (0, 1, 0)*yR + (0, 0, 1)*zR
                        = (xR, 0, 0) + (0, yR, 0) + (0, 0, zR)
                        = (xR, yR, zR)

        And using dot product notation, this can be written:

   (xR, yR, zR) = (1, 0, 0)*xR + (0, 1, 0)*yR + (0, 0, 1)*zR
                        = [(1, 0, 0), (0, 1, 0), (0, 0, 1)].(xR, yR, zR)

The [(1, 0, 0), (0, 1, 0), (0, 0, 1)] matrix is called the identity matrix.

We could also arrive faster by flying along a straight line connecting the two. Fly along a direction (Dx, Dy, Dz), from the origin directly to this point, (xR, yR, zR) a distance “R” away:

   (xR, yR, zR) = (Dx, Dy, Dz)*R

        Where the distance ‘R’ is found by:

    R2 = xR2 + yR2 + zR2

From the equation above for this line, we can easily find the direction vector from the origin to any point (xR, yR, zR), similar to what we did in 2-D.

      (Dx, Dy, Dz) = (xR/R, yR/R, zR/R)

Recall that the direction vector always has a distance of 1 unit, as seen in the diagram above.  In the diagram, we have attempted to show a 3-D path on a 2-D piece of paper.  Note that in the diagram, Dr is the distance from the origin to the point (Dx, Dy, 0) in the x-y plane. From the Pythagorean theorem, we find that the length:

      Dr2 = Dx2 + Dy2    and
      Dr2 + Dz2 = 1        thus combining these
      Dx2 + Dy2 + Dz2 = 1.

The total length of the distance vector is 1 unit, as required.  Everything is consistent.  Now we use the definition of the ‘Sin’ and ‘Cos’ and can see, from the diagram above, that:

     Cos(Axy) = Dx/Dr
     Sin(Axy) = Dy/Dr

      Cos(Az) = Dr/1
      Sin(Az) = Dz/1

    Thus

       Dx = Cos(Axy)*Dr = Cos(Axy)*Cos(Az)
       Dy = Sin(Axy)*Dr = Sin(Axy)*Cos(Az)
       Dz = Sin(Az)

And so, if we stand at the origin facing in the x-direction, and rotate our “head” an angle Axy to the left, and then tilt our head an angle Az off the x-y plane to look directly at the point (xR, yR, zR), we can find the direction vector pointing to this point using these angles:

   (Dx, Dy, Dz) = (Cos(Axy)*Cos(Az), Sin(Axy)*Cos(Az), Sin(Az))

       And then draw the line to this point:

    (xR, yR, zR) = (Dx, Dy, Dz)*R

Now that we are staring at a point in the sky, with our nose pointed directly at the point, we can ask about “reference frame” of our head.  What direction is our left ear pointing, for example.  Our left ear is pointing in the direction, still in the x-y plane, that is 90 to the left of the Axy angle we rotated our head (-Dy/Dr, Dx/Dr, 0). We divide by Dr because in 3-D we must make the length of the direction vector equal to 1.  If this seems vague, look back and review how to find 90 degree directions in the 2-D plane in the top diagram taken from previous posts.

When we tilt our head, we can ask what is the direction that the top of our head points, 90 degrees up from the angle Az. It perhaps takes a bit more imagination to see this, since we are facing in the x-y plane (Dx/Dr, Dy/Dr, 0) and have tilted our head up to look at Dz, we find that the “shadow” of our head is pointed behind us, in the x-y plane (-Dx/Dr, -Dy/Dr, 0), then looking at the elevation Dr (when rotated 90 degrees) we find that (-Dx*Dz/Dr, -Dy*Dz/Dr, Dr) is the direction of the top of our head.  So, in the reference frame of our head:

     Direction of our Nose:     (Dx, Dy, Dz)
     Direction of Left ear:         (-Dy/Dr, Dx/Dr, 0)
     Direction of Top of head:  (-Dx*Dz/Dr, -Dy*Dz/Dr, Dr)

Let us verify that these direction vectors all have a length of 1.  The Nose direction we have verified.  For the Left ear direction:

    L.L = (-Dy/Dr)2 + (Dx/Dr)2 + 02 = (Dy2 + Dx2)/Dr2 = 1

For the Top of head direction:

    T.T = (-Dx*Dz/Dr)2 + (-Dy*Dz/Dr)2 + Dr2 = (Dy2 + Dx2)*Dz2/Dr2 + Dr2
                                                                    = Dz2 + Dr2 = 1

Now let’s find what happens when we find the dot product of these direction vectors, we will call them the N, L, and T directions respectively.

N.N = (Dx, Dy, Dz).(Dx, Dy, Dz) = Dx2 + Dy2 + Dz2 = 1

N.L = (Dx, Dy, Dz).(-Dy/Dr, Dx/Dr, 0) = -Dx*Dy/Dr + Dy*Dx/Dr + 0
                                                                  = 0

N.T = (Dx, Dy, Dz).(-Dx*Dz/Dr, -Dy*Dz/Dr, Dr)
        = -Dx2*Dz/Dr + -Dy2*Dz/Dr + Dz*Dr
        = -(Dx2 + Dy2)*Dz/Dr + Dz*Dr
        = -Dr2*Dz/Dr + Dz*Dr
        = 0

L.T = (-Dy/Dr, Dx/Dr, 0).( -Dx*Dz/Dr, -Dy*Dz/Dr, Dr)
       = Dy*Dx*Dz/Dr2 + -Dx*Dy*Dz/Dr2 + 0
       = 0

We also verified that L.L = 1 and T.T = 1 above.  So, in general, if we dot any of these N, L, T direction vectors with themselves, we get ‘1’, but if we dot any of them with each other, we get ‘0’.  It turns out that this is a requirement for any three perpendicular direction vectors in a 3-D Cartesian reference frame.  I find the “head” reference frame to be more natural because we can relate to it better, so I use this reference frame for whatever direction I am looking.  It is also a great reference frame for video games.

We have already seen from perpendicular 2-D paths how we can convert between a reference frame to our “ground” x-y-z reference frame.  To understand this, let’s take a journey: Fly in the Nose direction a distance SN, then fly in the Left ear direction a distance SL, and then in the Top of head direction a distance ST.  Then we will arrive at the point:

    (x, y, z) = N*SN + L*SL + T*ST

       or in dot product notation:

     (x, y, z) = [N, L, T].(SN, SL, ST)

This amazing equation lets you convert any point in your “head frame” of reference (SN, SL, ST), when your Nose is pointing in a direction N:(Dx, Dy, Dz), to a point in the “ground” frame (x, y, z).  You might also want to do this the other way around.  Review how we did this in 2-D, by “dotting” each side by each of the direction vectors, we get:

    (SN, SL, ST) = [N, L, T].(x, y, z)

This is how video games convert a 3-D world, stored in “ground” (x, y, z) coordinates, into the perspective of the viewer’s head (SN, SL, ST) coordinates.  The details need to be worked out but using this equation we can map a 3-D world onto a 2-D screen in the viewer’s perspective, no matter the relative direction of the viewer’s head.  We will stop here, there is a lot to take in.

Standard

Math Moments – Review and 3-Dimensional Expansion

All the concepts that we have discussed so far can be expanded into new dimensions.  We have only been looking at two dimensions so far, and yet we live in a world of 3 physical dimensions.  Although mathematically we don’t have to stop at 3 dimensions, we could expand the same concepts to work in as many dimensions as we want. First, let’s start by generating a 3-dimensional space from the 2-dimensional space we have been working in.

Do you remember how we generated new dimensions? Look back to the expanding dimensions post to refresh your memory. Take the 2-dimensional x-y plane where we have been working and find a point “P” that is NOT in it.  Now imagine line segments between every point in our 2-D space (x-y plane) and the new point P.  Find the point on the x-y plane (2-D space) that forms the line segment with the shortest distance to P and label it “O”.   Call this minimal distance “r”.

We can choose the point O to be the origin on the x-y plane and pick an x-direction for the x axis, which also determines the direction for the y-axis.  We can now use the same diagram above, the same procedure (and a bit of imagination) to generate a 3-D space from a 2-D space with one observation. In our original 1-D space there were only two directions from the point O, negative (O-) and positive (O+).  In the 2-D space, there are an infinite number of directions pointing away from the point O, and each direction is indistinguishable from any other direction.

We can use this rotational symmetry to generate our 3-D space.  Imagine that you printed the diagram above and on a sheet of paper and placed it so that the point O is on the origin of the x-y plane, the point P (the new point) is above the x-y plane, and make the x-axis go through the O+ point.  The sheet (plane) of our diagram would now be perpendicular (vertical) to the x-y plane.  The same argument holds that since the O-P segment is the shortest one that connects the x-y plane it is an axis of symmetry.

We call this new O-P direction the “z” axis.  Now imagine rotating this diagram around the z axis.  The O+ point would trace out a circle on the x-y plane, and touch every point on the plane that is a distance “r” from point O.  The distance from every one of these points on this circle would also be the same distance from P.  The segments P-O+ would sweep out the surface of a cone as we rotated the diagram around the z axis, and parallel lines would sweep out parallel planes along the z axis. We can rotate our sheet of paper around the z-axis to any angle and the cross section would still remain the same. Can you see it?

We can use the same trick as before, we can imagine that these parallel planes are mirrors facing each other that will reflect an infinite array of parallel planes to the x-y plane along the z axis, thanks to reflection symmetries.  We can also make an infinite set of parallel planes along the x axis, and along the y-axis by processes similar to those we did before in 2-D to make a cartesian “grid” of planes and fill in all the gaps.

Note that the line segment O-P does not move when we rotate the diagram around it.  It is stationary under rotation.  Now we have fully leveraged the rotational and reflectional symmetries of 3-D space.  We can pick any axis of rotation (a line), rotate the universe around it, and the universe will remain unchanged, only our vantage point changes.

As always, we can pick any point in 3-D space to be the reference point (origin). And any 2 perpendicular directions (an x and y axis) can be chosen to define a 2-D plane, and the third direction (z axis) perpendicular to this x-y plane is determined. These three directions define how we write points in this new 3-D space.

In cartesian coordinates,  the vector (x, y, z) can label every point and (Dx, Dy, Dz) can label every direction.

Lines in 3-D space can be defined by:

   (x, y, z) = (x0, y0, z0) + (Dx, Dy, Dz)*S

Where (x0, y0, z0) is the point of origin for the line, (Dx, Dy, Dz) is the direction of the line, and “S” is the distance along the line from the origin.  At this point, this notation should not be difficult or surprising.  The above is also an equation for a sphere if you hold S constant to be the radius and vary the direction.

There might be some questions on how you can determine directions in 3-D space. Similar to 2-D space, the direction vector always has a length of 1 unit:

    Dx2 + Dy2 + Dz2 = 1

A natural way to determine directions is by using your head.  Stand facing North (the x-axis), now rotate your head an angle “Axy” to the left (West towards the y-axis).  You can determine every direction on the x-y plane with this angle Axy (between -180 and 180 degrees).  Now tip your head up an angle “Az” off the x-y plane (between -90 and 90 degrees).  Varying these two angles, you can now look in any direction possible in 3-D space.

This is also how we locate positions on the spherical surface of the earth.  We place an imaginary observer in the middle of the earth and have it “face” 0 degrees longitude and 0 degrees latitude (the x-axis).  The Axy angles are degrees of longitude as the observer rotates its head around the north pole (z-axis), and the Az are degrees of latitude as the observer tips its head up and down.  Using this scheme the observer can look at any place on the surface of the earth given a longitude (Axy) and latitude (Az).

Standard

Math Moments – The Rotation Matrix

On the Cartesian plane, if we walk along the x-direction (1, 0) for a distance of 4 units, then turn left 90 degrees (perpendicular) and walk a distance of 3 units, we arrive at the point (4, 3), which is a distance of 5 units from the origin (42 + 32 = 52), great.  Well, what happens if we do the same, but start off walking in any direction (Dx, Dy) 4 units and then turn left 90 degrees (-Dy, Dx) and walk 3 units; we are still 5 units from the origin.  We have just “rotated” the whole path to a new direction.  Where would we end up (x, y)?  We use our orienteering skills:

     (x, y) = (Dx, Dy)*4 + (-Dy, Dx)*3
     (x, y) = [(Dx, Dy), (-Dy, Dx)].(4, 3)  –  using the dot product

Now notice that the matrix [(Dx, Dy), (-Dy, Dx)] when dotted with the cartesian point (4, 3) rotates it to another point on the circle (radius 5).  See the diagram. This matrix is called the “rotation matrix”.

Now that we are getting a bit more comfortable with the dot product, let’s play around and see what happens when we dot direction vectors with each other?  We’ll start off by dotting a direction with itself:

     (Dx, Dy).(Dx, Dy) = Dx2 + Dy2 = 1

Any direction dotted with itself is just “1”.  What about dotting a direction with its perpendicular direction?

    (Dx, Dy).(-Dy, Dx) = Dx*(-Dy) + Dy*Dx = 0

It turns out that any direction dotted with its perpendicular direction is “0”.  Now how about dotting the position (x, y) above with the direction vector?

   (Dx, Dy).(x, y) = (Dx, Dy).((Dx, Dy)*4 + (-Dy, Dx)*3)
                             = (Dx, Dy).(Dx, Dy)*4 + (Dx, Dy).(-Dy, Dx)*3
                             = 1*4 + 0*3
                             = 4

And so, dotting a direction vector (Dx, Dy) with any position vector (x, y) gives you the distance (Sx) you would have to travel in that direction before making a 90 turn and traveling the distance (Sy) that would bring you to the position (x, y).  Now let’s dot the perpendicular direction with the position vector:

   (-Dy, Dx).(x, y) = (-Dy, Dx).((Dx, Dy)*4 + (-Dy, Dx)*3)
                             = (-Dy, Dx).(Dx, Dy)*4 + (-Dy, Dx).(-Dy, Dx)*3
                             = 0*4 + 1*3
                             = 3

You can see that dotting the perpendicular direction with a position also gives you the distance (Sy) you would have to travel in the perpendicular direction (-Dy, Dx) to get to the position (x, y).

And so can you see that in this case:

     [(Dx, Dy), (-Dy, Dx)].(x, y) = (4, 3)

So in general if

     (x, y) = [(Dx, Dy), (-Dy, Dx)].(Sx, Sy)

              then

     [(Dx, Dy), (-Dy, Dx)].(x, y) = (Sx, Sy)

What does this mean?  The rotation matrix […] when it “operates” on (is dotted with) any point (x, y), gives you the coordinates of the point relative to a new set of “x-y” axis that is pointing in a direction (Dx, Dy) relative to the old axis.  Or you can say that it rotates the point around the origin.  Either vantage point is valid, you can rotate the point around the origin or rotate the reference frame in the opposite way around the origin; either way, it is describing the same thing.

Remember the concept of “rotational symmetry”, that we can pick the direction of the x-y axis to be in any direction we want.  Now we have the tools to convert the cartesian coordinates of a set of points from any reference frame to a reference frame pointing in any direction we choose.

THIS IS A FUNDAMENTAL CONCEPT of the MATH Language: ROTATIONAL SYMMETRY means that the universe is the same no matter the direction of your frame of reference.  The Rotation matrix gives you a way of describing the same universe from any prospective of direction.  It is pure magic.

One more point, remember that

   (Dx, Dy) = (Cos(A), Sin(A))

Where “A” is the angle of the direction off x-axis.  Thus, the rotation matrix “R(A)” can be written as:

     R(A) = [(Cos(A), Sin(A)), (-Sin(A), Cos(A))]

And there you have it.

Standard