Hacker News new | past | comments | ask | show | jobs | submit login

To be honest I've never really liked how GA results in all kinds of mixed elements if you're not careful what you multiply with what. Requiring up to 2^n terms for what was an n-dimensional space seems a bit hard to deal with.

It seems like it should be better able to deal with geometry (i.e. inner products), but I've never really found a good argument why you wouldn't just use the wedge product and the hodge star (or musical isomorphisms).

Even something 'magic' like turning a bivector "u^v" into a rotation in that plane "e^(u^v)t" is essentially just using the musical isomorphism to turn the 2-form u^v into a linear automorphism, allowing you to make sense of "e^(u^v)t" as a matrix exponential.

Another example that often gets mentioned is the ability to turn maxwell's equations into a single equation, but since the use of differential forms already makes it possible to summarize it into two equations which hold for very different reasons I never understood the utility of combining them into one equation.




// Requiring up to 2^n terms for what was an n-dimensional space//

Sometimes, the economy is illusory, e.g. normal vectors transform differently than position vectors do. Sure, you can, if you want, use the same data structure to represent both of them, but you'll still have to have some way of keeping track what kind of vector it is holding, as well as sprinkle special cases throughout your code to handle each one differently.

GA, takes the bull by the horns by having vectors use one basis (i,j,k) for vectors, and another basis (j*k, k*i, i*j) for the other.

// never understood the utility of combining them into one equation //

This is a good example of how having a higher-dimensional space actually gives you better economy of storage than a lower dimensional space does: one equation is better than two, or four :-)

And electric fields are different from magnetic fields in quite the same way as vectors are different from bivectors. You can either "special case" them by using a different equation for Electric and Magnetic fields, or you can treat them uniformly with one.


> And electric fields are different from magnetic fields in quite the same way as vectors are different from bivectors. You can either "special case" them by using a different equation for Electric and Magnetic fields, or you can treat them uniformly with one.

What irks me is that the magnetic part of the Maxwell equations is 0 for geometrical reasons, whereas the electrical part is 0 for physical reasons (roughly speaking the curvature of the potential is proportional to the current). Putting them in one equations makes it seem as if you could have something other than 0 on the magnetic side, which is impossible without fundamentally changing the topology of spacetime.

Treating them uniformly is a mistake in my opinion.


You think this way because you do not pair in the right way the Maxwell equations. The divergence equations are not paired. The same for the curl equations. Pairing the equations in the wrong way can actually lead to errors in the relativistic case.

Two equations are intrinsic properties of the electromagnetic field because it is derived from a potential, i.e. the null condition for the divergence of the magnetic field and Faraday's law of induction.

The other two equations are what you call "physical", i.e. they show the relationship between the electromagnetic field and its sources, i.e. electric current and electric charge.

Alternatively, if you use potentials to describe the electromagnetic field, which is better in my opinion, you just have the relations between potentials and their sources (together with the conservation law for the electric charge). With potentials, you can get rid of the "geometrical" relations (though the choice of potentials is not unique).


A somewhat simpler way of keeping track in the case of normals is to use row vectors for, well, covectors, which is what normals are anyways.

What GA brings is the ability to express linear combinations of scalars, vectors, bi-vectors ... Whether this is actually useful/desirable in practice is another story though.


The #1 thing that GA brings is the ability to divide by vectors, which makes working many things out on paper dramatically simpler.


Yeah, but the original commenter's objection was it seems weird to, e.g. use a 6-dimensional space to represent 3-dimensional quantities.

Doing it by using vectors and covectors still requires you to keep track of 6 degrees of freedom, i.e, 6 dimensions. Eventually everybody has to pay the piper :-)


Yes, you need to keep track of which is which (most likely using the type system) but you don't risk adding vectors to covectors without converting explicitly. Each of vectors/covectors is 3 dimensions, but there is no 6-dimensional space in which vectors/covectors are allowed to mix.

IIUC this is unlike GA/exterior algebra where scalars/vectors/bi-vectors/... can be added together, just like one can add a scalar to a pure imaginary quaternion in the quaternion algebra.


> Yes, you need to keep track of which is which (most likely using the type system) but you don't risk adding vectors to covectors without converting explicitly.

Do many graphics libraries actually do this? In my experience adding points and normals directly is actually quite common.


The mixed elements are the important ones!

A quaternion with w=1, x,y,z=0 is just the identity.

A quaternion with w=0, x=1, or perhaps w=0, x=y=0.7, those would only ever be rotations by 180 degrees.

If you want arbitrary rotations, you need some combination of the two: "a little bit of 180 around this line, and a little bit of 0deg rotation/identity". That's what it means to have scalar and bivector.

If you "being careful" with wedge and inner to avoid mixtures you are doing it wrong. Geometric product is the boss, and makes excellent mixtures!


These "mixed" elements are natural types and special cases of different objects and operations that are usually confused (e.g. "vectors" of three numbers to represent points and actual 3D vectors) or contorted (e.g. quaternions to represent rotations) or idiosyncratic (e.g. 3D cross product) in more traditional approaches.


> To be honest I've never really liked how GA results in all kinds of mixed elements if you're not careful what you multiply with what. Requiring up to 2^n terms for what was an n-dimensional space seems a bit hard to deal with.

Agreed, but the confusion is already there, and the traditional approach deals with it by just sweeping it under the rug. If you're dealing with normals, for example, you have at least 2 different n-dimensional spaces to keep track of that transform quite differently.

Having points, planes, lines, normals, translations, and rotations all represented as a single multivector type with consistent rules seems quite liberating once you grasp it. (I'm admittedly still working on it.)




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

Search: