I come from a background of screw theory for rigid body mechanics and was pleasantly surprised when I discovered PGA as it addresses a lot of my gripes and inconsistencies.

Anyway, in my thesis I stated that twists (motors) and wrenches (forques) are lines in Plucker coordinates plus a pitch and magnitude.

Lines in 3D PGA are the following basis vectors

So for example,

- To encode a force \vec{F}=(F_x,F_y,F_z) you would use {\bf f} =F_z{\bf e}_{12}+F_y{\bf e}_{31}+F_x{\bf e}_{23}
- To encode a torque \vec{\tau}=(\tau_x,\tau_y,\tau_z) you would use {\bf f} =\tau_x{\bf e}_{01}+\tau_y{\bf e}_{02}+\tau_z{\bf e}_{03}

The way these are ordered in code would be

```
f = [0, 0,0,0, τx,τy,τz,Fz,Fy,Fx, 0,0,0,0, 0]
```

**I wish the ordering would be different such as the familiar cadence of (x,y,z) is maintained, and each basis vector would be the same sequence as its dual vector.**

\star\begin{pmatrix}{\bf e}_{01} & {\bf e}_{02} & {\bf e}_{03}\end{pmatrix}=\begin{pmatrix}{\bf e}_{23} & {\bf e}_{31} & {\bf e}_{12}\end{pmatrix}

\star\begin{pmatrix}{\bf e}_{1} & {\bf e}_{2} & {\bf e}_{3}\end{pmatrix}=\begin{pmatrix}{\bf e}_{032} & {\bf e}_{013} & {\bf e}_{021}\end{pmatrix}

and vice-versa.

a similar problem exists for encoding the point `(x,y,z)`

```
P=[0, 0,0,0, 0,0,0,0,0,0, z,y,x,1, 0]
```

This can be achieved with the following ordering:

**Before:**

\begin{array}{ccccc} \underbrace{1}_{\text{scalar}} & \underbrace{\left(\begin{array}{c|ccc} {\bf e}_{0} & {\bf e}_{1} & {\bf e}_{2} & {\bf e}_{3}\end{array}\right)}_{\text{vector(plane)}} & \underbrace{\left\{ \begin{array}{ccc|ccc} {\bf e}_{01} & {\bf e}_{02} & {\bf e}_{03} & {\bf e}_{12} & {\bf e}_{31} & {\bf e}_{23}\end{array}\right\} }_{\text{bivector(line)}} & \underbrace{\left[\begin{array}{ccc|c} {\bf e}_{021} & {\bf e}_{013} & {\bf e}_{032} & {\bf e}_{123}\end{array}\right]}_{\text{trivector(point)}} & \underbrace{{\bf e}_{0123}}_{\text{pseudo-scalar}}\end{array}

**After:**

\begin{array}{ccccc} \underbrace{1}_{\text{scalar}} & \underbrace{\left(\begin{array}{c|ccc} {\bf e}_{0} & {\bf e}_{1} & {\bf e}_{2} & {\bf e}_{3}\end{array}\right)}_{\text{vector(plane)}} & \underbrace{\left\{ \begin{array}{ccc|ccc} {\bf e}_{01} & {\bf e}_{02} & {\bf e}_{03} & {\bf e}_{23} & {\bf e}_{31} & {\bf e}_{12}\end{array}\right\} }_{\text{bivector(line)}} & \underbrace{\left[\begin{array}{ccc|c} {\bf e}_{032} & {\bf e}_{013} & {\bf e}_{021} & {\bf e}_{123}\end{array}\right]}_{\text{trivector(point)}} & \underbrace{{\bf e}_{0123}}_{\text{pseudo-scalar}}\end{array}

Now the `dual()`

operator should be easier as no re-ordering of coefficients is needed (going from point to plane for example). As you can see below the Hodge dual operator should maintain the same cadence.

Or am I wrong in the interpretation of how to encode the familiar line and axial vectors as bivectors?

_{PS. The Cayley Table should now contain the familiar wedge/cross-product operator matrix \begin{bmatrix}0 & -v_{z} & v_{y}\\
v_{z} & 0 & -v_{x}\\
-v_{y} & v_{x} & 0
\end{bmatrix}}