GA Tutorial Wishlist

I think it would be worthwhile to make a wishlist of code/blog tutorials for GA. Given many people want to work with these algebras from a range of different fields it would be great if people would post tutorials/problems they would like a GA treatment of/algorithm reference implementations they would like to see, then we can focus tutorial construction towards things people are interested in :smiley:

Iā€™ll start, I would like to see:

EM:
Spacetime algebra EM tutorials with visualisation of fields

Robotics:
A tutorial and reference implementation of FABRIK with constraints

Anyone else got any other ideas?

5 Likes

There are at least three libraries coming out of this forum. It would be fantastic if we could try to make a unified documentation system that can have code examples with all of these libraries (sort of how Gangaā€™s autogenerated code already works, the user selects the code they want and then reads the tutorial). This could help resist fragmentation in the learning space.

The key members on this forum have done an amazing job presenting learning material to the community and this site does a very good job organizing it, but when it comes to code snippets and blog posts things are still a little spread around personal pages, source and forum posts.

Iā€™m not the biggest fan of MATLAB, but I love the way that their documentation system works with explanation of theory alongside working code examples.

As to specific topics: I second some more IK material, perhaps with examples of common joint systems. Enkiā€™s existing IK example is impressive and is a great demo for showing off the power of GA. It would be great to have a PGA3D version alongside the 2D version.

Iā€™m interested in Fourier transforms in GA and applications for RGB image registration (I canā€™t remember where I saw an example, but it caught my eye).

1 Like

My website https://grassmann.crucialflow.com/dev has a section for tutorials, I would be delighted if other people started contributing to that. Currently, I am working on some conputations for some problems related to EM, I will post that when ready.

4 Likes

Efficient Collision detection.

2 Likes

I will probably add requests to this later - but one thing Iā€™d like to note is that I find in videos (as is normal) but also in books a lack of exercises. (Perhaps this is only the books I have found)

I find this unfortunate because exercises - as mundane as we may think they are - are really important for learning and practice. Iā€™ve seen people on multiple forums complain that they have difficulty ā€˜thinkingā€™ in GA - and I am sure this is mainly due to the fact nobody is actually ever made to actively use their GA knowledge.

So, if people have exercises in any tutorials/books, thatā€™d be great! :slight_smile:

2 Likes

Rigid body motion and dynamics
@cgunn3 has already produced a few detailed documents on this.

Fluid mechanics ?

I confirm that only practice can bring people to be comfortable with things. Unfortunately, GA is not studied at schoolā€¦

For fluid dynamics I already have a few examples, but am not currently ready to publish tutorials yet.

Currently, I am working on putting together some more tutorial material together with a new paper along with video, so I will also be considering the tutorial suggestions from here.

1 Like

Iā€™m currently looking into this along with position based dynamics. For generalized coordinate approaches in CGA @hadfield.hugo has lots of material available.

1 Like

I fully agree with the wish for a recommended interactive exercise list.
My wish is for an integrated Physics Modeling Workstation containing interactive exercises and not ā€œjunk softwareā€ as David Hestenes mentioned in 1995 in his paper on Modeling Software for Physics. My ideal would be something like a cross between Blender 3d and Geogebra. I looked at Wolfram but I would really like to use the Hestenes notation out of the box and not a custom computer notation. E.g. Vectors = 1e1, Geometric product = a*b, Outer product = a^b, Inner product = a|b

For a start, one simple possibility is a hyperlinked instructional checksheet using ganga.js and HTML5/CSS3 or Jupyter notebooks but I am not sure about how good PyClifford is.

There is some content in the Geometric Algebra Primer that would be useful in interactive exercises.

It would be really nice if there was a Geogebra or Wolfram module using a standard notation.

I would like to be able to move Geometric Software Engines in and out of my Modeling Workstation.

The existence of an ASK system front end connected to the interactive practice exercises would be nice as well.

ASK Systems

Delphian School has an excellent video showing what a printed checksheet looks like. Basically, itā€™s just a list of things to DO.

From: Applied Scholastics website
How to Write a Checksheet

Class Time: 24 hours
Prerequisites: Effective Teaching or Basic Study Manual or Advanced Study Tools for Educators and Fundamentals of Instruction courses"

ā€œThe trainee will learn how to change a ā€œone size fits allā€ classroom into a self-paced, individualized learning environment through the creation and utilization of the instructional methodology of checksheets. The trainee will gain competence in converting traditional group lesson plans into personalized learning modules and creating effective and adaptable checksheets that facilitate differentiated learning, resulting in 100 percent mastery of the subject matter. The traineeā€™s students will be better able to stay on task as a result of the customized checksheet directing them through each phase of instruction and drill.ā€

Have you tried my Grassmann.jl library? It has all those notations, except that ^ is exponentiation with respect to geometric product, not exterior product. For exterior product, the LaTeX \wedge is used instead. Julia language is excellent for physics, although all of your desired visualization interactivity is not yet developed for GA in Julia yet, i believe Julia is the perfect language for exploration of mathematics. Wolfram is not open source, so I would not recommend it as a teaching/learning tool, as that is a barrier to entry.

I think Julia would be great for this because of the notational clarity, and @chakravala already has written a good backend with Grassmann.jl. We could build the workbooks either as Jupyter notebooks or perhaps using the Pluto.jl kernel (which works a lot like the Observable javascript notebooks). It would also give us some incentive to help with the documentation for Grassmann.jl. For visualization, is the Julia port of ganja.js working well?

1 Like

For ganja.js in Julia, there is a proof of concept for running it via an electron window from Julia. Another option is to use ganja javascript visualizations within the Grassmann.jl documentation website, but Iā€™m not so experienced with javascript and donā€™t necessarily want to spend time learning that personally right now, although it would be really great.

As for Pluto and Jupyter notebooks, I donā€™t personally enjoy using browser notebooks. I prefer plain text files and working interactively in the command terminal instead of an interactive notebook, which is why I will likely not personally be releasing notebooks like that, although Iā€™d be happy if anyone else contributes that.

Iā€™m a bit burned out from my work on Grassmann.jl, which is why Iā€™m not currently writing lots of docs.

My point is that I want to use a dot product for the inner product with a big dot and not a pipe product. I know that using an asterisk for multiplication or a pipe/vertical line for the inner product has historically been due to keyboard realities (and maybe the asterisk is better than x when working algebra with x) but in the modern world, with software keyboards and auto completion quick pick lines, I would prefer to select a large dot for the inner product and a wedge on the baseline for the outer product and a superscript exponent rather than x^2. I have seen use of a vertical line with a small turn on the bottom like a hockey stick so the vertical line isnā€™t a surprise but I would really like to see some kind of standardization so I donā€™t have to remember the notation used in Wolfram Alpha vs. Ganga.js vs. PyClifford etc. etc.

Thatā€™s a nice wish, but every programming language is inherently limited in different ways regarding those notational capabilities. For example, in Julia it is quite easy to work with such unicode characters, and you can in fact accomplish the notation you are desiring with the Julia language. However, in most programming languages you will encounter fundamental limitations in the programming language itself, and you will not find a way around that unless you take the issue up with the designers of that programming language (like javascript, python, etc) as its a problem at the level of the programming language and not at the level of geometric algebra libraries.

My tutorial wishlist is for tutorials on:

  • geometry,

  • kinematics,

  • dynamics, and

  • general dynamical systems,

  • NEWTONIAN theory (See Newtonian Model Types below),

  • ELECTROMAGNETIC theory (Bivector Fields) and

  • RELATIVITY theory (Spacetime Algebra)

Newtonian MODEL TYPES, including

  • PARTICLE,
  • RIGID BODY,
  • ELASTIC SOLID,
  • IDEAL FLUID,
  • IDEAL GAS

MODELING SOFTWARE for learning and doing physics
by DAVID HESTENES
http://geocalc.clas.asu.edu/pdf/ModelingSoftware.pdf

ā€œ2.4. Modeling tool kitsā€
" In this section we discuss the design of an integrated sequence of tool kits for modeling geometry, kinematics, dynamics, and general dynamical systems, in that order. Beginning with geometry, each kit presupposes and expands the capabilities of the kit preceding it."

ā€œThe generic structure of systems theory is reflected in the specific structure of scientific theories. Physics consists of a network of overlapping theories, and students will discover this by opening a THEORY MENU and exploring the contents. The selections available on the menu include NEWTONIAN theory, ELECTROMAGNETIC theory and RELATIVITY theory. Each theory defines a conceptual world which students can select with a mouse-click. For example, the NEWTONIAN WORLD is defined by the system of laws displayed schematically in a dialog box which appears when the Newtonian theory is selected (Fig. 2.53, adapted from Hestenes 1992). Note that the laws fall into three general categories which apply to every theory: kinematics, dynamics and interactions. For a detailed discussion of any law (following Hestenes, 1986, Chap. 9), the student clicks on the appropriate LAW button. The ZEROth LAW, defining the concepts of space and time, is the most complex of the laws and the most fundamental, because it is the foundation for measurement theory. Ironically, it is not even identified as a law in standard textbooks. That is not a minor oversight, for the shift from Newtonian mechanics to Relativistic mechanics is the consequence of a subtle alteration of the Zeroth law. Students are able to discover such differences among physical theories by exploring the Theory Menu.ā€

ā€œā€¦ a MODEL MENU offering the student a selection of Newtonian MODEL TYPES, including PARTICLE, RIGID BODY, ELASTIC SOLID, IDEAL FLUID, IDEAL GAS.ā€

ā€œThis impending software crisis can be averted if scientists, educators and software developers collaborate on the development of a integrated math-science software curriculum which is scientifically and pedagogically sound. We say ā€œsoftware curriculumā€ rather than ā€œcurriculum software,ā€ because we see it as an agent for curriculum reform rather than an enhancement of the standard curriculum. The aim is to build the curriculum across all grade levels into an integrated system of software packages. This approach to curriculum reform is potentially far more effective than the mere publication of authoritative curriculum standards and recommendations, because software design can be more strictly controlled, and, riding the wave of technological change, software can more easily penetrate bureaucratic and academic barriers standing in the way of reform.ā€

Modeling

1 Like

would be great if you could add a cheat sheet at BiVector.net for other GAs than 3d projective. It looks great, and Iā€™d like to have one for 2D conformal at least

I would like to wish for a tutorial on GA applications in AI/ML/NN, especially in some of the Chinese methods that are making significant progress lately.
Also a tutorial related to Spin (11,1) geometric algebra as in the YouTube by Andrew Hamiltonā€™s ā€œUnification of the Four Forcesā€ ([A.Hamiltonā€“UnifyingFourForces])