## D - geometric algebra as core component of D

- "Sean L. Palmer" <seanpalmer earthlink.net> May 27 2002
- Andy Walker <Andy_member pathlink.com> May 27 2002
- "Robert Giuffre" <rgiuffre_No_Spam_ earthlink.net> May 27 2002
- "Carlos" <carlos8294 msn.com> May 27 2002
- "Sean L. Palmer" <seanpalmer earthlink.net> May 27 2002
- "anderson" <anderson firestar.com.au> May 27 2002
- "anderson" <anderson firestar.com.au> May 27 2002
- "Walter" <walter digitalmars.com> Jun 11 2002
- "anderson" <anderson firestar.com.au> Jun 11 2002
- "Pavel Minayev" <evilone omen.ru> Jun 11 2002
- "Sean L. Palmer" <seanpalmer earthlink.net> Jun 11 2002
- "anderson" <anderson firestar.com.au> Jun 11 2002
- "Pavel Minayev" <evilone omen.ru> Jun 12 2002
- "anderson" <anderson firestar.com.au> Jun 12 2002
- "Christian Schüler" <cschueler gmx.de> May 29 2002
- "Sean L. Palmer" <seanpalmer earthlink.net> May 30 2002

I think it would be fantastic Walter if you could read this webpage: http://www.mrao.cam.ac.uk/~clifford/introduction/intro/intro.html and then go back over the fundamental types and operations of D in much the same way as you have extended it for complex numbers, and have D directly support mathematical operations on multivectors using Clifford algebra. I highly recommend anyone who has any interest in 3D math to read this page. It generalizes the concept of rotation and vector products for all higher dimensions by integrating the dot and cross product in much the same way that complex numbers integrate real and imaginary parts. This stuff is amazing... it's sad that mathematics had taken such a wrong turn, but Clifford algebra (aka geometric algebra) attempts to correct the problem. They've got a C++ template library for multivectors, but D has no templates so it wouldn't be easy to make this general in D from a user perspective. It would have to go in the core language design. (or, you can put in generics ;) Sean

May 27 2002

In article <acuc30$30hq$1 digitaldaemon.com>, Sean L. Palmer says...I think it would be fantastic Walter if you could read this webpage: http://www.mrao.cam.ac.uk/~clifford/introduction/intro/intro.html

This really ticks me off. I think about all the painful hours I spent trying to understand this stuff, and failing, and the real problem was that it was very badly described by the mathematics. Arrrrrgh. Let me say that again. Aaaaarrrrrrrrrrgh. I think it would be fantastic if there were a clear, powerful syntax for the Clifford algebra before Walter tries to implement it. Then graduate students in physics would would do it in Bright (D) or risk being ignored. That alone would be worth a pick-up load of masters theses in physics. It would also be one heck of a sales tool for Bright (D). It might guarantee that every Electrical Engineering graduate knows the language. Andy Walker jawalker stl.quik.com

May 27 2002

My brain is going to explode after reading that article... But hey, more power to the compiler... ;-} Bob "Sean L. Palmer" <seanpalmer earthlink.net> wrote in message news:acuc30$30hq$1 digitaldaemon.com...I think it would be fantastic Walter if you could read this webpage: http://www.mrao.cam.ac.uk/~clifford/introduction/intro/intro.html and then go back over the fundamental types and operations of D in much

same way as you have extended it for complex numbers, and have D directly support mathematical operations on multivectors using Clifford algebra. I highly recommend anyone who has any interest in 3D math to read this

It generalizes the concept of rotation and vector products for all higher dimensions by integrating the dot and cross product in much the same way that complex numbers integrate real and imaginary parts. This stuff is amazing... it's sad that mathematics had taken such a wrong turn, but Clifford algebra (aka geometric algebra) attempts to correct the problem. They've got a C++ template library for multivectors, but D has no

so it wouldn't be easy to make this general in D from a user perspective. It would have to go in the core language design. (or, you can put in generics ;) Sean

May 27 2002

and then go back over the fundamental types and operations of D in much

same way as you have extended it for complex numbers, and have D directly support mathematical operations on multivectors using Clifford algebra.

I haven't read completely the article, but I don't think D should support that directly. Not that it wouldn't be good, but as far as I understand most of the programming languages (including C-like or C-based) are designed to be general purpose. If geometric algebra is ever included in any language, then that language would become (instantly or eventually) completely math oriented. Not that I wouldn't like that (I mean, Fortran is so old that I can't figure out how someone can still make NEW programs there, but it's still the best in math! --maybe that's why) but I'm not quite sure that this should be D's next step. Mainly because of one reason: if right now D (I mean, Walter) does that, then D would lose a big group (can't think of another word) of programmers: those who aren't interested in math. I know that programming is closely related to math, but not everything related to programming is math (obviously). For example, if D is better than C, and almost every operating system has been done in C, what stops us (D programmers) from doing a better OS in D. And if someone is writing an OS (not that I am), why would that someone need geometric algebra? It's like someone said before: by wanting that, you're wanting to add things that aren't really necessary, though they can be needed by some.

May 27 2002

I suppose it can wait until D 2.0 when D supports generics or templates, geometric algebra can be made into a module. I was just thinking that if Walter went out of his way to support the complex type, this kind of stuff isn't far beyond that. Closer than you may think. With complex you can add a real to an imaginary to get a complex: complex c = 2.0 + 3.0i; With geometric algebra you can add a scalar and a vector and a bivector (etc etc) to get a generic multidimensional vector: multivector v = 3.0 + [ 1.0, 2.0, 0.5 ]; multiplication of vectors is defined to produce both a scalar and a bivector. float[3] v1 = [ 1.0, 2.0, 0.5 ]; float[3] v2 = [ 3.0, 0.2, 0.0 ]; multivector v3 = v1 * v2; // result is scalar 1.0*3.0+2.0*0.2+0.5*0.0 and bivector [[ v1 X v2 ]], combined printf("scalar part is %f\n",v3.scalar); printf("vector part is %f,%f,%f\n",v3.vector[0],v3.vector[1],v3.vector[2]); printf("bivector part is %f,%f,%f\n",v3.bivector[0],v3.bivector[1],v3.bivector[2]); That's the kind of thing that needs good language support to be easy to use and fast (operator overloading and generics would help; making them builtins would also work). Maybe after I get a fuller understanding of it I can propose something more formally. Sean "Carlos" <carlos8294 msn.com> wrote in message news:acurdj$foa$1 digitaldaemon.com...and then go back over the fundamental types and operations of D in much

same way as you have extended it for complex numbers, and have D

support mathematical operations on multivectors using Clifford algebra.

I haven't read completely the article, but I don't think D should support that directly. Not that it wouldn't be good, but as far as I understand

of the programming languages (including C-like or C-based) are designed to be general purpose. If geometric algebra is ever included in any language, then that language would become (instantly or eventually) completely math oriented. Not that I wouldn't like that (I mean, Fortran is so old that I can't figure out how someone can still make NEW programs there, but it's still the best in math! --maybe that's why) but I'm not quite sure that

should be D's next step. Mainly because of one reason: if right now D (I mean, Walter) does that, then D would lose a big group (can't think of another word) of programmers: those who aren't interested in math. I know that programming is closely related to math, but not everything related to programming is math (obviously). For example, if D is better than C, and almost every operating system has been done in C, what stops us (D programmers) from doing a better OS in D. And if someone is writing an OS (not that I am), why would that someone need geometric algebra? It's like someone said before: by wanting that, you're wanting to add things that aren't really necessary, though they can be needed by some.

May 27 2002

I agree in most, this could be included in a lib. I'll bet Walter has to many other things to do then supporting that level of mathematics as well. I'd like to point out, if someone else could write an excellent calculus/applicable maths lib. Walter could provide support by including it in the lib packages that comes with D, and perhaps adding (or improving support for) a few of the more orquad ones to the language spec. I'm not saying that D should have just any old libs blotting the size, but (at least in my field) vector mathematics is pretty important in programming. "Carlos" <carlos8294 msn.com> wrote in message news:acurdj$foa$1 digitaldaemon.com...and then go back over the fundamental types and operations of D in much

same way as you have extended it for complex numbers, and have D

support mathematical operations on multivectors using Clifford algebra.

I haven't read completely the article, but I don't think D should support that directly. Not that it wouldn't be good, but as far as I understand

of the programming languages (including C-like or C-based) are designed to be general purpose. If geometric algebra is ever included in any language, then that language would become (instantly or eventually) completely math oriented. Not that I wouldn't like that (I mean, Fortran is so old that I can't figure out how someone can still make NEW programs there, but it's still the best in math! --maybe that's why) but I'm not quite sure that

should be D's next step. Mainly because of one reason: if right now D (I mean, Walter) does that, then D would lose a big group (can't think of another word) of programmers: those who aren't interested in math. I know that programming is closely related to math, but not everything related to programming is math (obviously). For example, if D is better than C, and almost every operating system has been done in C, what stops us (D programmers) from doing a better OS in D. And if someone is writing an OS (not that I am), why would that someone need geometric algebra? It's like someone said before: by wanting that, you're wanting to add things that aren't really necessary, though they can be needed by some.

May 27 2002

Have you looked into vertex shaders (programs)? I would love to beable to do matrix/vector operations as quickly and effectiantly as you can in a vertex shader in program code (rarther then in the shader). OpenGL 2.0 has a real good spec on this, and it'd be great of D had something along the same lines. http://www.3dlabs.com/support/developer/ogl2/whitepapers/index.htm http://www.3dlabs.com/support/developer/ogl2/whitepapers/OGL2_Shading_Langua ge_1.2.pdf But then again, that could probably be done in a lib (parhaps a standard lib). PS - Walter I'd be good if the openGL headers/extention could come as part of the standard libary as it does with C++. If a 2d lib is going to be included in the standard libs, why not a multi-platform 3d lib? "Sean L. Palmer" <seanpalmer earthlink.net> wrote in message news:acuc30$30hq$1 digitaldaemon.com...I think it would be fantastic Walter if you could read this webpage: http://www.mrao.cam.ac.uk/~clifford/introduction/intro/intro.html and then go back over the fundamental types and operations of D in much

same way as you have extended it for complex numbers, and have D directly support mathematical operations on multivectors using Clifford algebra. I highly recommend anyone who has any interest in 3D math to read this

It generalizes the concept of rotation and vector products for all higher dimensions by integrating the dot and cross product in much the same way that complex numbers integrate real and imaginary parts. This stuff is amazing... it's sad that mathematics had taken such a wrong turn, but Clifford algebra (aka geometric algebra) attempts to correct the problem. They've got a C++ template library for multivectors, but D has no

so it wouldn't be easy to make this general in D from a user perspective. It would have to go in the core language design. (or, you can put in generics ;) Sean

May 27 2002

"anderson" <anderson firestar.com.au> wrote in message news:acusps$hno$1 digitaldaemon.com...PS - Walter I'd be good if the openGL headers/extention could come as part of the standard libary as it does with C++. If a 2d lib is going to be included in the standard libs, why not a multi-platform 3d lib?

If you want to write it, I can include it.

Jun 11 2002

"Walter" <walter digitalmars.com> wrote in message news:ae4bno$1t98$2 digitaldaemon.com..."anderson" <anderson firestar.com.au> wrote in message news:acusps$hno$1 digitaldaemon.com...PS - Walter I'd be good if the openGL headers/extention could come as

of the standard libary as it does with C++. If a 2d lib is going to be included in the standard libs, why not a multi-platform 3d lib?

If you want to write it, I can include it.

Thanks for your reply, Although I'm not lazy (as a programmer I hate duplication of work), I think Pavel Minayev has already almost completed the openGL header port. If Pavel Minayev agrees you could use his. I would however be willing to write up an openGL extention library (although openGL 2 may come out soon). I'd be a real selling point for D to have openGL included, as opengl is to directX what D is to C#.

Jun 11 2002

"anderson" <anderson firestar.com.au> wrote in message news:ae527k$2k5e$1 digitaldaemon.com...Although I'm not lazy (as a programmer I hate duplication of work), I

Pavel Minayev has already almost completed the openGL header port. If

Minayev agrees you could use his. I would however be willing to write up

openGL extention library (although openGL 2 may come out soon).

I wouldn't mind. =)I'd be a real selling point for D to have openGL included, as opengl is to directX what D is to C#.

It was so a few years ago, but it is no longer, I'd say. DX7, and especially DX8 was a _large_ step forward. Now, it is just too high-level even to be compared to OpenGL. Having both ported to D would be great!

Jun 11 2002

They are both ported to D. ;) I just need to test it more thoroughly and go finish porting the rest of DirectX (d3dx, dsound, dinput, dplay, dshow, etc, etc) On the OpenGL side, what is needed now is a D port of GLUT (or FreeGLUT). I'm interested in OpenGL 2.0 also. Sean "Pavel Minayev" <evilone omen.ru> wrote in message news:ae57ie$2pun$1 digitaldaemon.com..."anderson" <anderson firestar.com.au> wrote in message news:ae527k$2k5e$1 digitaldaemon.com...Although I'm not lazy (as a programmer I hate duplication of work), I

Pavel Minayev has already almost completed the openGL header port. If

Minayev agrees you could use his. I would however be willing to write up

openGL extention library (although openGL 2 may come out soon).

I wouldn't mind. =)I'd be a real selling point for D to have openGL included, as opengl is

directX what D is to C#.

It was so a few years ago, but it is no longer, I'd say. DX7, and

DX8 was a _large_ step forward. Now, it is just too high-level even to be compared to OpenGL. Having both ported to D would be great!

Jun 11 2002

Although I won't mind having directX in the standard lib. It's not a multi-platform library (although there are some directX libs that run in lynix), so that has some disadvantages. It would be good to have the standard libaries standard across all platforms. Also perhaps the cross platform SDL could be used as the 2d lib, it also includes other cools features such as sound and device input. "Pavel Minayev" <evilone omen.ru> wrote in message news:ae57ie$2pun$1 digitaldaemon.com..."anderson" <anderson firestar.com.au> wrote in message news:ae527k$2k5e$1 digitaldaemon.com...Although I'm not lazy (as a programmer I hate duplication of work), I

Pavel Minayev has already almost completed the openGL header port. If

Minayev agrees you could use his. I would however be willing to write up

openGL extention library (although openGL 2 may come out soon).

I wouldn't mind. =)I'd be a real selling point for D to have openGL included, as opengl is

directX what D is to C#.

It was so a few years ago, but it is no longer, I'd say. DX7, and

DX8 was a _large_ step forward. Now, it is just too high-level even to be compared to OpenGL. Having both ported to D would be great!

I'm hanging on for openGL 2.

Jun 11 2002

"anderson" <anderson firestar.com.au> wrote in message news:ae6knn$16fk$1 digitaldaemon.com...Although I won't mind having directX in the standard lib. It's not a multi-platform library (although there are some directX libs that run in lynix), so that has some disadvantages. It would be good to have the standard libaries standard across all platforms. Also perhaps the cross platform SDL could be used as the 2d lib, it also includes other cools features such as sound and device input.

I think that the best idea is to only leave OpenGL in Phobos, since it is the only "official standard" library, and ships with most OSes already. SDL covers a wide range of platforms as well, but one typically has to download it anyhow.

Jun 12 2002

"Pavel Minayev" <evilone omen.ru> wrote in message news:ae709m$1j38$1 digitaldaemon.com..."anderson" <anderson firestar.com.au> wrote in message news:ae6knn$16fk$1 digitaldaemon.com...Although I won't mind having directX in the standard lib. It's not a multi-platform library (although there are some directX libs that run in lynix), so that has some disadvantages. It would be good to have the standard libaries standard across all platforms. Also perhaps the cross platform SDL could be used as the 2d lib, it also includes other cools features such as sound and device input.

I think that the best idea is to only leave OpenGL in Phobos, since it is the only "official standard" library, and ships with most OSes already. SDL covers a wide range of platforms as well, but one typically has to download it anyhow.

I agree. At the least openGL should be included, because you can do 2d stuff in it as well. If the standard libary gets to big though parhaps it could be broken into parts, later on. ie It could be broken up into FULL - Everything (downloaded first time) CORE - Just the core files, that are updated frequently. (Download for users with FULL) Alternativly an update or patching tool could be used to reduce download size. But for now, it should be kept together, as the openGL headers will barely have any impace on size.

Jun 12 2002

I think it would be fantastic Walter if you could read this webpage: http://www.mrao.cam.ac.uk/~clifford/introduction/intro/intro.html

Yes I know this article, and I have read many other papers on Geometric Algebra as well. I have thought about it myself: "If Walter is to make complex numbers a builtin datatype, he should really make builtin support for Geometric Algebra." This has pros and cons: Pro: Geometric Algebra seems to be what mathematicians and physicists have long looked after: a super-entity for doing computational geometry and physics with a unified "interface". Just as Real numbers incorporate the Integers, and Complex numbers incorporate the Real numbers, Geometric algebra incorporates all the above plus the Quaternions, the Octonions, the Minkowski spaces, the Plücker coordinates, the Homogeneous Projective spaces and that's by far not complete. Rewriting math in G.A. makes many formulas simpler and renders many proofs trivial. So G.A. seems to be the natural choice for a builtin language support. Cons: The "Multivector", which is the basic element of G.A., is a very polymorphic datatype, which must be dynamically typed. Basic operations like "addition" are non-trivial functions when done in software. If I was to write a 3D engine using a generic, full featured Geometric Algebra datatype, it would be SLOW. Geometric Algebra is very elegant to write math, but it's not well suited to be implemented directly in software (at least as long as there is no processor support for it :-). So Geometric Algebra can be used well with pencil and paper to derive algorithms, but the final implementation is best made hand-taylored. So if you ask me if there should be builtin G.A. support in the D language, I have mixed feelings. One part of me says YEEESS, because it would be way cool, and anyway. The other part of mine says no, because such a generic implementation would be useful only for programs with low computation load, like a desktop calculator application. Sean L. Palmer <seanpalmer earthlink.net> schrieb in im Newsbeitrag: acuc30$30hq$1 digitaldaemon.com...I think it would be fantastic Walter if you could read this webpage: http://www.mrao.cam.ac.uk/~clifford/introduction/intro/intro.html and then go back over the fundamental types and operations of D in much

same way as you have extended it for complex numbers, and have D directly support mathematical operations on multivectors using Clifford algebra. I highly recommend anyone who has any interest in 3D math to read this

It generalizes the concept of rotation and vector products for all higher dimensions by integrating the dot and cross product in much the same way that complex numbers integrate real and imaginary parts. This stuff is amazing... it's sad that mathematics had taken such a wrong turn, but Clifford algebra (aka geometric algebra) attempts to correct the problem. They've got a C++ template library for multivectors, but D has no

so it wouldn't be easy to make this general in D from a user perspective. It would have to go in the core language design. (or, you can put in generics ;) Sean

May 29 2002

After reading about it more fully, including the runtime performance characteristics, I have to agree. Leave it for a library. Sean "Christian Schüler" <cschueler gmx.de> wrote in message news:ad3bj5$1ce8$1 digitaldaemon.com...I think it would be fantastic Walter if you could read this webpage: http://www.mrao.cam.ac.uk/~clifford/introduction/intro/intro.html

Yes I know this article, and I have read many other papers on Geometric Algebra as well. I have thought about it myself: "If Walter is to make complex numbers a builtin datatype, he should really make builtin support for Geometric Algebra." This has pros and cons: Pro: Geometric Algebra seems to be what mathematicians and physicists have long looked after: a super-entity for doing computational geometry and physics with a unified "interface". Just as Real numbers incorporate the Integers, and Complex numbers incorporate the Real numbers, Geometric algebra incorporates all the above plus the Quaternions, the Octonions, the Minkowski spaces, the Plücker coordinates, the Homogeneous Projective

and that's by far not complete. Rewriting math in G.A. makes many formulas simpler and renders many proofs trivial. So G.A. seems to be the natural choice for a builtin language support. Cons: The "Multivector", which is the basic element of G.A., is a very

datatype, which must be dynamically typed. Basic operations like

are non-trivial functions when done in software. If I was to write a 3D engine using a generic, full featured Geometric Algebra datatype, it would be SLOW. Geometric Algebra is very elegant to write math, but it's not

suited to be implemented directly in software (at least as long as there

no processor support for it :-). So Geometric Algebra can be used well

pencil and paper to derive algorithms, but the final implementation is

made hand-taylored. So if you ask me if there should be builtin G.A. support in the D

I have mixed feelings. One part of me says YEEESS, because it would be way cool, and anyway. The other part of mine says no, because such a generic implementation would be useful only for programs with low computation

like a desktop calculator application. Sean L. Palmer <seanpalmer earthlink.net> schrieb in im Newsbeitrag: acuc30$30hq$1 digitaldaemon.com...

same way as you have extended it for complex numbers, and have D

support mathematical operations on multivectors using Clifford algebra. I highly recommend anyone who has any interest in 3D math to read this

It generalizes the concept of rotation and vector products for all

dimensions by integrating the dot and cross product in much the same way that complex numbers integrate real and imaginary parts. This stuff is amazing... it's sad that mathematics had taken such a

turn, but Clifford algebra (aka geometric algebra) attempts to correct

problem. They've got a C++ template library for multivectors, but D has no

so it wouldn't be easy to make this general in D from a user

It would have to go in the core language design. (or, you can put in generics ;) Sean

May 30 2002