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 algebraEven
: represents an element with components of even gradeOdd
: represents an element with components of odd gradeBlade
: 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
VecN
s andBiVecN
s since each of those require addition. Even2
andEven3
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