This thread may be why GA is so awesome. A GA mind blown moment comment (mine was i -> I), comparing positively to FP, followed by an extremely mild smacktalk of FP (seemingly from an OOP perspective) and accompanied hallelujah. And then finally a pro-FP defense smacktalk with appropriate misspelling, but somehow from a user with an OOP name. Just a wonderful thread that gives me a small amount of hope. 😮 Ty
Fantastic video! And I finally know why it's called "inner product". I'm retired now, but during this video I caught myself thinking about how I'd redo two-thirds of my career. I'm definitely going to take a crack at this for some projects in the near future.
I think the reason that the units are named with "e" is that the German word for unit is "einhait" in Danish it is "enhed", so choosing "e" in these languages is natural.
I think it could also mean element, like it's sometimes used for group theory. But it's also used for the unit vectors of a standard basis. That would support the unit = Einheit theory.
This approach for modelling of points, lines, planes, and other graphical objects is very interesting! I'm definitely want to explore this in more detail.
@@rebase Yes, but all the stuff they are talking about I still have to learn. It's interesting stuff -- I wonder if there are some physics applications.
Peeter Joot hi Peter, this is just conformal geometric algebra. There is a very interesting paper of Arsenovic on this subject and also a UA-cam video. I have spent more than one year on this subject and there are very interesting results...
There is still some magic in there because you need to represent objects in the dual space. Why rotations in the dual space do translation in the initial space ? Why this works is not trivial : 1/ rotations in planes containing the projective dimension are translations along this dimension due to the cylindrical metric (N,0,1), 2/ the angle of such a rotation is one half of a rectangle (angles are areas), the sides of which are the radius of the unit cylinder and the amplitude of the corresponding translation along the projective dimension, so the angle is proportional to the amplitude of the translation, 3/ the duality rotates this translation by a quarter of a turn, so that it is still a translation, but in the initial space, and with a rate still proportional to the rate of rotation in the dual space. This last rotation is needed and it explains why it would not work if the metric was used directly on the initial space.
@@bivector Wow, there is a geometric algebra event 40km from my home !! And one of the authors of "Geometric algebra for physicists" will give a talk !! I will try to be there. I also have a paper on quatum mechanics that I would like to share (following some of Hestenes work).
@@bivector Hi for lack of a better place to ask, is the talk put on online yet? I checked the event's page but didn't see any link. Really looking forward to it.
Not exactly related to the video itself, but to the papers. You're considering the projective space of (the dual of) the Clifford algebra, and I get it, say, you multiply the equation of a line by a non-zero constant, you get the same line, fair enough. But in some places you really care about the elements of the Clifford algebra itself. The place where it is most clear is when you do the exponentiation. Informally, if you want to define the exponent, your domain of definition should have the addition. You can't really add two points of the projective space. Formally, consider the setting of the Euclidean plane, Cl*(R_{2,0,1}). You say that given an ideal point P, you can define the translation in the direction perpendicular to P via the exponent e^{d/2P}, where d represents the distance. For this to work, you need to scale P to be normalized, right? But the projective space is unaware of such subtleties. So to say that P is normalized, you really want your P to be an element of the Clifford algebra. I think that this note applies to a lot of places here, in particular, when you want something to be normalized. Moreover, I'm sure that the implementation isn't really modelling the projective space, but the Clifford algebra itself. Why bother with the projective space then? As I see it, the only merit of it is that we are reminded that every subspace is represented by a homogenious element up to a constant, sure. But also in a lot of cases you really want a normalized element, so even this argument is weak. Would love to hear your opinion!
Can I ask you to move this very interesting question to the bivector.net forum for PGA? It can be found here: discourse.bivector.net/c/projective-ga/6. This will reach a much wider audience and is also more convenient for expressing mathematical ideas.
28:12 Isn't this formula wrong? Shouldn't it be p = e^alpha_xy e^a_x e^beta_xz e^b_x o? (That is, the factors are correct, but in wrong order) 30:33 The same mistake has been made here; it should be p = e^alpha_xy e^a_x e^beta_xz e^b_x e^gamma_xw e^c_x o.
@@JivanPal No I was just looking for an explanation to clifford algebra signatures for a while. I liked this one so I decided to link to it in the comments so potentially other people, or myself in the future, could look it up.
Yes this was a key slide that I actually rewound to also. So reading this in the comments is a good immediate post-video review as well as the indexing for later. (Or you can just think of special ~~car~~ case "later" as immediately after viewing). Anyway, helpful 👍
Re: Course Overview: I would shove the Course Notes to the left and add an online Interactive Modeling Workstation and something like Brilliant exercises for understanding Geometric Algebra based on use.
It looks like any other rotation. To generate rotations, we can exponentiate points. For example turning alpha around point x is generated by exp(-alpha/2*x). This formula stays the same when 'x' is an infinite point, and alpha simply becomes a distance. Since infinite points square to zero, the Taylor expansion of that is exact after two terms giving exp(-alpha/2*x) = 1 - alpha/2*x. (Classically this would be a dual quaternion). Applying the translation to any element now is done by sandwiching (conjugating) the element with the translation. vector X = e1 + e2; motor M = exp( .5e01 ); vector Xt = M * X * ~M; // Xt now is e0 + e1 + e2 .. i.e. the same vector moved one away from the origin
As far as my understanding goes, they use Clifford algebra if you’re focused on the algebra itself, but they use Geometric algebra when they’re trying to put more emphasis on the geometric applications of it, so primarily looking at G^2 and G^3 for physics, computer graphics, etc. The distinction seems to be more of a theory vs application one now.
@@qsykip it is not written down with such specific wording anywhere I've found, but based on other definitions out there in linear algebra (e.g., Roman's Advanced Linear Algebra), it makes the most sense to define it this way to distinguish the special classes of Clifford algebras that are "metric". The best work I can point to that actually had this definition is my thesis. It is not yet finished, but will be in a few months.
So... I'm about halfway through and I'm lost. I have always learned math concepts better through code and through algorithm, and I thought this was going to be programmer focused and I'm lost...
I'm gonna have to download the python clifford library and play with this stuff, as I'm continuing to watch it, a little understanding is starting to creep in... but it's still mystifying
Hi @veggiet, the Clifford library is a good reference, and others can be found at bivector.net - there's also a discord channel if you have any questions. (discord.gg/vGY6pPk)
Geometric Algebra it's like functional programming for linear algebra. Mindblowing.
except i've never seen a reasonable use case for functional programming
@@patrolin agreed. that's pretty much the biggest problem with functional programming
@@patrolin I sugest getting some glasses, obviously you can't see properly
This thread may be why GA is so awesome. A GA mind blown moment comment (mine was i -> I), comparing positively to FP, followed by an extremely mild smacktalk of FP (seemingly from an OOP perspective) and accompanied hallelujah. And then finally a pro-FP defense smacktalk with appropriate misspelling, but somehow from a user with an OOP name. Just a wonderful thread that gives me a small amount of hope. 😮 Ty
once you get a programming topic into anything, people would make pointless war/arguments like this thread lol
Fantastic video! And I finally know why it's called "inner product". I'm retired now, but during this video I caught myself thinking about how I'd redo two-thirds of my career. I'm definitely going to take a crack at this for some projects in the near future.
I think the reason that the units are named with "e" is that the German word for unit is "einhait" in Danish it is "enhed", so choosing "e" in these languages is natural.
sry for being a Karen 😆 It's "Einheit" in german. I'm german and yeah, it makes sense, could really be the true reason
I think it could also mean element, like it's sometimes used for group theory.
But it's also used for the unit vectors of a standard basis. That would support the unit = Einheit theory.
You can read the original Grassmann paper (Lineale Ausdehnungslehre) and you won't even find the e notation, he is just using A, B, C, D etc.
Hot Damn!! Clifford did some really serious stuff...
Really mind blowing! Congratulations, this is totally going to change my code forever!
What an incredible presentation
This approach for modelling of points, lines, planes, and other graphical objects is very interesting! I'm definitely want to explore this in more detail.
Peeter Joot wait a sec, you wrote the book about Geometric Algebra for Electrical Engineers they’re talking about at the end of the QA, didn’t you? 😮
@@rebase Yes, but all the stuff they are talking about I still have to learn. It's interesting stuff -- I wonder if there are some physics applications.
Peeter Joot hi Peter, this is just conformal geometric algebra. There is a very interesting paper of Arsenovic on this subject and also a UA-cam video.
I have spent more than one year on this subject and there are very interesting results...
Yes, theoretically. But when you have to implement your algorithm, you will find you have no way but reduce your result to vector matrix formulas...
This is the best talk I have ever seen
There is the time before you understand GA and the time after.
holy moly let's reiterate that point about ganja being the missing ingredient. merdeka merdeka
so beautiful !
There is still some magic in there because you need to represent objects in the dual space. Why rotations in the dual space do translation in the initial space ?
Why this works is not trivial :
1/ rotations in planes containing the projective dimension are translations along this dimension due to the cylindrical metric (N,0,1),
2/ the angle of such a rotation is one half of a rectangle (angles are areas), the sides of which are the radius of the unit cylinder and the amplitude of the corresponding translation along the projective dimension, so the angle is proportional to the amplitude of the translation,
3/ the duality rotates this translation by a quarter of a turn, so that it is still a translation, but in the initial space, and with a rate still proportional to the rate of rotation in the dual space.
This last rotation is needed and it explains why it would not work if the metric was used directly on the initial space.
@@bivector Wow, there is a geometric algebra event 40km from my home !! And one of the authors of "Geometric algebra for physicists" will give a talk !!
I will try to be there. I also have a paper on quatum mechanics that I would like to share (following some of Hestenes work).
@@bivector Hi for lack of a better place to ask, is the talk put on online yet? I checked the event's page but didn't see any link. Really looking forward to it.
@@bivector Nevermind I saw it in your profile page. But the first talk on dual quaternion appears missing?
Seems very interesting, it deserve more views.
Not exactly related to the video itself, but to the papers. You're considering the projective space of (the dual of) the Clifford algebra, and I get it, say, you multiply the equation of a line by a non-zero constant, you get the same line, fair enough. But in some places you really care about the elements of the Clifford algebra itself. The place where it is most clear is when you do the exponentiation. Informally, if you want to define the exponent, your domain of definition should have the addition. You can't really add two points of the projective space. Formally, consider the setting of the Euclidean plane, Cl*(R_{2,0,1}). You say that given an ideal point P, you can define the translation in the direction perpendicular to P via the exponent e^{d/2P}, where d represents the distance. For this to work, you need to scale P to be normalized, right? But the projective space is unaware of such subtleties. So to say that P is normalized, you really want your P to be an element of the Clifford algebra. I think that this note applies to a lot of places here, in particular, when you want something to be normalized. Moreover, I'm sure that the implementation isn't really modelling the projective space, but the Clifford algebra itself. Why bother with the projective space then? As I see it, the only merit of it is that we are reminded that every subspace is represented by a homogenious element up to a constant, sure. But also in a lot of cases you really want a normalized element, so even this argument is weak. Would love to hear your opinion!
Can I ask you to move this very interesting question to the bivector.net forum for PGA? It can be found here: discourse.bivector.net/c/projective-ga/6. This will reach a much wider audience and is also more convenient for expressing mathematical ideas.
28:12 Isn't this formula wrong? Shouldn't it be p = e^alpha_xy e^a_x e^beta_xz e^b_x o? (That is, the factors are correct, but in wrong order)
30:33 The same mistake has been made here; it should be p = e^alpha_xy e^a_x e^beta_xz e^b_x e^gamma_xw e^c_x o.
59:51 What the R_{a,b,c} notation means
It's literally explained on that slide. Is there anything in particular on that slide that you are struggling to undeestand?
@@JivanPal No I was just looking for an explanation to clifford algebra signatures for a while. I liked this one so I decided to link to it in the comments so potentially other people, or myself in the future, could look it up.
@@ns4235 , ah, I see, I thought you were asking a question, "What does that notation mean?" - Sorry for the confusion.
Yes this was a key slide that I actually rewound to also. So reading this in the comments is a good immediate post-video review as well as the indexing for later. (Or you can just think of special ~~car~~ case "later" as immediately after viewing). Anyway, helpful 👍
Amazing video!
Re: Course Overview: I would shove the Course Notes to the left and add an online Interactive Modeling Workstation and something like Brilliant exercises for understanding Geometric Algebra based on use.
How does rotation around infinity look like in code
It looks like any other rotation. To generate rotations, we can exponentiate points. For example turning alpha around point x is generated by exp(-alpha/2*x). This formula stays the same when 'x' is an infinite point, and alpha simply becomes a distance. Since infinite points square to zero, the Taylor expansion of that is exact after two terms giving exp(-alpha/2*x) = 1 - alpha/2*x. (Classically this would be a dual quaternion). Applying the translation to any element now is done by sandwiching (conjugating) the element with the translation.
vector X = e1 + e2;
motor M = exp( .5e01 );
vector Xt = M * X * ~M;
// Xt now is e0 + e1 + e2 .. i.e. the same vector moved one away from the origin
Anyone know the book / author mentioned at 41:45?
Muhammad ibn Musa al-Khwarizmi
I would really like to see a full take on PGA from Charles Gunn, does there exist such a video?
Judging from your channel name you are a dedicated believer :D
Hehe this channel was created as follow up on this course - be sure to checkout our discord also!
@@bivector where can I join your discord group?
@@Michallote discord.gg/vGY6pPk
fyi. on your slide at ua-cam.com/video/tX4H_ctggYo/v-deo.html, you have a spelling error in a couple spots (seperating)
It's called "Clifford algebra" in mathematics. Not sure where the usage "geometric algebra" came from in some parts of physics and computer science?
It in fact is the name suggested by Clifford. (I believe in "A preliminary sketch of biquaternions" - but will have to check)
As far as my understanding goes, they use Clifford algebra if you’re focused on the algebra itself, but they use Geometric algebra when they’re trying to put more emphasis on the geometric applications of it, so primarily looking at G^2 and G^3 for physics, computer graphics, etc. The distinction seems to be more of a theory vs application one now.
@@qsykip Not exactly. Clifford algebras are more general -- a geometric algebra is a Clifford algebra with a non-degenerate quadratic form.
@@colinroberts370 Out of curiosity, do you know of any works that specifically defined geometric algebra as such? Thanks!
@@qsykip it is not written down with such specific wording anywhere I've found, but based on other definitions out there in linear algebra (e.g., Roman's Advanced Linear Algebra), it makes the most sense to define it this way to distinguish the special classes of Clifford algebras that are "metric".
The best work I can point to that actually had this definition is my thesis. It is not yet finished, but will be in a few months.
So... I'm about halfway through and I'm lost. I have always learned math concepts better through code and through algorithm, and I thought this was going to be programmer focused and I'm lost...
I'm gonna have to download the python clifford library and play with this stuff, as I'm continuing to watch it, a little understanding is starting to creep in... but it's still mystifying
Hi @veggiet, the Clifford library is a good reference, and others can be found at bivector.net - there's also a discord channel if you have any questions. (discord.gg/vGY6pPk)
Who asked the first question about VR / AR after the talk?
You can probably implement the worlds smallest slicer with this. Practically done, just a translation to g-code is missing :)
I'm working on one with this. github.com/julialongtin/hslice/
It slices now, using only 2D PGA.
I'm a Go man myself. Anyways...your software looks cool. Keep it up 👍
First! ;-)
Finally... the video.
I found Jesus
This video did not age well.
Second!