What if I could come up some symbols, attach them to my numbers, and give addition and multiplication special rules when I apply them to the symbols (but not, of course, the numbers)? Working through Diamond's structural superposition method gave me exactly this impression:

q x /q <- rotate x using q

...

Q x_i Q^-1 <- apply rotations and scaling to x using Q? Maybe I can even single out a particular x_i.

Unfortunately for me, none of the terms in the title of this paragraph made any sense to my vectorized brain at the time. However, like Alice, I persisted a little in this new world of literary nonsense. What I found was a connection to intersecting shapes, symmetry theory, 4-D spacetime, a new way to understand imaginary numbers, and a multiplication operation that can intersect spheres and spiral objects through space.

All of it can be done by attaching special symbols to numbers. We're all familiar with the unit vector directions, for example

2 x - 3 y + 0 z

adding directions should only combine things that are measured in the same units, so we can't combine 2 x and -3 y. What about multiplying?

What is the product of two directions? To start, we should note that x means something different than -x. The x itself is supposed to have a direction, and the "2" above is how many steps we take in that direction. The product of two directions should also have some kind of orientation. Hamilton wanted the product to be invertible, so we could get "a" back from "ab" after somebody had gone off and multiplied it with "b". It should also have a geometric meaning. So there you have it, we multiply "a" and "b" directions by performing a geometric operation on "a" that does not loose information. I'm sure you can picture two vectors, making an L on the table, and then falling over to represent this kind of operation. That's a good idea (actually the quaternion rotation I mentioned earlier), but it adds another, un-introduced direction. We want the result to stay in the (a-b) space, or not have a direction at all.

So, we revise this idea, and ask about a/b instead. This, of course, represents the operation that takes "b" into "a", since a/b * b should equal a. To be sensible, the direction of a/b * c should be the same regardless of the scale of c (c vs. 20c vs -2 c). So we make a formal rule, numbers (scalars) commute through multiplication:

a 2 c = 2 a c = a c 2, and right away trim this to 2 a = a 2, sometimes so fast the intermediate step never even appears anywhere.

Be patient, xy turns out to be the unit imaginary number soon, and to rotate things by 90 degrees in the page!

Now 1/b should mean something too, but according to our rules, it can't have a different direction than b. Of course, it has to have some direction, since otherwise we could not (successfully) invert it twice. 1/b is left with its same direction, and a different length, which will be the inverse of its current length, so 1/b = b/||b||^2, where ||b||^2 is some scalar. Now with some gymnastics, we find that 1 = (1/b) b = b b / ||b||^2, but 1 and ||b||^2 are scalars, so bb has to be one too!

Finally we can begin to tell a story. a/b wants to rotate stuff in the b direction toward stuff in the a direction, staying in the ab plane. a and b have magnitudes, so a b does the same general thing as a/b, but with a different scale. What's important in this operation is the geometric relationship between a and b, so we want ab to represent the plane that a and b sit inside. But we also need the angle between a and b to make that invertible. It turns out we can use a rule for products that fills all those requirements:

x x = 1

x y = - y x (can't be reduced further)

This means the directions don't commute through multiplication, we'll have to think about xy as a plane with an orientation and a magnitude, and spend some work on commuting directions when we want to simplify things. As a test, we'll take the squared magnitude of 2 x - 3 y: (2 x - 3 y) (2 x - 3 y) = 4 + 9 + 6 (xy + yx) = 13, as expected! Multiplying xy by x + y, we get (xy) x + (xy) y = -y + x, a rotation of (1,1) to (1,-1). So xy rotates vectors as advertised.

In fact, it rotates them counterclockwise by 90 degrees. Now the best part is this:

(xy) (xy) = -yx xy = -1. xy has the same properties as the unit imaginary number, conventionally defined as i = sqrt(-1). We can think of i as representing a plane somewhere (not the imaginary axis!), and multiplying by i as swapping two (very real) directions of a vector, not as moving from Descartes to Wick. Complex analysis gets its power from rotations, and "i" was really only a two-dimensional concept anyway!

That was a surprise to me, and some others also, since David Hestenes showed that this product generates well-known (by those who know it well) constructions from Clifford:

ab = a ⋅ b + a∧b

a ⋅ b = (ab + ba)/2

a∧b = (ab - ba)/2

The inner product: a ⋅ b, which is a scalar, the cosine of the angle between a and b,

and the outer product: a∧b, which is a pure 2-d object (bivector is the jargon).

There are a lot more surprises, but they'll have to wait for now.

q x /q <- rotate x using q

...

Q x_i Q^-1 <- apply rotations and scaling to x using Q? Maybe I can even single out a particular x_i.

Unfortunately for me, none of the terms in the title of this paragraph made any sense to my vectorized brain at the time. However, like Alice, I persisted a little in this new world of literary nonsense. What I found was a connection to intersecting shapes, symmetry theory, 4-D spacetime, a new way to understand imaginary numbers, and a multiplication operation that can intersect spheres and spiral objects through space.

All of it can be done by attaching special symbols to numbers. We're all familiar with the unit vector directions, for example

2 x - 3 y + 0 z

adding directions should only combine things that are measured in the same units, so we can't combine 2 x and -3 y. What about multiplying?

What is the product of two directions? To start, we should note that x means something different than -x. The x itself is supposed to have a direction, and the "2" above is how many steps we take in that direction. The product of two directions should also have some kind of orientation. Hamilton wanted the product to be invertible, so we could get "a" back from "ab" after somebody had gone off and multiplied it with "b". It should also have a geometric meaning. So there you have it, we multiply "a" and "b" directions by performing a geometric operation on "a" that does not loose information. I'm sure you can picture two vectors, making an L on the table, and then falling over to represent this kind of operation. That's a good idea (actually the quaternion rotation I mentioned earlier), but it adds another, un-introduced direction. We want the result to stay in the (a-b) space, or not have a direction at all.

So, we revise this idea, and ask about a/b instead. This, of course, represents the operation that takes "b" into "a", since a/b * b should equal a. To be sensible, the direction of a/b * c should be the same regardless of the scale of c (c vs. 20c vs -2 c). So we make a formal rule, numbers (scalars) commute through multiplication:

a 2 c = 2 a c = a c 2, and right away trim this to 2 a = a 2, sometimes so fast the intermediate step never even appears anywhere.

Be patient, xy turns out to be the unit imaginary number soon, and to rotate things by 90 degrees in the page!

Now 1/b should mean something too, but according to our rules, it can't have a different direction than b. Of course, it has to have some direction, since otherwise we could not (successfully) invert it twice. 1/b is left with its same direction, and a different length, which will be the inverse of its current length, so 1/b = b/||b||^2, where ||b||^2 is some scalar. Now with some gymnastics, we find that 1 = (1/b) b = b b / ||b||^2, but 1 and ||b||^2 are scalars, so bb has to be one too!

Finally we can begin to tell a story. a/b wants to rotate stuff in the b direction toward stuff in the a direction, staying in the ab plane. a and b have magnitudes, so a b does the same general thing as a/b, but with a different scale. What's important in this operation is the geometric relationship between a and b, so we want ab to represent the plane that a and b sit inside. But we also need the angle between a and b to make that invertible. It turns out we can use a rule for products that fills all those requirements:

x x = 1

x y = - y x (can't be reduced further)

This means the directions don't commute through multiplication, we'll have to think about xy as a plane with an orientation and a magnitude, and spend some work on commuting directions when we want to simplify things. As a test, we'll take the squared magnitude of 2 x - 3 y: (2 x - 3 y) (2 x - 3 y) = 4 + 9 + 6 (xy + yx) = 13, as expected! Multiplying xy by x + y, we get (xy) x + (xy) y = -y + x, a rotation of (1,1) to (1,-1). So xy rotates vectors as advertised.

In fact, it rotates them counterclockwise by 90 degrees. Now the best part is this:

(xy) (xy) = -yx xy = -1. xy has the same properties as the unit imaginary number, conventionally defined as i = sqrt(-1). We can think of i as representing a plane somewhere (not the imaginary axis!), and multiplying by i as swapping two (very real) directions of a vector, not as moving from Descartes to Wick. Complex analysis gets its power from rotations, and "i" was really only a two-dimensional concept anyway!

That was a surprise to me, and some others also, since David Hestenes showed that this product generates well-known (by those who know it well) constructions from Clifford:

ab = a ⋅ b + a∧b

a ⋅ b = (ab + ba)/2

a∧b = (ab - ba)/2

The inner product: a ⋅ b, which is a scalar, the cosine of the angle between a and b,

and the outer product: a∧b, which is a pure 2-d object (bivector is the jargon).

There are a lot more surprises, but they'll have to wait for now.