Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

The geometric product is super useful and important! (As well as much nicer to work with when doing algebraic manipulation.)

In particular, it is what lets you take products, inverses and quotients (assuming the denominator is non-null) of arbitrary vectors.

> surprisingly hard to compute

Hm? No it isn’t....

Several times in the last few years I have done several pages of complicated calculations in terms of coordinates or matrices, where the intermediate steps were basically an indecipherable mess of symbols, and then sat down, really thought about what I was doing for a while, and re-written it using GA language and ended up simplifying my work down to a few lines of simple algebraic manipulations, where I could typically then give a nice geometrical interpretation to each step.

If you want to compute the geometric product using concrete numbers in terms of a basis, then it is straightforward to write the code (or work through by hand).

What is hard is not the geometric product. What is hard is geometry! There is a lot of depth and subtlety, and it takes years to really learn your way around. That is not the fault of the language though; there is a certain amount of irreducible complexity involved.

Personally I would love to get some people together and try to write a high-school-accessible geometry / vector algebra book using GA language. It would be a few years of hard work, because figuring out the right order for the curriculum, the right types of problems to build intuition, which tools to include or leave out of an introductory book, how to best show the work for a whole collection of worked examples (ideally with some interactive computer diagrams), and so on.



It is easy to compute on vectors. It is possible, but complicated and unintuitive (I have written code to do it in the past), to compute it on multivectors.

I'm arguing in favor of most of GA's language. I just keep finding that the wedge and inner product parts are fantastic, and the geometric product part isn't. And I think the reason people keep finding GA appealing is because they didn't have the wedge product before, so having that in their conceptual toolkit fixes a lot, while having the geometric product doesn't fix much on top of it. Anyway I've studied GA a lot and I still have basically no idea what 'AB' means when both are arbitrary-grade multivectors, and as far as I can tell most sources don't even try to explain it.


I’m telling you that after a few years working with the geometric product a whole bunch, the wedge product really doesn’t cut it.

> I still have basically no idea what 'AB' means when both are arbitrary-grade multivectors

Any mathematical language (or any natural language) can express a bunch of nonsensical and useless things. What is the sine of the square root of the logarithm of the tangent of some polynomial applied to a scalar? Who knows?!

You can certainly make up nonsensical expressions using matrices, differential forms, etc.

In a concrete problem, sometimes you have to think a bit to figure out what the geometrical meaning is of a particular multivector, but if the problem came out of a physical situation, I haven’t yet found a case where I couldn’t explain it.

Your multivector might be an electromagnetic field. It might be a rotor. It might be a representation of a sphere in the conformal model, ...


To be clear, I don't think the wedge product is sufficient either; I just think it's the real reason most people end up finding GA to be appealing.

I think there's work to do to clean the whole space up. Particularly, the wedge product is a 'join' or 'union' operator (amusingly, it has the wrong symbol). The 'meet' operator is not widely known but should probably be equally prominent. I haven't figured out for myself where the other holes are yet.



As someone unable to fathom the enthusiasm for geometric algebra... at least this defines this product: It's the sum of an inner product and a wedge product. Acting on two vectors these give a scalar and a 2-form. Why is adding these different objects a good idea? Don't they have different units (like, a pure number vs meters squared)?


It's analogous to the real and imaginary parts of a complex number. Does it makes sense to add a real number and a purely imaginary number? Aren't they different kinds of things? Yes, and yes!


It would really helpful if the article had some worked examples of this arithmetic, with actual numbers, the kind with digits and decimal points in. Then, things like the structure of a geometric product would be absolutely clear.

Let me have a go. I'll use an asciified version of the symbols, with * to mean multiplication of two scalars,, to mean raising one scalar to the power of another, and _ to mean taking a component of a vector.

  ab = a.b + a^b
  
  a.b = a_x * b_x + a_y * b_y + a_z * b_z
  
  a^b = (a_x * b_y - b_x * a_y) (x^y)
      + (a_x * b_z - b_x * a_z) (x^z)
      + (a_y * b_z - b_y * a_z) (y^z)
  
  ab = (a_x * b_x + a_y * b_y + a_z * b_z)
     +             (a_x * b_y - b_x * a_y) (x^y)
     +             (a_x * b_z - b_x * a_z) (x^z)
     +             (a_y * b_z - b_y * a_z) (y^z)
So if a = (1, 2, 3) and b = (4, 5, 6):

  ab = (1 * 4 + 2 * 5 + 3 * 6)
     +         (1 * 5 - 4 * 2) (x^y)
     +         (1 * 6 - 4 * 3) (x^z)
     +         (2 * 6 - 5 * 3) (y^z)
  
     = 32 + -3 (x^y) + -6 (x^z) + -3 (y^z)
The dot product makes a scalar, the wedge product makes a bivector, and the geometric product makes a scalar plus a bivector

You will note that the scalar part is much bigger than the coefficients of the bivector part. That's because the input vectors are actually quite similar - pointing z-by-y-z, with a little bit of x. Hence, their projection onto each other is large, whereas the parallelogram they form is quite small (long and thin). The dot product measures the former, the wedge product the latter.

Have i got that right?

EDIT And to clarify this:

> For any basis vector, such as the x axis, the result [of taking the geometric product with itself] is 1

That '1' isn't the scalar number 1, it's the scalar-plus-bivector 1 + 0 (x^y) + 0 (x^z) + 0 (y^z).


Sure, you've defined a map V⊗V → R⊕T, where T means 2-forms. But I still don't see why this is useful, apart from being able to extract from it both the wedge product and the inner product which you started with.


I think it is a good idea because both components contain useful complementary information (the cosine/sine of the angle and the plane they form), and the algebra corresponds to geometric operations.

Having an algebra that corresponds to geometric operations is good because you get a high-level framework for how to manipulate quantities instead of having to do things case by case.


Thanks for that, it's a really good explanation!


> the wedge product really doesn’t cut it

What about the wedge product together with the Hodge star, ie the language that tends to be used in Riemannian geometry?




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: