# g3

Rust crate for plane-based projective geometric-algebra for 3D aka the Clifford Algebra with signature P(R*_{3,0,1}).

## API

- Invariants:
`Point`

`Line`

,`Branch`

and`IdealLine`

`Plane`

- Variants:
`Direction`

`Translator`

`Rotor`

`Motor`

`^`

Meet Operation `&`

Join Operator `|`

Inner Product `*`

Geometric Product `a*b = a|b + a^b`

`a(b)`

Sandwich Product `!`

Dual Operator ## Get Started

This software uses some of Rust experimental feautures like `std_simd`

and `fn_traits`

so make sure to compile using the nightly release.

`rustup update -- nightly`

`cargo +nightly build`

## Run example

```
cargo +nightly run --example elements --features="mirror"
```

## Awesome Links

- Bivector, community site with more info on geometric algebra including videos, software and a discrord server.
- Videos:
- Siggraph2019 Geometric Algebra, Talk explaining the why and a bit of the how of GA.

- Software:
- Articles:

## Status

This software is very much still a work in progress.

- Todo
- Integrate with the baryon graphics library
- WebGPU shaders to draw basic elements: // WebGPU tutorial: https://github.com/jack1232/webgpu11

- Rename
`reverse`

methods to`conjugate`

for Clifford Conjugate, see section 1.5

- Integrate with the baryon graphics library