I take issue with the choice of operator symbols, which is unfortunate since they seem to have become standard. For starters, the meet is ∧... in lattice theory (and in PGA). It is also very similar to ∩, which is the intersection of sets, and the meet in PGA is very closely related to the intersection of subspaces. It's also the AND operator in boolean logic. So why isn't the symbol used for the set of points contained in one subspace AND another subspace not the same as the one for AND (ie &, which is commonly used as shorthand for "and" even outside of math)? Similarly, ∨ is used for the join, in both lattice theory and PGA, and OR in boolean logic. In a few programming libraries that I've seen, the symbol used for bitwise OR is also often overloaded for the union of sets, which again has a very similar symbol in ∪. The connection between the join and the union is a bit looser than between the meet and the intersection, but I believe it's still relevant. Combine that with De Morgan's Laws where ¬(a ∨ b) = ¬a ∧ ¬b, which is translated into programming languages as !(a | b) = !a & !b, and it's pretty clear that at least the dual uses the right operator. Inner product would just get what's left, ^, which it doesn't have as much in common with as the others, but it's probably the most "xor-y" of the GA operations other than maybe the commutator product. I don't like how ^ was chosen for the meet solely because of its visual resemblance to ∧, when & already has the same meaning as ∧. P.S. The sandwich product doesn't really need its own symbol in my opinion, but if it did get one, really the function call syntax would be best, but overloading _that_ is honestly _cursed._
@Isomorph702 жыл бұрын
Where did you define the Vee product? Did I miss it?
@bivector2 жыл бұрын
We were on a time budget ;) - it's all in the writeup(s). (The dual of the vee equals the wedge of the duals) .. (A v B)* = A* ^ B*
@tsukisan1012 жыл бұрын
It's a kind of magic... from N=3 to N=10 and into 3D...
@maxqutekerman9072 жыл бұрын
This is sorcery
@safdarsafdari72892 жыл бұрын
awesome
@karltraunmuller70483 жыл бұрын
Super interesting, always loved math in university.
@andrewvoron44903 жыл бұрын
What are shortcuts?... I really tired to click that run button...
@bivector3 жыл бұрын
shift+enter to run :)
@andrewvoron44903 жыл бұрын
@@bivector 👍
@maksymiliank5135 Жыл бұрын
It's all fun and games until you see the implementation of these operators in code. There is so much going on in the inner and outer product functions. Now I've become a little bit skeptical about this
@bivector Жыл бұрын
When implemented on full multivectors, these operators do indeed appear quite involved, however for production code, a graded approach is typically chosen which reduces the complexity by an order of magnitude. (think complexity of standard 3D cross/dot/etc). A good reference for a production level PGA library is the 'Klein' library by Jeremy Ong.
@maksymiliank5135 Жыл бұрын
@@bivector thank you for the response. When I first saw the code I thought that it looked inefficient, but then i remembered that in computer graphics everything is done with a 4x4 matrix multiplication, cross products and so on, which are also pretty costly operations. And there is also the SIMD instructions which let you do multiplications and additions in parallel. So it probably wasn't that bad as it first seemed
@ginanjarutama2 жыл бұрын
Hi, I try to reproduce the inverse kinematics code in the video, but it didn't run the way it should. And I can't spot my mistakes, need help :) Algebra(2,0,1, ()=>{ const N = 3; var points = Array(N+1); for (var i=0; i=0; --i) c[i].set(tr(c[i]&c[i+1],-0.5) >>> c[i+1]); c[0].set(b); for (var i=1; i>> c[i-1]); } return this.graph(()=>{ ik(base, target, points) return [ ...points, ...lines, 0xFF0000, base, target ] },{ grid :1, lineWidth: 8, fontSize:2, pointRadius:2 }) })
@bivector2 жыл бұрын
var tr = (line,dist)=>1 -0.5*dist*1e0*line.Normalized*!1e0;
@ginanjarutama2 жыл бұрын
@@bivector thank you
@nullstyle3 жыл бұрын
Love the math; Holy shit the merch is cringey as hell. Us neckbeards really need to get better with jokes
@eelcohoogendoorn80442 жыл бұрын
Im going to be wearing that MAGA hat with pride.
@nullstyle2 жыл бұрын
@@eelcohoogendoorn8044 I suppose your pride is my cringe; cool, cool, cool ;)
@eelcohoogendoorn80442 жыл бұрын
@@nullstyle it's all about how you trim your neckbeard. You've got to wear it with style.