๐Ÿ“ฑ Erkannter Endgerättyp ๐Ÿ”‡ Sound ist aus. โ›ฑ๏ธ Tag und Nacht. Verbraucht keinen oder einen ๐Ÿช.
guest
Login ๐Ÿ—ƒ๏ธ Speicher- und Dateiverwaltung ๐Ÿช 1 Anzahl Ihrer gespeicherten Kekse, führt zur Keksdose

Geometric Algebra Space-Time

Sources

https://www.physi.uni-heidelberg.de/~vhollmeier/ga4p/materials/ga_lecture_notes.pdf - Hollmeier, Leidel, Sapir Lecture Notes

https://arxiv.org/pdf/2404.19682 Pablo Banon Perez and Maarten DeKieviet - General Relativity: New insights from a Geometric Algebra approach

Format

Basis Axes

ฮณโ‚€ is time and squares to -1

ฮณโ‚ is space x, squares to 1
ฮณโ‚‚ is space y, squares to 1
ฮณโ‚ƒ is space z, squares to 1

So that's Cl(3,1). THE ONLY TRUE DEFINITION. jk, some seem to do Cl(1,3) but ill stay with what is taught.

Bivectors

Now the planes are

ฮณโ‚‚โ‚ƒ all space thus ยฒ = -1
ฮณโ‚ƒโ‚ all space thus ยฒ = -1
ฮณโ‚โ‚‚ all space thus ยฒ = -1
ฮณโ‚€โ‚ time and space ยฒ = +1
ฮณโ‚€โ‚‚ time and space ยฒ = +1
ฮณโ‚€โ‚ƒ time and space ยฒ = +1

unsure why?

Lets see ฮณโ‚‚โ‚ƒยฒ = ฮณโ‚‚โ‚ƒโ‚‚โ‚ƒ = -ฮณโ‚‚โ‚‚โ‚ƒโ‚ƒ so -1(ฮณโ‚‚ยฒ = +1 ฮณโ‚ƒยฒ = +1) + -1 * +1 * +1 = -1

Lets see ฮณโ‚€โ‚ยฒ = ฮณโ‚€โ‚โ‚€โ‚ = -ฮณโ‚€โ‚€โ‚โ‚ so -1(ฮณโ‚€ยฒ = -1 ฮณโ‚ยฒ = +1) + -1 * -1 * +1 = +1

No shame, i was certain it's still -1 once .... but it's 1.

Trivectors

When we form trivectors here we will NOT get 4 positive, 4 negative ones like in 4,0 4D.

there are 4 3 2 * 1 = 24 possible permutations of 4 bases. BUT we only want 3 of them. So thats 4! / 3! = 4 basis trivectors.

Because all have positive and negative possible values thats 8 "cubes". But lets stay with the 4 basis trivectors.

Now ask to define them: What axis is left out? And there it makes sense to go 0,1,2,3 is left out

Then we check what happens when we wedge this trivector with the missing axis. We know (you can check below at Quadvector) that Iยฒ = -1 in STA.

ฮณโ‚: ฮณโ‚€โ‚‚โ‚ƒ โˆง ฮณโ‚ = ฮณโ‚€โ‚‚โ‚ƒโ‚ (2 swaps) = +ฮณโ‚€โ‚โ‚‚โ‚ƒ = +I (+Iยฒ = -1)
ฮณโ‚‚: ฮณโ‚€โ‚ƒโ‚ โˆง ฮณโ‚‚ = ฮณโ‚€โ‚โ‚ƒโ‚‚ (2 swaps) = +ฮณโ‚€โ‚โ‚‚โ‚ƒ = +I (+Iยฒ = -1)    <-- damn!
ฮณโ‚ƒ: ฮณโ‚€โ‚โ‚‚ โˆง ฮณโ‚ƒ = ฮณโ‚€โ‚โ‚‚โ‚ƒ (0 swaps) = +ฮณโ‚€โ‚โ‚‚โ‚ƒ = +I (+Iยฒ = -1)
ฮณโ‚€: ฮณโ‚โ‚‚โ‚ƒ โˆง ฮณโ‚€ = ฮณโ‚โ‚‚โ‚ƒโ‚€ (3 swaps) = -ฮณโ‚€โ‚โ‚‚โ‚ƒ = -I (-Iยฒ = +1)

@TBH I THINK this has to do with all 8 cubes needing to be summed to a negative volume. To be checked!!

Quadvector

in normal 4D we had Iยฒ = 1.

eโ‚โ‚‚โ‚ƒโ‚„ยฒ = eโ‚โ‚‚โ‚ƒโ‚„โ‚โ‚‚โ‚ƒโ‚„ = -eโ‚โ‚‚โ‚ƒโ‚โ‚„โ‚‚โ‚ƒโ‚„ = eโ‚โ‚‚โ‚โ‚ƒโ‚„โ‚‚โ‚ƒโ‚„ = -eโ‚‚โ‚ƒโ‚„โ‚‚โ‚ƒโ‚„ = eโ‚‚โ‚ƒโ‚‚โ‚„โ‚ƒโ‚„ = -eโ‚ƒโ‚„โ‚ƒโ‚„ = 1

NOT THE CASE IN STA!!!

ฮณโ‚€โ‚โ‚‚โ‚ƒ is I and Iยฒ = -1!

Iยฒ = ฮณโ‚€โ‚โ‚‚โ‚ƒยฒ = ฮณโ‚€โ‚โ‚‚โ‚ƒโ‚€โ‚โ‚‚โ‚ƒ = -ฮณโ‚€โ‚โ‚‚โ‚€โ‚ƒโ‚โ‚‚โ‚ƒ = ฮณโ‚€โ‚โ‚€โ‚‚โ‚ƒโ‚โ‚‚โ‚ƒ = -ฮณโ‚€โ‚€โ‚โ‚‚โ‚ƒโ‚โ‚‚โ‚ƒ = ฮณโ‚€โ‚€โ‚โ‚‚โ‚โ‚ƒโ‚‚โ‚ƒ = -ฮณโ‚€โ‚€โ‚โ‚โ‚‚โ‚ƒโ‚‚โ‚ƒ = ฮณโ‚€โ‚€โ‚โ‚โ‚‚โ‚‚โ‚ƒโ‚ƒ = 1(-1 1 1 1) = -1

In Algo

Because we build from 2D, 3D to 4D and now STA it makes sense to stay with eโ‚ to eโ‚„ and vectors vโ‚ to vโ‚„ adding 4 as the ฮณ0 time.

This is mostly done to switch at will to STA from 4D meshes and both are simple to convert to time as index 0 when needed.

eโ‚ = ฮณโ‚
eโ‚‚ = ฮณโ‚‚
eโ‚ƒ = ฮณโ‚ƒ
eโ‚„ = ฮณโ‚€

Easy parts

s = R[0]

p = R[7]

Bivector parts

Bโ‚‚โ‚ƒ = R[1]
Bโ‚ƒโ‚ = R[2]
Bโ‚โ‚‚ = R[3]
Bโ‚โ‚„ = R[4]
Bโ‚‚โ‚„ = R[5]
Bโ‚ƒโ‚„ = R[6]

Squares makes it easier and faster

s_2  = sยฒ
yz_2 = Bโ‚‚โ‚ƒยฒ
zx_2 = Bโ‚ƒโ‚ยฒ
xy_2 = Bโ‚โ‚‚ยฒ
xw_2 = Bโ‚โ‚„ยฒ
yw_2 = Bโ‚‚โ‚„ยฒ
zw_2 = Bโ‚ƒโ‚„ยฒ
p_2  = Iยฒ

(sยฒ - Iยฒ)v + 2s(v ยท B) + 2I(v โˆง B) + 2(v ยท B)B - vBยฒ

Formula in 4D with |B|ยฒ wont work in STA as (sยฒ - Iยฒ)v - vBยฒ does not square all planes to -1

Bยฒ

(Bโ‚‚โ‚ƒeโ‚‚โ‚ƒ + Bโ‚ƒโ‚eโ‚ƒโ‚ + Bโ‚โ‚‚eโ‚โ‚‚ + Bโ‚โ‚„eโ‚โ‚„ + Bโ‚‚โ‚„eโ‚‚โ‚„ + Bโ‚ƒโ‚„eโ‚ƒโ‚„)ยฒ

=

-Bโ‚‚โ‚ƒยฒ - Bโ‚‚โ‚ƒ Bโ‚ƒโ‚ eโ‚โ‚‚ + Bโ‚‚โ‚ƒ Bโ‚โ‚‚ eโ‚ƒโ‚ + Bโ‚‚โ‚ƒ Bโ‚โ‚„ eโ‚โ‚‚โ‚ƒโ‚„ - Bโ‚‚โ‚ƒ Bโ‚‚โ‚„ eโ‚ƒโ‚„ + Bโ‚‚โ‚ƒ Bโ‚ƒโ‚„ eโ‚‚โ‚„
...

Before you do all 6 lines note there will always be the plane squared part in the diagonals which we already know will be -1 for all space-space and 1 for all space-time planes

-Bโ‚‚โ‚ƒยฒ -Bโ‚ƒโ‚ยฒ -Bโ‚โ‚‚ยฒ + Bโ‚โ‚„ยฒ + Bโ‚‚โ‚„ยฒ + Bโ‚ƒโ‚„ยฒ

then you know for all terms that are mixed planes that share an axis you will get f.e line 1

Bโ‚‚โ‚ƒeโ‚‚โ‚ƒ * Bโ‚ƒโ‚eโ‚ƒโ‚ = - Bโ‚‚โ‚ƒ Bโ‚ƒโ‚ eโ‚โ‚‚

and in line 2

Bโ‚ƒโ‚eโ‚ƒโ‚ * Bโ‚‚โ‚ƒeโ‚‚โ‚ƒ = Bโ‚ƒโ‚ Bโ‚‚โ‚ƒ eโ‚ƒโ‚ eโ‚‚โ‚ƒ =  Bโ‚ƒโ‚ Bโ‚‚โ‚ƒ -eโ‚โ‚ƒ -eโ‚ƒโ‚‚ = Bโ‚ƒโ‚ Bโ‚‚โ‚ƒ eโ‚โ‚‚

so these all cancel out. We never square planes or axes in these terms thus that's true in 4D and STA

That's 4 terms per line, so already 24 terms gone!

What about the terms that share no axes?

Bโ‚‚โ‚ƒ eโ‚‚โ‚ƒ * Bโ‚โ‚„ eโ‚โ‚„ = Bโ‚‚โ‚ƒ Bโ‚โ‚„ eโ‚‚โ‚ƒโ‚โ‚„ (2 swaps) eโ‚โ‚‚โ‚ƒโ‚„
Bโ‚ƒโ‚ eโ‚ƒโ‚ * Bโ‚‚โ‚„ eโ‚‚โ‚„ = Bโ‚ƒโ‚ eโ‚‚โ‚„ eโ‚ƒโ‚โ‚‚โ‚„ (2 swaps) eโ‚โ‚‚โ‚ƒโ‚„
Bโ‚โ‚‚ eโ‚โ‚‚ * Bโ‚ƒโ‚„ eโ‚ƒโ‚„ = Bโ‚โ‚‚ eโ‚ƒโ‚„ eโ‚โ‚‚โ‚ƒโ‚„ (0 swaps)

Bโ‚โ‚„ eโ‚โ‚„ * Bโ‚‚โ‚ƒ eโ‚‚โ‚ƒ = Bโ‚โ‚„ Bโ‚‚โ‚ƒ eโ‚โ‚„โ‚‚โ‚ƒ (2 swaps) eโ‚โ‚‚โ‚ƒโ‚„
Bโ‚‚โ‚„ eโ‚‚โ‚„ * Bโ‚ƒโ‚ eโ‚ƒโ‚ = Bโ‚‚โ‚„ Bโ‚ƒโ‚ eโ‚‚โ‚„โ‚ƒโ‚ (4 swaps) = -eโ‚‚โ‚ƒโ‚„โ‚ = eโ‚‚โ‚ƒโ‚โ‚„ = -eโ‚‚โ‚โ‚ƒโ‚„ = eโ‚โ‚‚โ‚ƒโ‚„
Bโ‚ƒโ‚„ eโ‚ƒโ‚„ * Bโ‚โ‚‚ eโ‚โ‚‚ = Bโ‚โ‚‚ Bโ‚โ‚‚ eโ‚ƒโ‚„โ‚โ‚‚ (4 swaps) = -eโ‚ƒโ‚โ‚„โ‚‚ = eโ‚โ‚ƒโ‚„โ‚‚ = -eโ‚โ‚ƒโ‚‚โ‚„ = eโ‚โ‚‚โ‚ƒโ‚„

so they are all quadvectors.

leaves

Bยฒ = -Bโ‚‚โ‚ƒยฒ -Bโ‚ƒโ‚ยฒ -Bโ‚โ‚‚ยฒ + Bโ‚โ‚„ยฒ + Bโ‚‚โ‚„ยฒ + Bโ‚ƒโ‚„ยฒ + 2(Bโ‚‚โ‚ƒ Bโ‚โ‚„ + Bโ‚ƒโ‚ Bโ‚‚โ‚„ + Bโ‚โ‚‚ Bโ‚ƒโ‚„)I

2(v ยท B)B

v ยท B will be grade 1

grade 1 โˆง with B will give grade 1 and some grade 3 when eโ‚˜ eโ‚™โ‚

so thats the same as in 4D and this means we can just combine again ...

(sยฒ - Iยฒ - โŸจBยฒโŸฉโ‚€)v + 2s(v ยท B) + 2I(v โˆง B) + โŸจ2(v ยท B)BโŸฉโ‚

Some things i stumbled again on

-BvB == 2(v ยท B)B - vBยฒ

this means you need to "downgrade" now, THEN move a term maybe.

So 2(v ยท B) ยท B - vโŸจBยฒโŸฉโ‚€ first, THEN you move the now grade 0 / scalar โŸจBยฒโŸฉโ‚€

Iยฒ

in STA to know how to treat the pseudoscalar component (i call it p) notice how Iยฒ differs in 4D and STA:

4D Iยฒ: eโ‚โ‚‚โ‚ƒโ‚„ยฒ

              1            2           3          4         5        6
= eโ‚โ‚‚โ‚ƒโ‚„โ‚โ‚‚โ‚ƒโ‚„ = -eโ‚โ‚‚โ‚ƒโ‚โ‚„โ‚‚โ‚ƒโ‚„ = eโ‚โ‚‚โ‚โ‚ƒโ‚„โ‚‚โ‚ƒโ‚„ = -eโ‚‚โ‚ƒโ‚„โ‚‚โ‚ƒโ‚„ = eโ‚‚โ‚ƒโ‚‚โ‚„โ‚ƒโ‚„ = -eโ‚ƒโ‚„โ‚ƒโ‚„ = 1

STA Iยฒ: eโ‚โ‚‚โ‚ƒโ‚„ยฒ (ฮณโ‚โ‚‚โ‚ƒโ‚€) where eโ‚„ or ฮณโ‚€ squares to -1

= eโ‚โ‚‚โ‚ƒโ‚„โ‚โ‚‚โ‚ƒโ‚„ = -eโ‚โ‚‚โ‚ƒโ‚โ‚„โ‚‚โ‚ƒโ‚„ = eโ‚โ‚‚โ‚โ‚ƒโ‚„โ‚‚โ‚ƒโ‚„ = -eโ‚‚โ‚ƒโ‚„โ‚‚โ‚ƒโ‚„ = eโ‚‚โ‚ƒโ‚‚โ‚„โ‚ƒโ‚„ = -eโ‚ƒโ‚„โ‚ƒโ‚„ = eโ‚„โ‚„ and that is -1!!!

(or see above at Quadvector)

so it will be

(sยฒ + pยฒ - โŸจBยฒโŸฉโ‚€)v + 2s(v ยท B) + 2I(v โˆง B) + โŸจ2(v ยท B)BโŸฉโ‚

or

(sยฒ + pยฒ - โŸจBยฒโŸฉโ‚€)v + 2s(v ยท B) + 2I(v โˆง B) + 2(v ยท B) ยท B

v ยท B

These calculations will be different to 4D so lets do them now as we need these a lot later

(vโ‚eโ‚ + vโ‚‚eโ‚‚ + vโ‚ƒeโ‚ƒ + vโ‚„eโ‚„) ยท (Bโ‚‚โ‚ƒeโ‚‚โ‚ƒ + Bโ‚ƒโ‚eโ‚ƒโ‚ + Bโ‚โ‚‚eโ‚โ‚‚ + Bโ‚โ‚„eโ‚โ‚„ + Bโ‚‚โ‚„eโ‚‚โ‚„ + Bโ‚ƒโ‚„eโ‚ƒโ‚„)

= vโ‚(           -Bโ‚ƒโ‚eโ‚ƒ  +Bโ‚โ‚‚eโ‚‚  +Bโ‚โ‚„eโ‚„                  ) +
  vโ‚‚(   +Bโ‚‚โ‚ƒeโ‚ƒ          -Bโ‚โ‚‚eโ‚          +Bโ‚‚โ‚„eโ‚„          ) +
  vโ‚ƒ(   -Bโ‚‚โ‚ƒeโ‚‚  +Bโ‚ƒโ‚eโ‚                          +Bโ‚ƒโ‚„eโ‚„  ) +
  // now ... beware!!!
  vโ‚„(                           +Bโ‚โ‚„eโ‚  +Bโ‚‚โ‚„eโ‚‚  +Bโ‚ƒโ‚„eโ‚ƒ  )

I did this in 4D to check the trivectors so you can look it up there to verify.

(v ยท B) ยท B

For vโ‚ (-Bโ‚ƒโ‚eโ‚ƒ +Bโ‚โ‚‚eโ‚‚ +Bโ‚โ‚„eโ‚„) ยท (Bโ‚‚โ‚ƒeโ‚‚โ‚ƒ + Bโ‚ƒโ‚eโ‚ƒโ‚ + Bโ‚โ‚‚eโ‚โ‚‚ + Bโ‚โ‚„eโ‚โ‚„ + Bโ‚‚โ‚„eโ‚‚โ‚„ + Bโ‚ƒโ‚„eโ‚ƒโ‚„)

= vโ‚ (  +Bโ‚ƒโ‚Bโ‚‚โ‚ƒeโ‚‚   -Bโ‚ƒโ‚ยฒeโ‚     0           0           0           -Bโ‚ƒโ‚Bโ‚ƒโ‚„eโ‚„   +
        +Bโ‚โ‚‚Bโ‚‚โ‚ƒeโ‚ƒ   0           -Bโ‚โ‚‚ยฒeโ‚     0           +Bโ‚โ‚‚Bโ‚‚โ‚„eโ‚„   0           +
        // DANGER ZONE
        0           0           0           +Bโ‚โ‚„ยฒeโ‚     +Bโ‚โ‚„Bโ‚‚โ‚„eโ‚‚   +Bโ‚โ‚„Bโ‚ƒโ‚„eโ‚ƒ   )

For vโ‚‚ (+Bโ‚‚โ‚ƒeโ‚ƒ -Bโ‚โ‚‚eโ‚ +Bโ‚‚โ‚„eโ‚„) ยท (Bโ‚‚โ‚ƒeโ‚‚โ‚ƒ + Bโ‚ƒโ‚eโ‚ƒโ‚ + Bโ‚โ‚‚eโ‚โ‚‚ + Bโ‚โ‚„eโ‚โ‚„ + Bโ‚‚โ‚„eโ‚‚โ‚„ + Bโ‚ƒโ‚„eโ‚ƒโ‚„)

= vโ‚‚ (  -Bโ‚‚โ‚ƒยฒeโ‚‚     +Bโ‚‚โ‚ƒBโ‚ƒโ‚eโ‚   0           0           0           +Bโ‚‚โ‚ƒBโ‚ƒโ‚„eโ‚„   +
        0           +Bโ‚โ‚‚Bโ‚ƒโ‚eโ‚ƒ   -Bโ‚โ‚‚ยฒeโ‚‚     -Bโ‚โ‚‚Bโ‚โ‚„eโ‚„   0           0           +
        0           0           0           +Bโ‚‚โ‚„Bโ‚โ‚„eโ‚   +Bโ‚‚โ‚„ยฒeโ‚‚     +Bโ‚‚โ‚„Bโ‚ƒโ‚„eโ‚ƒ   )

For vโ‚ƒ (-Bโ‚‚โ‚ƒeโ‚‚ +Bโ‚ƒโ‚eโ‚ +Bโ‚ƒโ‚„eโ‚„) ยท (Bโ‚‚โ‚ƒeโ‚‚โ‚ƒ + Bโ‚ƒโ‚eโ‚ƒโ‚ + Bโ‚โ‚‚eโ‚โ‚‚ + Bโ‚โ‚„eโ‚โ‚„ + Bโ‚‚โ‚„eโ‚‚โ‚„ + Bโ‚ƒโ‚„eโ‚ƒโ‚„)

= vโ‚ƒ (  -Bโ‚‚โ‚ƒยฒeโ‚ƒ     0           +Bโ‚‚โ‚ƒBโ‚โ‚‚eโ‚   0           -Bโ‚‚โ‚ƒBโ‚‚โ‚„eโ‚„   0           +
        0           -Bโ‚ƒโ‚ยฒeโ‚ƒ     +Bโ‚ƒโ‚Bโ‚โ‚‚eโ‚‚   +Bโ‚ƒโ‚Bโ‚โ‚„eโ‚„   0           0           +
        0           0           0           +Bโ‚ƒโ‚„Bโ‚โ‚„eโ‚   +Bโ‚ƒโ‚„Bโ‚‚โ‚„eโ‚‚   +Bโ‚ƒโ‚„ยฒeโ‚ƒ     )

For vโ‚„ (+Bโ‚โ‚„eโ‚ +Bโ‚‚โ‚„eโ‚‚ +Bโ‚ƒโ‚„eโ‚ƒ) ยท (Bโ‚‚โ‚ƒeโ‚‚โ‚ƒ + Bโ‚ƒโ‚eโ‚ƒโ‚ + Bโ‚โ‚‚eโ‚โ‚‚ + Bโ‚โ‚„eโ‚โ‚„ + Bโ‚‚โ‚„eโ‚‚โ‚„ + Bโ‚ƒโ‚„eโ‚ƒโ‚„)

= vโ‚„ (  0           -Bโ‚โ‚„Bโ‚ƒโ‚eโ‚ƒ   +Bโ‚โ‚„Bโ‚โ‚‚eโ‚‚   +Bโ‚โ‚„ยฒeโ‚„     0           0           +
        +Bโ‚‚โ‚„Bโ‚‚โ‚ƒeโ‚ƒ   0           -Bโ‚‚โ‚„Bโ‚โ‚‚eโ‚   0           +Bโ‚‚โ‚„ยฒeโ‚„     0           +
        -Bโ‚ƒโ‚„Bโ‚‚โ‚ƒeโ‚‚   +Bโ‚ƒโ‚„Bโ‚ƒโ‚eโ‚   0           0           0           +Bโ‚ƒโ‚„ยฒeโ‚„     )

0 mistakes on initial try but thats easy if you can look up 4D

2I(v โˆง B)

note do I first or you need to deal with trivectors see 4D on this

eโ‚โ‚‚โ‚ƒโ‚„ ((vโ‚eโ‚ + vโ‚‚eโ‚‚ + vโ‚ƒeโ‚ƒ + vโ‚„eโ‚„) โˆง (Bโ‚‚โ‚ƒeโ‚‚โ‚ƒ + Bโ‚ƒโ‚eโ‚ƒโ‚ + Bโ‚โ‚‚eโ‚โ‚‚ + Bโ‚โ‚„eโ‚โ‚„ + Bโ‚‚โ‚„eโ‚‚โ‚„ + Bโ‚ƒโ‚„eโ‚ƒโ‚„))

=

// (vโ‚eโ‚) 

eโ‚โ‚‚โ‚ƒโ‚„vโ‚eโ‚Bโ‚‚โ‚ƒeโ‚‚โ‚ƒ = (...) eโ‚โ‚‚โ‚ƒโ‚„โ‚โ‚‚โ‚ƒ = -eโ‚โ‚‚โ‚ƒโ‚โ‚„โ‚‚โ‚ƒ = eโ‚โ‚‚โ‚โ‚ƒโ‚„โ‚‚โ‚ƒ = -eโ‚‚โ‚ƒโ‚„โ‚‚โ‚ƒ = eโ‚‚โ‚ƒโ‚‚โ‚„โ‚ƒ = -eโ‚ƒโ‚„โ‚ƒ = eโ‚„     =  vโ‚Bโ‚‚โ‚ƒeโ‚„
eโ‚โ‚‚โ‚ƒโ‚„vโ‚eโ‚Bโ‚ƒโ‚eโ‚ƒโ‚ = 0
eโ‚โ‚‚โ‚ƒโ‚„vโ‚eโ‚Bโ‚โ‚‚eโ‚โ‚‚ = 0
eโ‚โ‚‚โ‚ƒโ‚„vโ‚eโ‚Bโ‚โ‚„eโ‚โ‚„ = 0
eโ‚โ‚‚โ‚ƒโ‚„vโ‚eโ‚Bโ‚‚โ‚„eโ‚‚โ‚„ = (...) eโ‚โ‚‚โ‚ƒโ‚„โ‚โ‚‚โ‚„ = -eโ‚โ‚‚โ‚ƒโ‚โ‚„โ‚‚โ‚„ = (!)-eโ‚โ‚‚โ‚ƒโ‚โ‚‚ = eโ‚โ‚‚โ‚โ‚ƒโ‚‚ = -eโ‚‚โ‚ƒโ‚‚ = eโ‚ƒ             =  vโ‚Bโ‚‚โ‚„eโ‚ƒ
eโ‚โ‚‚โ‚ƒโ‚„vโ‚eโ‚Bโ‚ƒโ‚„eโ‚ƒโ‚„ = (...) eโ‚โ‚‚โ‚ƒโ‚„โ‚โ‚ƒโ‚„ = -eโ‚โ‚‚โ‚ƒโ‚โ‚„โ‚ƒโ‚„ = (!)-eโ‚โ‚‚โ‚ƒโ‚โ‚ƒ = eโ‚โ‚‚โ‚ = -eโ‚‚                      = -vโ‚Bโ‚ƒโ‚„eโ‚‚

// (vโ‚‚eโ‚‚)

eโ‚โ‚‚โ‚ƒโ‚„vโ‚‚eโ‚‚Bโ‚‚โ‚ƒeโ‚‚โ‚ƒ = 0
eโ‚โ‚‚โ‚ƒโ‚„vโ‚‚eโ‚‚Bโ‚ƒโ‚eโ‚ƒโ‚ = (...) eโ‚โ‚‚โ‚ƒโ‚„โ‚‚โ‚ƒโ‚ = -eโ‚โ‚‚โ‚ƒโ‚„โ‚ƒโ‚‚โ‚ = eโ‚โ‚‚โ‚„โ‚‚โ‚ = -eโ‚โ‚„โ‚ = eโ‚„                          =  vโ‚‚Bโ‚ƒโ‚eโ‚„
eโ‚โ‚‚โ‚ƒโ‚„vโ‚‚eโ‚‚Bโ‚โ‚‚eโ‚โ‚‚ = 0
eโ‚โ‚‚โ‚ƒโ‚„vโ‚‚eโ‚‚Bโ‚โ‚„eโ‚โ‚„ = (...) eโ‚โ‚‚โ‚ƒโ‚„โ‚‚โ‚โ‚„ = -eโ‚โ‚‚โ‚ƒโ‚‚โ‚„โ‚โ‚„ = eโ‚โ‚ƒโ‚„โ‚โ‚„ = (!)eโ‚โ‚ƒโ‚ = -eโ‚ƒ                       = -vโ‚‚Bโ‚โ‚„eโ‚ƒ
eโ‚โ‚‚โ‚ƒโ‚„vโ‚‚eโ‚‚Bโ‚‚โ‚„eโ‚‚โ‚„ = 0
eโ‚โ‚‚โ‚ƒโ‚„vโ‚‚eโ‚‚Bโ‚ƒโ‚„eโ‚ƒโ‚„ = (...) eโ‚โ‚‚โ‚ƒโ‚„โ‚‚โ‚ƒโ‚„ = -eโ‚โ‚‚โ‚ƒโ‚‚โ‚„โ‚ƒโ‚„ = (!)-eโ‚โ‚‚โ‚ƒโ‚‚โ‚ƒ = eโ‚                              =  vโ‚‚Bโ‚ƒโ‚„eโ‚

// (vโ‚ƒeโ‚ƒ)

eโ‚โ‚‚โ‚ƒโ‚„vโ‚ƒeโ‚ƒBโ‚‚โ‚ƒeโ‚‚โ‚ƒ = 0
eโ‚โ‚‚โ‚ƒโ‚„vโ‚ƒeโ‚ƒBโ‚ƒโ‚eโ‚ƒโ‚ = 0
eโ‚โ‚‚โ‚ƒโ‚„vโ‚ƒeโ‚ƒBโ‚โ‚‚eโ‚โ‚‚ = (...) eโ‚โ‚‚โ‚ƒโ‚„โ‚ƒโ‚โ‚‚ = -eโ‚โ‚‚โ‚„โ‚โ‚‚ = eโ‚โ‚‚โ‚โ‚„โ‚‚ = -eโ‚‚โ‚„โ‚‚ = eโ‚„                            =  vโ‚ƒBโ‚โ‚‚eโ‚„
eโ‚โ‚‚โ‚ƒโ‚„vโ‚ƒeโ‚ƒBโ‚โ‚„eโ‚โ‚„ = (...) eโ‚โ‚‚โ‚ƒโ‚„โ‚ƒโ‚โ‚„ = -eโ‚โ‚‚โ‚„โ‚โ‚„ = (!)-eโ‚โ‚‚โ‚ = eโ‚‚                                  =  vโ‚ƒBโ‚โ‚„eโ‚‚
eโ‚โ‚‚โ‚ƒโ‚„vโ‚ƒeโ‚ƒBโ‚‚โ‚„eโ‚‚โ‚„ = (...) eโ‚โ‚‚โ‚ƒโ‚„โ‚ƒโ‚‚โ‚„ = -eโ‚โ‚‚โ‚„โ‚‚โ‚„ = (!)-eโ‚                                         = -vโ‚ƒBโ‚‚โ‚„eโ‚
eโ‚โ‚‚โ‚ƒโ‚„vโ‚ƒeโ‚ƒBโ‚ƒโ‚„eโ‚ƒโ‚„ = 0

// (vโ‚„eโ‚„) - is a bit evil, remember eโ‚โ‚‚โ‚ƒโ‚„โ‚„โ‚ƒโ‚ f.e. has โ‚„ยฒ -1 but โ‚ƒยฒ is 1 still so that's -1 but 0 swaps so far

eโ‚โ‚‚โ‚ƒโ‚„vโ‚„eโ‚„Bโ‚‚โ‚ƒeโ‚‚โ‚ƒ = (...) -eโ‚โ‚‚โ‚ƒโ‚‚โ‚ƒ = eโ‚                                                        =  vโ‚„Bโ‚‚โ‚ƒeโ‚
eโ‚โ‚‚โ‚ƒโ‚„vโ‚„eโ‚„Bโ‚ƒโ‚eโ‚ƒโ‚ = (...) -eโ‚โ‚‚โ‚ = eโ‚‚                                                          =  vโ‚„Bโ‚ƒโ‚eโ‚‚
eโ‚โ‚‚โ‚ƒโ‚„vโ‚„eโ‚„Bโ‚โ‚‚eโ‚โ‚‚ = (...) -eโ‚โ‚‚โ‚ƒโ‚โ‚‚ = eโ‚โ‚‚โ‚โ‚ƒโ‚‚ = -eโ‚‚โ‚ƒโ‚‚ = eโ‚ƒ                                       =  vโ‚„Bโ‚โ‚‚eโ‚ƒ
eโ‚โ‚‚โ‚ƒโ‚„vโ‚„eโ‚„Bโ‚โ‚„eโ‚โ‚„ = 0
eโ‚โ‚‚โ‚ƒโ‚„vโ‚„eโ‚„Bโ‚‚โ‚„eโ‚‚โ‚„ = 0
eโ‚โ‚‚โ‚ƒโ‚„vโ‚„eโ‚„Bโ‚ƒโ‚„eโ‚ƒโ‚„ = 0

done

2 * p * vโ‚ (Bโ‚‚โ‚ƒeโ‚„ + Bโ‚‚โ‚„eโ‚ƒ - Bโ‚ƒโ‚„eโ‚‚)
2 * p * vโ‚‚ (Bโ‚ƒโ‚eโ‚„ - Bโ‚โ‚„eโ‚ƒ + Bโ‚ƒโ‚„eโ‚)
2 * p * vโ‚ƒ (Bโ‚โ‚‚eโ‚„ + Bโ‚โ‚„eโ‚‚ - Bโ‚‚โ‚„eโ‚)
2 * p * vโ‚„ (Bโ‚‚โ‚ƒeโ‚ + Bโ‚ƒโ‚eโ‚‚ + Bโ‚โ‚‚eโ‚ƒ)

0 mistakes on initial try but thats easy if you can look up 4D

I got hinted on checking you can find the SO(3,1) Lie Group here so the Lorentz-Group which well is not a coincidence as we do spacetime

Putting it all together

(sยฒ + pยฒ - โŸจBยฒโŸฉโ‚€)v + 2s(v ยท B) + 2I(v โˆง B) + 2(v ยท B) ยท B

sยฒ

R[0]ยฒ

pยฒ

R[7]ยฒ

โŸจBยฒโŸฉโ‚€

-Bโ‚‚โ‚ƒยฒ -Bโ‚ƒโ‚ยฒ -Bโ‚โ‚‚ยฒ + Bโ‚โ‚„ยฒ + Bโ‚‚โ‚„ยฒ + Bโ‚ƒโ‚„ยฒ

v = eโ‚

(sยฒ + pยฒ - โŸจBยฒโŸฉโ‚€)v

v'  = (sยฒ + pยฒ - (-Bโ‚‚โ‚ƒยฒ -Bโ‚ƒโ‚ยฒ -Bโ‚โ‚‚ยฒ + Bโ‚โ‚„ยฒ + Bโ‚‚โ‚„ยฒ + Bโ‚ƒโ‚„ยฒ)) eโ‚

2s(v ยท B)

    + 2 * s * (-Bโ‚ƒโ‚eโ‚ƒ + Bโ‚โ‚‚eโ‚‚ + Bโ‚โ‚„eโ‚„)

2I(v โˆง B)

    + 2 * p * (Bโ‚‚โ‚ƒeโ‚„ + Bโ‚‚โ‚„eโ‚ƒ - Bโ‚ƒโ‚„eโ‚‚)

2(v ยท B) ยท B

    + 2 * (+Bโ‚ƒโ‚Bโ‚‚โ‚ƒeโ‚‚ -Bโ‚ƒโ‚ยฒeโ‚ -Bโ‚ƒโ‚Bโ‚ƒโ‚„eโ‚„ +Bโ‚โ‚‚Bโ‚‚โ‚ƒeโ‚ƒ -Bโ‚โ‚‚ยฒeโ‚ +Bโ‚โ‚‚Bโ‚‚โ‚„eโ‚„ +Bโ‚โ‚„ยฒeโ‚ +Bโ‚โ‚„Bโ‚‚โ‚„eโ‚‚ +Bโ‚โ‚„Bโ‚ƒโ‚„eโ‚ƒ)

simplify

eโ‚ Parts

    (sยฒ + pยฒ + Bโ‚‚โ‚ƒยฒ + Bโ‚ƒโ‚ยฒ + Bโ‚โ‚‚ยฒ - Bโ‚โ‚„ยฒ - Bโ‚‚โ‚„ยฒ - Bโ‚ƒโ‚„ยฒ) eโ‚ +
    2 * (-Bโ‚ƒโ‚ยฒeโ‚ -Bโ‚โ‚‚ยฒeโ‚ +Bโ‚โ‚„ยฒeโ‚)

    = (sยฒ + pยฒ + Bโ‚‚โ‚ƒยฒ - Bโ‚ƒโ‚ยฒ - Bโ‚โ‚‚ยฒ +Bโ‚โ‚„ยฒ - Bโ‚‚โ‚„ยฒ - Bโ‚ƒโ‚„ยฒ) eโ‚

eโ‚‚ Parts

    2 * s * Bโ‚โ‚‚eโ‚‚ +
    2 * p * -Bโ‚ƒโ‚„eโ‚‚ +
    2 * (+Bโ‚ƒโ‚Bโ‚‚โ‚ƒeโ‚‚ +Bโ‚โ‚„Bโ‚‚โ‚„eโ‚‚)

    = 2 * ((s * Bโ‚โ‚‚) + (p * -Bโ‚ƒโ‚„) + Bโ‚ƒโ‚Bโ‚‚โ‚ƒ + Bโ‚โ‚„Bโ‚‚โ‚„) eโ‚‚

eโ‚ƒ Parts

    2 * s * -Bโ‚ƒโ‚eโ‚ƒ +
    2 * p * Bโ‚‚โ‚„eโ‚ƒ +
    2 * (+Bโ‚โ‚‚Bโ‚‚โ‚ƒeโ‚ƒ +Bโ‚โ‚„Bโ‚ƒโ‚„eโ‚ƒ)

    = 2 * ((s * -Bโ‚ƒโ‚) + (p * Bโ‚‚โ‚„) + Bโ‚โ‚‚Bโ‚‚โ‚ƒ + Bโ‚โ‚„Bโ‚ƒโ‚„) eโ‚ƒ

eโ‚„ Parts

    2 * s * Bโ‚โ‚„eโ‚„ +
    2 * p * Bโ‚‚โ‚ƒeโ‚„ +
    2 * (-Bโ‚ƒโ‚Bโ‚ƒโ‚„eโ‚„ + Bโ‚โ‚‚Bโ‚‚โ‚„eโ‚„)

    = 2 * ((s * Bโ‚โ‚„) + (p * Bโ‚‚โ‚ƒ) - Bโ‚ƒโ‚Bโ‚ƒโ‚„ + Bโ‚โ‚‚Bโ‚‚โ‚„) eโ‚„

v = eโ‚‚

(sยฒ + pยฒ - โŸจBยฒโŸฉโ‚€)v

v'  = (sยฒ + pยฒ - (-Bโ‚‚โ‚ƒยฒ -Bโ‚ƒโ‚ยฒ -Bโ‚โ‚‚ยฒ + Bโ‚โ‚„ยฒ + Bโ‚‚โ‚„ยฒ + Bโ‚ƒโ‚„ยฒ)) eโ‚‚

2s(v ยท B)

    + 2 * s * (+Bโ‚‚โ‚ƒeโ‚ƒ - Bโ‚โ‚‚eโ‚ + Bโ‚‚โ‚„eโ‚„)

2I(v โˆง B)

    + 2 * p * (Bโ‚ƒโ‚eโ‚„ - Bโ‚โ‚„eโ‚ƒ + Bโ‚ƒโ‚„eโ‚)

2(v ยท B) ยท B

    + 2 * (-Bโ‚‚โ‚ƒยฒeโ‚‚ +Bโ‚‚โ‚ƒBโ‚ƒโ‚eโ‚ +Bโ‚‚โ‚ƒBโ‚ƒโ‚„eโ‚„ +Bโ‚โ‚‚Bโ‚ƒโ‚eโ‚ƒ -Bโ‚โ‚‚ยฒeโ‚‚ -Bโ‚โ‚‚Bโ‚โ‚„eโ‚„ +Bโ‚‚โ‚„Bโ‚โ‚„eโ‚ +Bโ‚‚โ‚„ยฒeโ‚‚ +Bโ‚‚โ‚„Bโ‚ƒโ‚„eโ‚ƒ)

simplify

MโŸจโŸฉ โ‚โ‚‚โ‚ƒยนยฒยณ โŠ—โŠ—โŠ—ร—ร—

eโ‚ Parts

    2 * s * (-Bโ‚โ‚‚eโ‚) +
    2 * p * (Bโ‚ƒโ‚„eโ‚) +
    2 * (+Bโ‚‚โ‚ƒBโ‚ƒโ‚eโ‚ + Bโ‚‚โ‚„Bโ‚โ‚„eโ‚)

    = 2 * ((s * -Bโ‚โ‚‚) + (p * Bโ‚ƒโ‚„) + Bโ‚‚โ‚ƒBโ‚ƒโ‚ + Bโ‚‚โ‚„Bโ‚โ‚„) eโ‚

eโ‚‚ Parts

    (sยฒ + pยฒ + Bโ‚‚โ‚ƒยฒ + Bโ‚ƒโ‚ยฒ + Bโ‚โ‚‚ยฒ - Bโ‚โ‚„ยฒ - Bโ‚‚โ‚„ยฒ - Bโ‚ƒโ‚„ยฒ) eโ‚‚ +
    + 2 * (-Bโ‚‚โ‚ƒยฒeโ‚‚ -Bโ‚โ‚‚ยฒeโ‚‚ +Bโ‚‚โ‚„ยฒeโ‚‚)

    = (sยฒ + pยฒ - Bโ‚‚โ‚ƒยฒ + Bโ‚ƒโ‚ยฒ - Bโ‚โ‚‚ยฒ - Bโ‚โ‚„ยฒ + Bโ‚‚โ‚„ยฒ - Bโ‚ƒโ‚„ยฒ) eโ‚‚

eโ‚ƒ Parts

    2 * s * (+Bโ‚‚โ‚ƒeโ‚ƒ) +
    2 * p * (-Bโ‚โ‚„eโ‚ƒ) +
    2 * (+Bโ‚โ‚‚Bโ‚ƒโ‚eโ‚ƒ +Bโ‚‚โ‚„Bโ‚ƒโ‚„eโ‚ƒ)

    = 2 * ((s * Bโ‚‚โ‚ƒ) + (p * -Bโ‚โ‚„) + Bโ‚โ‚‚Bโ‚ƒโ‚ + Bโ‚‚โ‚„Bโ‚ƒโ‚„) eโ‚ƒ

eโ‚„ Parts

    2 * s * (Bโ‚‚โ‚„eโ‚„) +
    2 * p * (Bโ‚ƒโ‚eโ‚„) +
    2 * (+Bโ‚‚โ‚ƒBโ‚ƒโ‚„eโ‚„ -Bโ‚โ‚‚Bโ‚โ‚„eโ‚„)

    = 2 * ((s * Bโ‚‚โ‚„) + (p * Bโ‚ƒโ‚) + Bโ‚‚โ‚ƒBโ‚ƒโ‚„ - Bโ‚โ‚‚Bโ‚โ‚„) eโ‚„

v = eโ‚ƒ

(sยฒ + pยฒ - โŸจBยฒโŸฉโ‚€)v

v'  = (sยฒ + pยฒ - (-Bโ‚‚โ‚ƒยฒ -Bโ‚ƒโ‚ยฒ -Bโ‚โ‚‚ยฒ + Bโ‚โ‚„ยฒ + Bโ‚‚โ‚„ยฒ + Bโ‚ƒโ‚„ยฒ)) eโ‚ƒ

2s(v ยท B)

    + 2 * s * (-Bโ‚‚โ‚ƒeโ‚‚ + Bโ‚ƒโ‚eโ‚ + Bโ‚ƒโ‚„eโ‚„)

2I(v โˆง B)

    + 2 * p * (Bโ‚โ‚‚eโ‚„ + Bโ‚โ‚„eโ‚‚ - Bโ‚‚โ‚„eโ‚)

2(v ยท B) ยท B

    + 2 * (-Bโ‚‚โ‚ƒยฒeโ‚ƒ +Bโ‚‚โ‚ƒBโ‚โ‚‚eโ‚ -Bโ‚‚โ‚ƒBโ‚‚โ‚„eโ‚„ -Bโ‚ƒโ‚ยฒeโ‚ƒ +Bโ‚ƒโ‚Bโ‚โ‚‚eโ‚‚ +Bโ‚ƒโ‚Bโ‚โ‚„eโ‚„ +Bโ‚ƒโ‚„Bโ‚โ‚„eโ‚ +Bโ‚ƒโ‚„Bโ‚‚โ‚„eโ‚‚ +Bโ‚ƒโ‚„ยฒeโ‚ƒ)

simplify

eโ‚ Parts

    2 * s * (Bโ‚ƒโ‚eโ‚) +
    2 * p * (-Bโ‚‚โ‚„eโ‚) +
    2 * (+Bโ‚‚โ‚ƒBโ‚โ‚‚eโ‚ +Bโ‚ƒโ‚„Bโ‚โ‚„eโ‚)

    = 2 * ((s * Bโ‚ƒโ‚) + (p * -Bโ‚‚โ‚„) + Bโ‚‚โ‚ƒBโ‚โ‚‚ + Bโ‚ƒโ‚„Bโ‚โ‚„) eโ‚

eโ‚‚ Parts

    2 * s * (-Bโ‚‚โ‚ƒeโ‚‚) + 
    2 * p * (Bโ‚โ‚„eโ‚‚) +
    2 * (+Bโ‚ƒโ‚Bโ‚โ‚‚eโ‚‚ + Bโ‚ƒโ‚„Bโ‚‚โ‚„eโ‚‚)

    = 2 * ((s * -Bโ‚‚โ‚ƒ) + (p * Bโ‚โ‚„) + Bโ‚ƒโ‚Bโ‚โ‚‚ + Bโ‚ƒโ‚„Bโ‚‚โ‚„) eโ‚‚

eโ‚ƒ Parts

    (sยฒ + pยฒ + Bโ‚‚โ‚ƒยฒ + Bโ‚ƒโ‚ยฒ + Bโ‚โ‚‚ยฒ - Bโ‚โ‚„ยฒ - Bโ‚‚โ‚„ยฒ - Bโ‚ƒโ‚„ยฒ) eโ‚ƒ +
    2 * (-Bโ‚‚โ‚ƒยฒeโ‚ƒ -Bโ‚ƒโ‚ยฒeโ‚ƒ  +Bโ‚ƒโ‚„ยฒeโ‚ƒ )

    = (sยฒ + pยฒ - Bโ‚‚โ‚ƒยฒ - Bโ‚ƒโ‚ยฒ + Bโ‚โ‚‚ยฒ - Bโ‚โ‚„ยฒ - Bโ‚‚โ‚„ยฒ + Bโ‚ƒโ‚„ยฒ) eโ‚ƒ

eโ‚„ Parts

    2 * s * (Bโ‚ƒโ‚„eโ‚„) +
    2 * p * (Bโ‚โ‚‚eโ‚„) +
    2 * (-Bโ‚‚โ‚ƒBโ‚‚โ‚„eโ‚„ +Bโ‚ƒโ‚Bโ‚โ‚„eโ‚„)

    = 2 * ((s * Bโ‚ƒโ‚„) + (p * Bโ‚โ‚‚) - Bโ‚‚โ‚ƒBโ‚‚โ‚„ + Bโ‚ƒโ‚Bโ‚โ‚„) eโ‚„

v = eโ‚„

(sยฒ + pยฒ - โŸจBยฒโŸฉโ‚€)v

v'  = (sยฒ + pยฒ - (-Bโ‚‚โ‚ƒยฒ -Bโ‚ƒโ‚ยฒ -Bโ‚โ‚‚ยฒ + Bโ‚โ‚„ยฒ + Bโ‚‚โ‚„ยฒ + Bโ‚ƒโ‚„ยฒ)) eโ‚„

2s(v ยท B)

    + 2 * s * (+Bโ‚โ‚„eโ‚ + Bโ‚‚โ‚„eโ‚‚ + Bโ‚ƒโ‚„eโ‚ƒ)

2I(v โˆง B)

    + 2 * p * (Bโ‚‚โ‚ƒeโ‚ + Bโ‚ƒโ‚eโ‚‚ + Bโ‚โ‚‚eโ‚ƒ)

2(v ยท B) ยท B

    + 2 * (-Bโ‚โ‚„Bโ‚ƒโ‚eโ‚ƒ +Bโ‚โ‚„Bโ‚โ‚‚eโ‚‚ +Bโ‚โ‚„ยฒeโ‚„ +Bโ‚‚โ‚„Bโ‚‚โ‚ƒeโ‚ƒ -Bโ‚‚โ‚„Bโ‚โ‚‚eโ‚ +Bโ‚‚โ‚„ยฒeโ‚„ -Bโ‚ƒโ‚„Bโ‚‚โ‚ƒeโ‚‚ +Bโ‚ƒโ‚„Bโ‚ƒโ‚eโ‚ +Bโ‚ƒโ‚„ยฒeโ‚„)

simplify

eโ‚ Parts

    2 * s * (+Bโ‚โ‚„eโ‚) +
    2 * p * (Bโ‚‚โ‚ƒeโ‚) +
    2 * (-Bโ‚‚โ‚„Bโ‚โ‚‚eโ‚ +Bโ‚ƒโ‚„Bโ‚ƒโ‚eโ‚)

    = 2 * ((s * Bโ‚โ‚„) + (p * Bโ‚‚โ‚ƒ) - Bโ‚‚โ‚„Bโ‚โ‚‚ + Bโ‚ƒโ‚„Bโ‚ƒโ‚) eโ‚

eโ‚‚ Parts

    2 * s * (Bโ‚‚โ‚„eโ‚‚) +
    2 * p * (Bโ‚ƒโ‚eโ‚‚) +
    2 * (+Bโ‚โ‚„Bโ‚โ‚‚eโ‚‚ -Bโ‚ƒโ‚„Bโ‚‚โ‚ƒeโ‚‚)

    = 2 * ((s * Bโ‚‚โ‚„) + (p * Bโ‚ƒโ‚) + Bโ‚โ‚„Bโ‚โ‚‚ - Bโ‚ƒโ‚„Bโ‚‚โ‚ƒ) eโ‚‚

eโ‚ƒ Parts

    2 * s * (Bโ‚ƒโ‚„eโ‚ƒ) +
    2 * p * (Bโ‚โ‚‚eโ‚ƒ) +
    2 * (-Bโ‚โ‚„Bโ‚ƒโ‚eโ‚ƒ +Bโ‚‚โ‚„Bโ‚‚โ‚ƒeโ‚ƒ)

    = 2 * ((s * Bโ‚ƒโ‚„) + (p * Bโ‚โ‚‚) - Bโ‚โ‚„Bโ‚ƒโ‚ + Bโ‚‚โ‚„Bโ‚‚โ‚ƒ) eโ‚ƒ

eโ‚„ Parts

    (sยฒ + pยฒ + Bโ‚‚โ‚ƒยฒ + Bโ‚ƒโ‚ยฒ + Bโ‚โ‚‚ยฒ - Bโ‚โ‚„ยฒ - Bโ‚‚โ‚„ยฒ - Bโ‚ƒโ‚„ยฒ) eโ‚„ +
    2 * (+Bโ‚โ‚„ยฒeโ‚„ +Bโ‚‚โ‚„ยฒeโ‚„ +Bโ‚ƒโ‚„ยฒeโ‚„)

    = (sยฒ + pยฒ + Bโ‚‚โ‚ƒยฒ + Bโ‚ƒโ‚ยฒ + Bโ‚โ‚‚ยฒ + Bโ‚โ‚„ยฒ + Bโ‚‚โ‚„ยฒ + Bโ‚ƒโ‚„ยฒ) eโ‚„

combine

v'โ‚ =   (sยฒ + pยฒ + Bโ‚‚โ‚ƒยฒ - Bโ‚ƒโ‚ยฒ - Bโ‚โ‚‚ยฒ + Bโ‚โ‚„ยฒ - Bโ‚‚โ‚„ยฒ - Bโ‚ƒโ‚„ยฒ) vโ‚ +
        2 * ((s * -Bโ‚โ‚‚) + (p * Bโ‚ƒโ‚„) + Bโ‚‚โ‚ƒBโ‚ƒโ‚ + Bโ‚‚โ‚„Bโ‚โ‚„) vโ‚‚ +
        2 * ((s * Bโ‚ƒโ‚) + (p * -Bโ‚‚โ‚„) + Bโ‚‚โ‚ƒBโ‚โ‚‚ + Bโ‚ƒโ‚„Bโ‚โ‚„) vโ‚ƒ +
        2 * ((s * Bโ‚โ‚„) + (p * Bโ‚‚โ‚ƒ) - Bโ‚‚โ‚„Bโ‚โ‚‚ + Bโ‚ƒโ‚„Bโ‚ƒโ‚) vโ‚„

v'โ‚‚ =   2 * ((s * Bโ‚โ‚‚) + (p * -Bโ‚ƒโ‚„) + Bโ‚ƒโ‚Bโ‚‚โ‚ƒ + Bโ‚โ‚„Bโ‚‚โ‚„) vโ‚ +
        (sยฒ + pยฒ - Bโ‚‚โ‚ƒยฒ + Bโ‚ƒโ‚ยฒ - Bโ‚โ‚‚ยฒ - Bโ‚โ‚„ยฒ + Bโ‚‚โ‚„ยฒ - Bโ‚ƒโ‚„ยฒ) vโ‚‚ +
        2 * ((s * -Bโ‚‚โ‚ƒ) + (p * Bโ‚โ‚„) + Bโ‚ƒโ‚Bโ‚โ‚‚ + Bโ‚ƒโ‚„Bโ‚‚โ‚„) vโ‚ƒ +
        2 * ((s * Bโ‚‚โ‚„) + (p * Bโ‚ƒโ‚) + Bโ‚โ‚„Bโ‚โ‚‚ - Bโ‚ƒโ‚„Bโ‚‚โ‚ƒ) vโ‚„

v'โ‚ƒ =   2 * ((s * -Bโ‚ƒโ‚) + (p * Bโ‚‚โ‚„) + Bโ‚โ‚‚Bโ‚‚โ‚ƒ + Bโ‚โ‚„Bโ‚ƒโ‚„) vโ‚ +
        2 * ((s * Bโ‚‚โ‚ƒ) + (p * -Bโ‚โ‚„) + Bโ‚โ‚‚Bโ‚ƒโ‚ + Bโ‚‚โ‚„Bโ‚ƒโ‚„) vโ‚‚ +
        (sยฒ + pยฒ - Bโ‚‚โ‚ƒยฒ - Bโ‚ƒโ‚ยฒ + Bโ‚โ‚‚ยฒ - Bโ‚โ‚„ยฒ - Bโ‚‚โ‚„ยฒ + Bโ‚ƒโ‚„ยฒ) vโ‚ƒ +
        2 * ((s * Bโ‚ƒโ‚„) + (p * Bโ‚โ‚‚) - Bโ‚โ‚„Bโ‚ƒโ‚ + Bโ‚‚โ‚„Bโ‚‚โ‚ƒ) vโ‚„

v'โ‚„ =   2 * ((s * Bโ‚โ‚„) + (p * Bโ‚‚โ‚ƒ) - Bโ‚ƒโ‚Bโ‚ƒโ‚„ + Bโ‚โ‚‚Bโ‚‚โ‚„) vโ‚ +
        2 * ((s * Bโ‚‚โ‚„) + (p * Bโ‚ƒโ‚) + Bโ‚‚โ‚ƒBโ‚ƒโ‚„ - Bโ‚โ‚‚Bโ‚โ‚„) vโ‚‚ +
        2 * ((s * Bโ‚ƒโ‚„) + (p * Bโ‚โ‚‚) - Bโ‚‚โ‚ƒBโ‚‚โ‚„ + Bโ‚ƒโ‚Bโ‚โ‚„) vโ‚ƒ +
        (sยฒ + pยฒ + Bโ‚‚โ‚ƒยฒ + Bโ‚ƒโ‚ยฒ + Bโ‚โ‚‚ยฒ + Bโ‚โ‚„ยฒ + Bโ‚‚โ‚„ยฒ + Bโ‚ƒโ‚„ยฒ) vโ‚„

i made lots of mistakes here sadly ... corrected i think but well, ill see

โŸจMโŸฉ(2)

eโ‚โ‚‚ eโ‚‚โ‚ƒ eโ‚ƒโ‚ eยณยน โˆง

Rร—R

R1 ร— R2

R1*R2 = (R1[0] + R1[1] eโ‚‚โ‚ƒ + R1[2] eโ‚ƒโ‚ + R1[3] eโ‚โ‚‚ + R1[4] eโ‚โ‚„ + R1[5] eโ‚‚โ‚„ + R1[6] eโ‚ƒโ‚„ + R1[7] eโ‚โ‚‚โ‚ƒโ‚„)
      * (R2[0] + R2[1] eโ‚‚โ‚ƒ + R2[2] eโ‚ƒโ‚ + R2[3] eโ‚โ‚‚ + R2[4] eโ‚โ‚„ + R2[5] eโ‚‚โ‚„ + R2[6] eโ‚ƒโ‚„ + R2[7] eโ‚โ‚‚โ‚ƒโ‚„)

      = R1[0]     R2[0] + R1[0]     R2[1] eโ‚‚โ‚ƒ + R1[0]     R2[2] eโ‚ƒโ‚ + R1[0]     R2[3] eโ‚โ‚‚ + R1[0]     R2[4] eโ‚โ‚„ + R1[0]     R2[5] eโ‚‚โ‚„ + R1[0]     R2[6] eโ‚ƒโ‚„ + R1[0]     R2[7] eโ‚โ‚‚โ‚ƒโ‚„

      + R1[1] eโ‚‚โ‚ƒ R2[0] + R1[1] eโ‚‚โ‚ƒ R2[1] eโ‚‚โ‚ƒ + R1[1] eโ‚‚โ‚ƒ R2[2] eโ‚ƒโ‚ + R1[1] eโ‚‚โ‚ƒ R2[3] eโ‚โ‚‚ + R1[1] eโ‚‚โ‚ƒ R2[4] eโ‚โ‚„ + R1[1] eโ‚‚โ‚ƒ R2[5] eโ‚‚โ‚„ + R1[1] eโ‚‚โ‚ƒ R2[6] eโ‚ƒโ‚„ + R1[1] eโ‚‚โ‚ƒ R2[7] eโ‚โ‚‚โ‚ƒโ‚„
      + R1[2] eโ‚ƒโ‚ R2[0] + R1[2] eโ‚ƒโ‚ R2[1] eโ‚‚โ‚ƒ + R1[2] eโ‚ƒโ‚ R2[2] eโ‚ƒโ‚ + R1[2] eโ‚ƒโ‚ R2[3] eโ‚โ‚‚ + R1[2] eโ‚ƒโ‚ R2[4] eโ‚โ‚„ + R1[2] eโ‚ƒโ‚ R2[5] eโ‚‚โ‚„ + R1[2] eโ‚ƒโ‚ R2[6] eโ‚ƒโ‚„ + R1[2] eโ‚ƒโ‚ R2[7] eโ‚โ‚‚โ‚ƒโ‚„
      + R1[3] eโ‚โ‚‚ R2[0] + R1[3] eโ‚โ‚‚ R2[1] eโ‚‚โ‚ƒ + R1[3] eโ‚โ‚‚ R2[2] eโ‚ƒโ‚ + R1[3] eโ‚โ‚‚ R2[3] eโ‚โ‚‚ + R1[3] eโ‚โ‚‚ R2[4] eโ‚โ‚„ + R1[3] eโ‚โ‚‚ R2[5] eโ‚‚โ‚„ + R1[3] eโ‚โ‚‚ R2[6] eโ‚ƒโ‚„ + R1[3] eโ‚โ‚‚ R2[7] eโ‚โ‚‚โ‚ƒโ‚„
      + R1[4] eโ‚โ‚„ R2[0] + R1[4] eโ‚โ‚„ R2[1] eโ‚‚โ‚ƒ + R1[4] eโ‚โ‚„ R2[2] eโ‚ƒโ‚ + R1[4] eโ‚โ‚„ R2[3] eโ‚โ‚‚ + R1[4] eโ‚โ‚„ R2[4] eโ‚โ‚„ + R1[4] eโ‚โ‚„ R2[5] eโ‚‚โ‚„ + R1[4] eโ‚โ‚„ R2[6] eโ‚ƒโ‚„ + R1[4] eโ‚โ‚„ R2[7] eโ‚โ‚‚โ‚ƒโ‚„
      + R1[5] eโ‚‚โ‚„ R2[0] + R1[5] eโ‚‚โ‚„ R2[1] eโ‚‚โ‚ƒ + R1[5] eโ‚‚โ‚„ R2[2] eโ‚ƒโ‚ + R1[5] eโ‚‚โ‚„ R2[3] eโ‚โ‚‚ + R1[5] eโ‚‚โ‚„ R2[4] eโ‚โ‚„ + R1[5] eโ‚‚โ‚„ R2[5] eโ‚‚โ‚„ + R1[5] eโ‚‚โ‚„ R2[6] eโ‚ƒโ‚„ + R1[5] eโ‚‚โ‚„ R2[7] eโ‚โ‚‚โ‚ƒโ‚„
      + R1[6] eโ‚ƒโ‚„ R2[0] + R1[6] eโ‚ƒโ‚„ R2[1] eโ‚‚โ‚ƒ + R1[6] eโ‚ƒโ‚„ R2[2] eโ‚ƒโ‚ + R1[6] eโ‚ƒโ‚„ R2[3] eโ‚โ‚‚ + R1[6] eโ‚ƒโ‚„ R2[4] eโ‚โ‚„ + R1[6] eโ‚ƒโ‚„ R2[5] eโ‚‚โ‚„ + R1[6] eโ‚ƒโ‚„ R2[6] eโ‚ƒโ‚„ + R1[6] eโ‚ƒโ‚„ R2[7] eโ‚โ‚‚โ‚ƒโ‚„

      + R1[7] eโ‚โ‚‚โ‚ƒโ‚„ R2[0] + R1[7] eโ‚โ‚‚โ‚ƒโ‚„ R2[1] eโ‚‚โ‚ƒ + R1[7] eโ‚โ‚‚โ‚ƒโ‚„ R2[2] eโ‚ƒโ‚ + R1[7] eโ‚โ‚‚โ‚ƒโ‚„ R2[3] eโ‚โ‚‚ + R1[7] eโ‚โ‚‚โ‚ƒโ‚„ R2[4] eโ‚โ‚„ + R1[7] eโ‚โ‚‚โ‚ƒโ‚„ R2[5] eโ‚‚โ‚„ + R1[7] eโ‚โ‚‚โ‚ƒโ‚„ R2[6] eโ‚ƒโ‚„ + R1[7] eโ‚โ‚‚โ‚ƒโ‚„ R2[7] eโ‚โ‚‚โ‚ƒโ‚„

First lets solve all same planes to -1 (spatial) and 1 (with time eโ‚„ / boosts)

R1*R2 = (R1[0] + R1[1] eโ‚‚โ‚ƒ + R1[2] eโ‚ƒโ‚ + R1[3] eโ‚โ‚‚ + R1[4] eโ‚โ‚„ + R1[5] eโ‚‚โ‚„ + R1[6] eโ‚ƒโ‚„ + R1[7] eโ‚โ‚‚โ‚ƒโ‚„)
      * (R2[0] + R2[1] eโ‚‚โ‚ƒ + R2[2] eโ‚ƒโ‚ + R2[3] eโ‚โ‚‚ + R2[4] eโ‚โ‚„ + R2[5] eโ‚‚โ‚„ + R2[6] eโ‚ƒโ‚„ + R2[7] eโ‚โ‚‚โ‚ƒโ‚„)

      = R1[0]     R2[0] + R1[0]     R2[1] eโ‚‚โ‚ƒ + R1[0]     R2[2] eโ‚ƒโ‚ + R1[0]     R2[3] eโ‚โ‚‚ + R1[0]     R2[4] eโ‚โ‚„ + R1[0]     R2[5] eโ‚‚โ‚„ + R1[0]     R2[6] eโ‚ƒโ‚„ + R1[0]     R2[7] eโ‚โ‚‚โ‚ƒโ‚„

      + R1[1] eโ‚‚โ‚ƒ R2[0] - R1[1]     R2[1]     + R1[1] eโ‚‚โ‚ƒ R2[2] eโ‚ƒโ‚ + R1[1] eโ‚‚โ‚ƒ R2[3] eโ‚โ‚‚ + R1[1] eโ‚‚โ‚ƒ R2[4] eโ‚โ‚„ + R1[1] eโ‚‚โ‚ƒ R2[5] eโ‚‚โ‚„ + R1[1] eโ‚‚โ‚ƒ R2[6] eโ‚ƒโ‚„ + R1[1] eโ‚‚โ‚ƒ R2[7] eโ‚โ‚‚โ‚ƒโ‚„
      + R1[2] eโ‚ƒโ‚ R2[0] + R1[2] eโ‚ƒโ‚ R2[1] eโ‚‚โ‚ƒ - R1[2]     R2[2]     + R1[2] eโ‚ƒโ‚ R2[3] eโ‚โ‚‚ + R1[2] eโ‚ƒโ‚ R2[4] eโ‚โ‚„ + R1[2] eโ‚ƒโ‚ R2[5] eโ‚‚โ‚„ + R1[2] eโ‚ƒโ‚ R2[6] eโ‚ƒโ‚„ + R1[2] eโ‚ƒโ‚ R2[7] eโ‚โ‚‚โ‚ƒโ‚„
      + R1[3] eโ‚โ‚‚ R2[0] + R1[3] eโ‚โ‚‚ R2[1] eโ‚‚โ‚ƒ + R1[3] eโ‚โ‚‚ R2[2] eโ‚ƒโ‚ - R1[3]     R2[3]     + R1[3] eโ‚โ‚‚ R2[4] eโ‚โ‚„ + R1[3] eโ‚โ‚‚ R2[5] eโ‚‚โ‚„ + R1[3] eโ‚โ‚‚ R2[6] eโ‚ƒโ‚„ + R1[3] eโ‚โ‚‚ R2[7] eโ‚โ‚‚โ‚ƒโ‚„
      + R1[4] eโ‚โ‚„ R2[0] + R1[4] eโ‚โ‚„ R2[1] eโ‚‚โ‚ƒ + R1[4] eโ‚โ‚„ R2[2] eโ‚ƒโ‚ + R1[4] eโ‚โ‚„ R2[3] eโ‚โ‚‚ + R1[4]     R2[4]     + R1[4] eโ‚โ‚„ R2[5] eโ‚‚โ‚„ + R1[4] eโ‚โ‚„ R2[6] eโ‚ƒโ‚„ + R1[4] eโ‚โ‚„ R2[7] eโ‚โ‚‚โ‚ƒโ‚„
      + R1[5] eโ‚‚โ‚„ R2[0] + R1[5] eโ‚‚โ‚„ R2[1] eโ‚‚โ‚ƒ + R1[5] eโ‚‚โ‚„ R2[2] eโ‚ƒโ‚ + R1[5] eโ‚‚โ‚„ R2[3] eโ‚โ‚‚ + R1[5] eโ‚‚โ‚„ R2[4] eโ‚โ‚„ + R1[5]     R2[5]     + R1[5] eโ‚‚โ‚„ R2[6] eโ‚ƒโ‚„ + R1[5] eโ‚‚โ‚„ R2[7] eโ‚โ‚‚โ‚ƒโ‚„
      + R1[6] eโ‚ƒโ‚„ R2[0] + R1[6] eโ‚ƒโ‚„ R2[1] eโ‚‚โ‚ƒ + R1[6] eโ‚ƒโ‚„ R2[2] eโ‚ƒโ‚ + R1[6] eโ‚ƒโ‚„ R2[3] eโ‚โ‚‚ + R1[6] eโ‚ƒโ‚„ R2[4] eโ‚โ‚„ + R1[6] eโ‚ƒโ‚„ R2[5] eโ‚‚โ‚„ + R1[6]     R2[6]     + R1[6] eโ‚ƒโ‚„ R2[7] eโ‚โ‚‚โ‚ƒโ‚„

      + R1[7] eโ‚โ‚‚โ‚ƒโ‚„ R2[0] + R1[7] eโ‚โ‚‚โ‚ƒโ‚„ R2[1] eโ‚‚โ‚ƒ + R1[7] eโ‚โ‚‚โ‚ƒโ‚„ R2[2] eโ‚ƒโ‚ + R1[7] eโ‚โ‚‚โ‚ƒโ‚„ R2[3] eโ‚โ‚‚ + R1[7] eโ‚โ‚‚โ‚ƒโ‚„ R2[4] eโ‚โ‚„ + R1[7] eโ‚โ‚‚โ‚ƒโ‚„ R2[5] eโ‚‚โ‚„ + R1[7] eโ‚โ‚‚โ‚ƒโ‚„ R2[6] eโ‚ƒโ‚„ + R1[7] eโ‚โ‚‚โ‚ƒโ‚„ R2[7] eโ‚โ‚‚โ‚ƒโ‚„

eโ‚โ‚‚โ‚ƒโ‚„ยฒ = eโ‚โ‚‚โ‚ƒโ‚„โ‚โ‚‚โ‚ƒโ‚„ = -eโ‚โ‚‚โ‚ƒโ‚โ‚„โ‚‚โ‚ƒโ‚„ = eโ‚โ‚‚โ‚โ‚ƒโ‚„โ‚‚โ‚ƒโ‚„ = -eโ‚‚โ‚ƒโ‚„โ‚‚โ‚ƒโ‚„ = eโ‚‚โ‚ƒโ‚‚โ‚„โ‚ƒโ‚„ = -eโ‚ƒโ‚„โ‚ƒโ‚„ = eโ‚„โ‚„ = -1

Lets do all plane multipications sharing an axis

R1*R2 = (R1[0] + R1[1] eโ‚‚โ‚ƒ + R1[2] eโ‚ƒโ‚ + R1[3] eโ‚โ‚‚ + R1[4] eโ‚โ‚„ + R1[5] eโ‚‚โ‚„ + R1[6] eโ‚ƒโ‚„ + R1[7] eโ‚โ‚‚โ‚ƒโ‚„)
      * (R2[0] + R2[1] eโ‚‚โ‚ƒ + R2[2] eโ‚ƒโ‚ + R2[3] eโ‚โ‚‚ + R2[4] eโ‚โ‚„ + R2[5] eโ‚‚โ‚„ + R2[6] eโ‚ƒโ‚„ + R2[7] eโ‚โ‚‚โ‚ƒโ‚„)

      = R1[0]     R2[0]     + R1[0]     R2[1] eโ‚‚โ‚ƒ   + R1[0]     R2[2] eโ‚ƒโ‚   + R1[0]     R2[3] eโ‚โ‚‚   + R1[0]     R2[4] eโ‚โ‚„   + R1[0]     R2[5] eโ‚‚โ‚„   + R1[0]     R2[6] eโ‚ƒโ‚„   + R1[0]     R2[7] eโ‚โ‚‚โ‚ƒโ‚„

      + R1[1] eโ‚‚โ‚ƒ R2[0]     - R1[1]     R2[1]       - R1[1]     R2[2] eโ‚โ‚‚   + R1[1]     R2[3] eโ‚ƒโ‚   + R1[1]     R2[4] eโ‚โ‚‚โ‚ƒโ‚„ - R1[1]     R2[5] eโ‚ƒโ‚„   + R1[1]     R2[6] eโ‚‚โ‚„   - R1[1]     R2[7] eโ‚โ‚„
      + R1[2] eโ‚ƒโ‚ R2[0]     + R1[2]     R2[1] eโ‚โ‚‚   - R1[2]     R2[2]       - R1[2]     R2[3] eโ‚‚โ‚ƒ   + R1[2]     R2[4] eโ‚ƒโ‚„   + R1[2]     R2[5] eโ‚โ‚‚โ‚ƒโ‚„ - R1[2]     R2[6] eโ‚โ‚„   - R1[2]     R2[7] eโ‚‚โ‚„
      + R1[3] eโ‚โ‚‚ R2[0]     - R1[3]     R2[1] eโ‚ƒโ‚   + R1[3]     R2[2] eโ‚‚โ‚ƒ   - R1[3]     R2[3]       - R1[3]     R2[4] eโ‚‚โ‚„   + R1[3]     R2[5] eโ‚โ‚„   + R1[3]     R2[6] eโ‚โ‚‚โ‚ƒโ‚„ - R1[3]     R2[7] eโ‚ƒโ‚„
      + R1[4] eโ‚โ‚„ R2[0]     + R1[4]     R2[1] eโ‚โ‚‚โ‚ƒโ‚„ - R1[4]     R2[2] eโ‚ƒโ‚„   + R1[4]     R2[3] eโ‚‚โ‚„   + R1[4]     R2[4]       + R1[4]     R2[5] eโ‚โ‚‚   - R1[4]     R2[6] eโ‚ƒโ‚   + R1[4]     R2[7] eโ‚‚โ‚ƒ
      + R1[5] eโ‚‚โ‚„ R2[0]     + R1[5]     R2[1] eโ‚ƒโ‚„   + R1[5]     R2[2] eโ‚โ‚‚โ‚ƒโ‚„ - R1[5]     R2[3] eโ‚โ‚„   - R1[5]     R2[4] eโ‚โ‚‚   + R1[5]     R2[5]       + R1[5]     R2[6] eโ‚‚โ‚ƒ   + R1[5]     R2[7] eโ‚ƒโ‚
      + R1[6] eโ‚ƒโ‚„ R2[0]     - R1[6]     R2[1] eโ‚‚โ‚„   + R1[6]     R2[2] eโ‚โ‚„   + R1[6]     R2[3] eโ‚โ‚‚โ‚ƒโ‚„ + R1[6]     R2[4] eโ‚ƒโ‚   - R1[6]     R2[5] eโ‚‚โ‚ƒ   + R1[6]     R2[6]       + R1[6]     R2[7] eโ‚โ‚‚

      + R1[7] eโ‚โ‚‚โ‚ƒโ‚„ R2[0]   - R1[7]     R2[1] eโ‚โ‚„   - R1[7]     R2[2] eโ‚‚โ‚„   - R1[7]     R2[3] eโ‚ƒโ‚„   + R1[7]     R2[4] eโ‚‚โ‚ƒ   + R1[7]     R2[5] eโ‚ƒโ‚   + R1[7]     R2[6] eโ‚โ‚‚   - R1[7]     R2[7]

For some reason, i should know better, i made lots of mistakes here

Collect

R'[0] s     = R1[0] R2[0] - R1[1] R2[1] - R1[2] R2[2] - R1[3] R2[3] + R1[4] R2[4] + R1[5] R2[5] + R1[6] R2[6] - R1[7] R2[7]
R'[1] eโ‚‚โ‚ƒ   = R1[0] R2[1] + R1[1] R2[0] - R1[2] R2[3] + R1[3] R2[2] + R1[4] R2[7] + R1[5] R2[6] - R1[6] R2[5] + R1[7] R2[4]
R'[2] eโ‚ƒโ‚   = R1[0] R2[2] + R1[1] R2[3] + R1[2] R2[0] - R1[3] R2[1] - R1[4] R2[6] + R1[5] R2[7] + R1[6] R2[4] + R1[7] R2[5]
R'[3] eโ‚โ‚‚   = R1[0] R2[3] - R1[1] R2[2] + R1[2] R2[1] + R1[3] R2[0] + R1[4] R2[5] - R1[5] R2[4] + R1[6] R2[7] + R1[7] R2[6]
R'[4] eโ‚โ‚„   = R1[0] R2[4] - R1[1] R2[7] - R1[2] R2[6] + R1[3] R2[5] + R1[4] R2[0] - R1[5] R2[3] + R1[6] R2[2] - R1[7] R2[1]
R'[5] eโ‚‚โ‚„   = R1[0] R2[5] + R1[1] R2[6] - R1[2] R2[7] - R1[3] R2[4] + R1[4] R2[3] + R1[5] R2[0] - R1[6] R2[1] - R1[7] R2[2]
R'[6] eโ‚ƒโ‚„   = R1[0] R2[6] - R1[1] R2[5] + R1[2] R2[4] - R1[3] R2[7] - R1[4] R2[2] + R1[5] R2[1] + R1[6] R2[0] - R1[7] R2[3]
R'[7] eโ‚โ‚‚โ‚ƒโ‚„ = R1[0] R2[7] + R1[1] R2[4] + R1[2] R2[5] + R1[3] R2[6] + R1[4] R2[1] + R1[5] R2[2] + R1[6] R2[3] + R1[7] R2[0]

Code

static multiply(a: Rot4, b: Rot4): Rot4 {

    const s1 = a[0], yz1 = a[1], zx1 = a[2], xy1 = a[3], xw1 = a[4], yw1 = a[5], zw1 = a[6], p1 = a[7];
    const s2 = b[0], yz2 = b[1], zx2 = b[2], xy2 = b[3], xw2 = b[4], yw2 = b[5], zw2 = b[6], p2 = b[7];

    const s = (s1 * s2 - yz1 * yz2) - (zx1 * zx2) - (xy1 * xy2) + (xw1 * xw2) + (yw1 * yw2) + (zw1 * zw2) - (p1 * p2);
    const eyz = (s1 * yz2) + (yz1 * s2) - (zx1 * xy2) + (xy1 * zx2) + (xw1 * p2) + (yw1 * zw2) - (zw1 * yw2) + (p1 * xw2);
    const ezx = (s1 * zx2) + (yz1 * xy2) + (zx1 * s2) - (xy1 * yz2) - (xw1 * zw2) + (yw1 * p2) + (zw1 * xw2) + (p1 * yw2);
    const exy = (s1 * xy2) - (yz1 * zx2) + (zx1 * yz2) + (xy1 * s2) + (xw1 * yw2) - (yw1 * xw2) + (zw1 * p2) + (p1 * zw2);
    const exw = (s1 * xw2) - (yz1 * p2) - (zx1 * zw2) + (xy1 * yw2) + (xw1 * s2) - (yw1 * xy2) + (zw1 * zx2) - (p1 * yz2);
    const eyw = (s1 * yw2) + (yz1 * zw2) - (zx1 * p2) - (xy1 * xw2) + (xw1 * xy2) + (yw1 * s2) - (zw1 * yz2) - (p1 * zx2);
    const ezw = (s1 * zw2) - (yz1 * yw2) + (zx1 * xw2) - (xy1 * p2) - (xw1 * zx2) + (yw1 * yz2) + (zw1 * s2) - (p1 * xy2);
    const exyzw = (s1 * p2) + (yz1 * xw2) + (zx1 * yw2) + (xy1 * zw2) + (xw1 * yz2) + (yw1 * zx2) + (zw1 * xy2) + (p1 * s2);

    const out = new Float32Array([s, eyz, ezx, exy, exw, eyw, ezw, exyzw]);

    return out;

}

static rotateVector4(r: Rot4, v: Vec4): Vec4 {
    const s = r[0], yz = r[1], zx = r[2], xy = r[3],
        xw = r[4], yw = r[5], zw = r[6], p = r[7];

    // Helper squares
    const s_2 = s * s;
    const yz_2 = yz * yz, zx_2 = zx * zx, xy_2 = xy * xy;
    const xw_2 = xw * xw, yw_2 = yw * yw, zw_2 = zw * zw;
    const p_2 = p * p;

    const out = new Float32Array(4);

    out[0] = ((s_2 + p_2 + yz_2 - zx_2 - xy_2 + xw_2 - yw_2 - zw_2) * v[0]) +
        (2 * ((s * -xy) + (p * zw) + (yz * zx) + (yw * xw)) * v[1]) +
        (2 * ((s * zx) + (p * -yw) + (yz * xy) + (zw * xw)) * v[2]) +
        (2 * ((s * xw) + (p * yz) - (yw * xy) + (zw * zx)) * v[3])

    out[1] = (2 * ((s * xy) + (p * -zw) + (zx * yz) + (xw * yw)) * v[0]) +
        ((s_2 + p_2 - yz_2 + zx_2 - xy_2 - xw_2 + yw_2 - zw_2) * v[1]) +
        (2 * ((s * -yz) + (p * xw) + (zx * xy) + (zw * yw)) * v[2]) +
        (2 * ((s * yw) + (p * zx) + (xw * xy) - (zw * yz)) * v[3])

    out[2] = (2 * ((s * -zx) + (p * yw) + (xy * yz) + (xw * zw)) * v[0]) +
        (2 * ((s * yz) + (p * -xw) + (xy * zx) + (yw * zw)) * v[1]) +
        ((s_2 + p_2 - yz_2 - zx_2 + xy_2 - xw_2 - yw_2 + zw_2) * v[2]) +
        (2 * ((s * zw) + (p * xy) - (xw * zx) + (yw * yz)) * v[3])

    out[3] = (2 * ((s * xw) + (p * yz) - (zx * zw) + (xy * yw)) * v[0]) +
        (2 * ((s * yw) + (p * zx) + (yz * zw) - (xy * xw)) * v[1]) +
        (2 * ((s * zw) + (p * xy) - (yz * yw) + (zx * xw)) * v[2]) +
        ((s_2 + p_2 + yz_2 + zx_2 + xy_2 + xw_2 + yw_2 + zw_2) * v[3])

    return out;
}

static toMat4(r: Rot4): Mat4 {
    const s = r[0], yz = r[1], zx = r[2], xy = r[3],
        xw = r[4], yw = r[5], zw = r[6], p = r[7];

    // Helper squares
    const s_2 = s * s;
    const yz_2 = yz * yz, zx_2 = zx * zx, xy_2 = xy * xy;
    const xw_2 = xw * xw, yw_2 = yw * yw, zw_2 = zw * zw;
    const p_2 = p * p;

    const out = MAT4_IDENTITY.slice();

    // all vโ‚™ parts IN TO OUT v'โ‚ to v'โ‚„ - COLUMN MAYOR!!

    // COLUMN 0 (Basis X: v=[1, 0, 0, 0])  
    out[0] = (s_2 + p_2 + yz_2 - zx_2 - xy_2 + xw_2 - yw_2 - zw_2);
    out[1] = 2 * ((s * xy) + (p * -zw) + (zx * yz) + (xw * yw));
    out[2] = 2 * ((s * -zx) + (p * yw) + (xy * yz) + (xw * zw));
    out[3] = 2 * ((s * xw) + (p * yz) - (zx * zw) + (xy * yw));

    // COLUMN 1 (Basis Y: v=[0, 1, 0, 0])
    out[4] = 2 * ((s * -xy) + (p * zw) + (yz * zx) + (yw * xw));
    out[5] = (s_2 + p_2 - yz_2 + zx_2 - xy_2 - xw_2 + yw_2 - zw_2);
    out[6] = 2 * ((s * yz) + (p * -xw) + (xy * zx) + (yw * zw));
    out[7] = 2 * ((s * yw) + (p * zx) + (yz * zw) - (xy * xw));

    // COLUMN 2 (Basis Z: v=[0, 0, 1, 0])
    out[8] = 2 * ((s * zx) + (p * -yw) + (yz * xy) + (zw * xw));
    out[9] = 2 * ((s * -yz) + (p * xw) + (zx * xy) + (zw * yw));
    out[10] = (s_2 + p_2 - yz_2 - zx_2 + xy_2 - xw_2 - yw_2 + zw_2);
    out[11] = 2 * ((s * zw) + (p * xy) - (yz * yw) + (zx * xw));

    // COLUMN 3 (Basis W: v=[0, 0, 0, 1])
    out[12] = 2 * ((s * xw) + (p * yz) - (yw * xy) + (zw * zx));
    out[13] = 2 * ((s * yw) + (p * zx) + (xw * xy) - (zw * yz));
    out[14] = 2 * ((s * zw) + (p * xy) - (xw * zx) + (yw * yz));
    out[15] = (s_2 + p_2 + yz_2 + zx_2 + xy_2 + xw_2 + yw_2 + zw_2);

    return out;
}

Current PTF

Hintergrund ändern. Verbraucht keinen oder einen ๐Ÿช.

Verknüpften Viewport öffnen

๐ŸŽฎ Steuerung
Dokumentation ๐Ÿ•น๏ธ
Sie sind leider kein Entwickler :(

Content Nodes Amount

Diligence / PTF Amount

FPS

Vertex-Count