Expand description

The structs for the core algebra

Everything in this module is implemented purely algebraically and is maximally permittive of which operations are implemented and allowed.

In particular, this means that every struct in this module allows for things like direct mutation of elements, addition/subtraction, permittive casting, etc. However, this also means that the structs have less guarrantees about certain properties.

In particular:

  • not every Blade is necessarily the wedge of two vectors and doesn’t necessarily represent a vector space, as you can potentially add together two mutually orthogonal blades together.
  • not every Even represents a rotation, as not all of them have unit length or have a purely rotational action

Organization

This module is split between four different types, each representing a different subset of the broader algebra:

  • Multivector: represents a general element in the algebra
  • Even: represents an element with components of even grade
  • Odd: represents an element with components of odd grade
  • Blade: represents an element with components of odd grade

Use cases

The primary use purpose of this module is to provide the core algebra for the geometric interpretations and modules, but there are a few important additional use cases.

For example:

  • Certain physical quantities. In particular, position, velocity, angular velocity, angular momentum, etc are all best represented using VecNs and BiVecNs since each of those require addition.
  • Even2 and Even3 are isomorphic to complex numbers and quaternions respectively
  • Certain reinterpretations of Maxwell’s Equations use a Multivector to represent the electromagnetic field.

Structs

An element of a particular dimension and grade

An element in the given dimension with all even components

A general element in the given dimension

An element in the given dimension with all odd components

Traits

For multiplying two elements of geometric algebra while selecting only certain components

Type Definitions

A 2-dimensional bivector

A 3-dimensional bivector

A 4-dimensional bivector

A 5-dimensional bivector

A 6-dimensional bivector

A bivector with dynamic dimension

An N-dimensional bivector

A 0-dimensional blade with a dynamic grade

A 1-dimensional blade with a dynamic grade

A 2-dimensional blade with a dynamic grade

A 3-dimensional blade with a dynamic grade

A 4-dimensional blade with a dynamic grade

A 5-dimensional blade with a dynamic grade

A 6-dimensional blade with a dynamic grade

A blade with a dynamic dimension and grade

An N-dimensional blade with a dynamic grade

An n-dimensional blade of grade N-G

A 0-dimensional rotor

A 1-dimensional rotor

A 2-dimensional rotor

A 3-dimensional rotor

A 4-dimensional rotor

A 5-dimensional rotor

A 6-dimensional rotor

A rotor with dynamic dimension

A 6-dimensional hexavector

A hexavector with dynamic dimension

An N-dimensional hexavector

An iterator of references of each element

An iterator of mutable references of each element

A 0-dimensional multivector

A 1-dimensional multivector

A 2-dimensional multivector

A 3-dimensional multivector

A 4-dimensional multivector

A 5-dimensional multivector

A 6-dimensional multivector

A multivector with dynamic dimension

A 0-dimensional odd value

A 1-dimensional odd value

A 2-dimensional odd value

A 3-dimensional odd value

A 4-dimensional odd value

A 5-dimensional odd value

A 6-dimensional odd value

An odd value with dynamic dimension

A 5-dimensional pentavector

A 6-dimensional pentavector

A pentavector with dynamic dimension

An N-dimensional pentavector

An N-dimensional psuedoscalar

An N-dimensional psuedovector

A 4-dimensional quadvector

A 5-dimensional quadvector

A 6-dimensional quadvector

A quadvector with dynamic dimension

An N-dimensional quadvector

A scalar in N-dimensions

A scalar in 0-dimensions

A scalar in 1-dimension

A scalar in 2-dimensions

A scalar in 3-dimensions

A scalar in 4-dimensions

A scalar in 5-dimensions

A scalar in 6-dimensions

A scalar in a dynamic number of dimensions

A 3-dimensional trivector

A 4-dimensional trivector

A 5-dimensional trivector

A 6-dimensional trivector

A trivector with dynamic dimension

An N-dimensional trivector

A 1-dimensional vector

A 2-dimensional vector

A 3-dimensional vector

A 4-dimensional vector

A 5-dimensional vector

A 6-dimensional vector

A vector with dynamic dimension

An N-dimensional vector