Skip to content

Commit

Permalink
updated outermorphism doc
Browse files Browse the repository at this point in the history
- use summation symbol
- removed comments at the end that are probably confusing here
  • Loading branch information
hcschuetz committed Sep 15, 2024
1 parent 40df795 commit 51d77aa
Showing 1 changed file with 8 additions and 26 deletions.
34 changes: 8 additions & 26 deletions doc/Outermorphism.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,26 +7,26 @@ Applying a linear mapping `f` to a multivector `A`:

```js
f(A)
= // Let A := sum{b ∈ A.baseblades} A_b b
= // Let A := {b ∈ A.baseblades} A_b b
// Each b is a set of base vectors (technically represented as a bitmap,
// logically a wedge product in "standard" order).
// It is also used as an index in A to access the corresponding
// magnitude A_b.
f(sum{b ∈ A.baseblades} A_b b)
f({b ∈ A.baseblades} A_b b)
= // linearity
sum{b ∈ A.baseblades} A_b f(b)
{b ∈ A.baseblades} A_b f(b)
= // Let b := ⋀{e_i ∈ b} e_i
// e_i is the i-th base vector in the domain
sum{b ∈ A.baseblades} A_b f(⋀{e_i ∈ b} e_i)
{b ∈ A.baseblades} A_b f(⋀{e_i ∈ b} e_i)
= // distribute f over the wedge product
sum{b ∈ A.baseblades} A_b ⋀{e_i ∈ b} f(e_i)
{b ∈ A.baseblades} A_b ⋀{e_i ∈ b} f(e_i)
= // Let f be given as matrix M:
// f(e_i) = sum{j} M_ji E_j
// f(e_i) = {j} M_ji E_j
// with
// i: column index, j: row index
// E_j: j-th base vector in the co-domain
sum{b ∈ A.baseblades} A_b ⋀{e_i ∈ b} sum{j} M_ji E_j
---------------------------
{b ∈ A.baseblades} A_b ⋀{e_i ∈ b} {j} M_ji E_j
-------------------------
```

We implement the underlined expression
Expand All @@ -50,21 +50,3 @@ Parameters of the recursive function:
- An accumulated "value":
- Start with `A_b` and
- multiply (symbolically) with `M_ji` in each recursion step.



TODO It might make sense to use a class hierarchy like this:
- `Algebra`
- `OrthogonalAlgebra` (~ today's class `Algebra`)
- `EuclideanAlgebra`
- `NonOrthogonalAlgebra`
- `ConformalAlgebra`

Notes:
- Euclidean and conformal algebra need not be separate subclasses.
They might just be (non-)orthogonal algebras with appropriate behavior.

- A `NonOrthogonalAlgebra` manages two kinds of multivectors:
- "local" multivectors
- (wrapped) multivectors of an underlying (typically orthogonal) algebra
- The eigenmatrix and its inverse are used to convert between the two kinds.

0 comments on commit 51d77aa

Please sign in to comment.