If you're referring to spinors, those can be formalized without Clifford algebras (e.g. as fiber bundles). Can you show me any papers from these scientists that explicitly reference Clifford algebras?
The geometric product does transform composition. It has all the properties you want for multiplication in an algebra, or indeed a monoid or group.
So it is like matrix multiplication, but for transforms represented as multivectors. Multivectors are nicer than matrices because they are made out of the separate (exterior algebra) objects so you can geometrically interpret them. For example, a rotation-reflection (rotoreflection/improper rotation) will have a grade 1 part and a grade 3 part. One of them is the plane you reflect in, one is the point you rotate around.
There are ten thousand examples I want to give of why you're wrong. We have to start somewhere so here's a favourite, the "universal projection formula":
(A.B)/B
Projects any A onto any B, in any number of dimensions and with any signature (eg hyperbolic/Euclidean/elliptic). A and B can be lines, planes, points, and with a conformal or anti de Sitter metric a sphere or hyperboloid etc ("blades").
It works because A.B is dimension independently the object "orthogonal to A and containing B or vice versa". And division by B will intersect that orthogonal object with B.
Concise, intuitive, and powerful. What's the linear algebra formula you'd consider to be comparable?
I did two streams where I went through this article and explained the many places it is wrong. The second part of the article has more maths in it, so most of the content is there, you can watch it here: https://www.twitch.tv/videos/2282548167
(it's very long so I plan to edit the two streams into a digestible 10-15m or something. His fault not mine I'd say!)
Probably other commenters have already said, but the biggest giveaway is how he says we should move away from quaternions, and then demonstrates little to no awareness of why quaternions are used in engineering (vital in gamedev for example, your animations will look awful without quaternions). Yes, quaternions are hard if you are completely married to the idea that everything in geometry is ""vectors"". But the games industry put on its big-boy pants and learned to use them - they wouldn't do that if the things weren't useful for something, so it's bit silly to write an article like this if you haven't figured out why that happened.
The second paragraph of the conclusion: "Nor should we be trying to make everything look more like complex numbers and quaternions. Those are already weird and confusing; we should be moving away from them!"
It's also implicit in the thing he says throughout: "bivectors and trivectors are good, but there's no reason to add a scalar to a bivector or a trivector to a 1-vector, nor is there a reason to multiply such objects". A quaternion is a scalar and a bivector added together!
Hi I wrote that article and I would say that I am extremely aware of how quaternions are used in engineering.
My stance on quaternions is that they are an opaque representation of what they are trying to do, which makes them unnecessarily-difficult and annoying. Not to mention hard to learn to visualize. But GA isn't much less opaque either. The "actual" representation which I find to be most agreeable is the stuff I mentioned about viewing them as operators. Given a bivector B which describes a rotation, you can treat it as an operator on vectors via contraction R(v) = B⋅v. Then exponentiating e^(Rθ)(v) (either the one-sided rotations or two-sided rotors) gives the same rotation formalism as quaternions and GA, but without any of the weird unpedagogical stuff. The notion of an exponential map and exponentiating generators is, IMO, much more "natural" and intuitively straightforward than the alternatives. Perhaps I should update the article to make this more clear.
What irritates me about GA---well, one of the things---is that it treats bivectors/trivectors as both geometric primitives (oriented areas) and operators (rotations, say), and totally conflates the two and never explains to the student how to detach the two notions from each other (and I doubt most of the writers on the subject even know). IMO it is best viewed as a version of representation theory: rotations are operators which happen to have representations on bivectors of the EA; not all operators will have that property, and then you will want other algebraic structures to do algebra with them, if that's a case you're considering.
A quaternion is some amount of identity averaged with some amount of line reflection. You can visualize the line reflection as a pair of planar reflections at 90 degrees to each other. You can visualize the identity as a pair of planar reflections that are the same. Averaging the two of those will give you a pair of planar reflections that are some angle apart.
You're correct that you can construct a quaternion with the exponential map - but the most common way to make a quaternion is with a pair of vectors. Every game engine will have that function. GA will tell you how that function works - the vectors are planar reflections, you compose those to get a rotation by twice the angle, and you add (average with) the identity rotation to get a rotation by the precise angle.
> how to detach the two notions from each other
Can you say why would you want to do that? A plane always defines a planar reflection, a point always defines a point reflection, a line always defines a line reflection (assuming we're in euclidean space, which engineering is). To me this doesn't seem to be "happen to have" territory, this seems fundamental.
Does this word mean "not the way things mathematicians teach things"? My experience has been that mathematicians teach things that are useful to mathematicians to students who are not going to be mathematicians and would be better served learning other things. I wasted countless hours of my life finding analytical solutions to toy calculus problems in a universe that will never yield to those methods.
>My stance on quaternions is that they are an opaque representation of what they are trying to do, which makes them unnecessarily-difficult and annoying. Not to mention hard to learn to visualize.
I've seen some remarkably confusing attempts to understand and visualize these things. This has always baffled me because the equivalent objects in geometric algebra aren't that hard to understand. I really think this is a problem with your pedagogy. You've hidden the geometric meaning of the bivector components in these imaginary components, i,j,k, and you have to take it on faith that i*j=k and instead of it being just the product of two bivector blades.
>The notion of an exponential map and exponentiating generators is, IMO, much more "natural" and intuitively straightforward than the alternatives.
That's because you learned it that way. Exponentiating an oriented area to generate a rotation is perfectly intuitive to me, and I'm not sure how somebody could be confused by the fact that a bivector can be an oriented area or the logarithm of a rotation because it's a simple matter of context.
By "unpedagogical" I mean: very hard to learn, and even when you learn it, often hard to explain. It's information that doesn't compress well, generalize well, or really convey direct understanding of what's going on. Maybe not the best word for this. Really, I just mean "bad". To me it's incomplete knowledge; it needs to be improved upon so that it makes more sense for people who need to know it. In doing so it will also become easier to learn.
I think quaternions are confusing, GA bivector notations are less confusing but still confusing, and the operator version which I endorse is the least confusing of the three. This is just an aesthetic judgment on my part. IMO if things were taught in the way I prefer, more people could learn them, faster, and come away with a more solid understanding afterwards for less work. (You and I agree that GA's version is better than quaternions for the same reason. I just think that there are better versions still.)
If you want to tell someone that exponentiating an area gives a rotation, you need to basically deal with the fact that that sentence sounds like nonsense. An area's an area, why would exponentiating it... do... anything? My preferred explanation of all this stuff avoids that saying things that sound like nonsense.
(I prefer to think of a bivector not as an oriented area per se but as a type of tensor which happens to represent those things, but also represents other things, including the logarithms of rotations, due to the properties that those two things happen to share. That's a perspective that generalizes very well, compared to the GA version, because it separates the tensor representation from the operators; the two sides end up generalizing in different directions as you go to more complicated objects. When I get around to writing to my own exposition on this I'll go through that perspective very methodically.)
>If you want to tell someone that exponentiating an area gives a rotation, you need to basically deal with the fact that that sentence sounds like nonsense.
It's not just an area though, it's an area with orientation and magnitude. It's the complex exponential function extended to 3 dimensions.
>By "unpedagogical" I mean: very hard to learn, and even when you learn it, often hard to explain. It's information that doesn't compress well, generalize well, or really convey direct understanding of what's going on. Maybe not the best word for this. Really, I just mean "bad".
I can see where you're coming from on the learning part. There are as many different ways of learning GA as there are teachers, and this does hold it back.
>To me it's incomplete knowledge; it needs to be improved upon so that it makes more sense for people who need to know it. In doing so it will also become easier to learn.
I wish you luck, and I hope that I find it on here someday.
> I have given a lot of reasons why I think GA is problematic: the Geometric Product is a bad operation for most purposes. It really implements operator composition and is not a very fundamental or intuitive thing. Using a Clifford Algebra to implement geometry is an implementation detail, appropriate for some problems but not for general understandings of vector algebra and all of geometry. Giving it first-class status and then bizarrely acting like that is not weird is weird and alienating to people who can see through this trick.
If I understand him correctly, he means Clifford algebra is "appropriate for some problems" but we should "move away" from "giving it first-class status" as it is not more fundamental and often does not help students understand geometry better. I also readily admitted that it has some use cases in game physics in my comment.
You're making the word "some" do a lot of work in this comment. It's true that eg I would represent the inertia tensor with a matrix. But I would calculate it with GA... and I struggle to think of many other physics problems for which I wouldn't use GA (Poisson bracket in GA is particularly elegant). See my other comment on projections I suppose.
On the other hand, from what you've posted you're clearly experienced with computer graphics - it sounds like you have at some point interpolated with dual quaternions?
This hackernews thread may not be sustainable, so perhaps join the bivector discord? https://discord.gg/bBvkuTrM I would be very interested to find out the precise things you care about, on the off chance that there is some not-yet-known-to-you way that GA can help you.
They include a visual code editor I worked on - it's very janky (no proper errors) but you can play with it here https://hamishtodd1.github.io/ga/ed - ALT+ENTER to compile
But not in it's animation data, at least not by default
You key euler angles, it lerps euler angles for animation values, it then generates a quaternion the given the current value of the euler angles. Same for Unreal AFAIK
From that page: "When Euler Angles interpolation is used, Unity internally bakes the curves into the Quaternion representation used internally. This is similar to what happens when importing animation into Unity from external programs"
It's an extremely common misconception that because GPUs have matrix matrix and matrix vector products in the standard, that means GPU companies must be accelerating them.
In fact, because it is SIMD across the shader cores already, you can't necessarily do this. Some GPUs do, some don't
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.
It's amazing because that's the diametric opposite of what I'd consider to be true this is what the non-GA approach does, and which we avoid!
The modern approach to GA, eg https://en.wikipedia.org/wiki/Plane-based_geometric_algebra, distinguishes planes-through-the-origin, points, lines-through-the-origin, and lines-at-infinity. These four different types all get called "vectors" in the ordinary mindset. The cross product is said to take in two "vectors" and give you a "vector", but in reality it's generally taking two planes and giving you a line. This is talked about in the fourth paragraph of the wiki article :)
My question was more like, will all those four mathematical objects (alongside other stuff like scalars) be represented as a single data type in a given library that implements geometric algebra, or will they be given distinct data types?
Someone else answered that they might be given a single data type, but it's possible to give more precise types, which seem cool!
(do you have any library to mention, alongside the ones already mentioned?)
Seeing lots of discussion here! People with a game programming background might get something out of the talks I gave at the Game Developer Conference this year. The first one is on quaternions and and the advanced Geometric-Algebra-like use of them by Crytek and Disney to do animation https://gdcvault.com/play/1029233/ and the other is on how you can use that to get intersection, distances, angles, and projection in one line of code https://gdcvault.com/play/1029237/
Can GA simplify the rotation of high-order Spherical Harmonics terms?
Intuitively I think the 5 secondorder terms would correlate to the 2-blades in (3,0) algebra but I've no idea whether or not it could simplify computation.