Here we will use the definition of outer product as the values in the geometric product table such that : if gradeof(row)+gradeof(column) != gradeof(entry) then the entry is set to zero otherwise the entry is the same as the geometric product. Where a table entry is the sum of terms then this check is done on each term separately. For more information about the concept of an outer product see this page.
I can think of two ways of calculating the outer product for this null vector basis:
- Generate the geometric table for the null basis (as explained on this page), then set terms to zero depending on the sum of the grades as explained above (or equivitently set term to zero if operands contain a common basis term).
- Start with the outer product of e1,e2 and e3 then rotate the basis vectors to give null basis vectors.
I'm not sure if these methods are equivalent? So we will use the first method but do some tests to see if the second method is equivalent.
table for: Outer Product
a*b | b.1 | b.n0 | b.n∞ | b.n0∞ | b.n1 | b.n01 | b.n∞1 | b.n0∞1 |
a.1 | 1 | n0 | n∞ | n0∞ | n1 | n01 | n∞1 | n0∞1 |
a.n0 | n0 | 0 | n0∞*2 | 0 | n01 | 0 | n0∞1*2 | 0 |
a.n∞ | n∞ | -n0∞*2 | 0 | 0 | n∞1 | -n0∞1*2 | 0 | 0 |
a.n0∞ | n0∞ | 0 | 0 | 0 | n0∞1 | 0 | 0 | 0 |
a.n1 | n1 | -n01 | -n∞1 | n0∞1 | 0 | 0 | 0 | 0 |
a.n01 | n01 | 0 | -n0∞1*2 | 0 | 0 | 0 | 0 | 0 |
a.n∞1 | n∞1 | n0∞1*2 | 0 | 0 | 0 | 0 | 0 | 0 |
a.n0∞1 | n0∞1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
The outer product of two null vectors
Lets take x1 in Euclidean space, this gives,
P=(-n0+ x1² n∞ + 2 x1 n1)
and we want to take the inner product with x2:
Q=(-n0+ x2² n∞ + 2 x2 n1)
So the outer product is the scalar+bivector
P^Q = (-n0+ x1² n∞ + 2 x1 n1)^(-n0+ x2² n∞ + 2 x2 n1)
P^Q = n0^n0- x2² n0^n∞ - 2 x2 n0^n1 - x1² n∞^n0+ x2² x1² n∞^n∞ + 2 x2 x1² n∞^n1-2 x1 n1^n0+ x2² 2 x1 n1^n∞ + 2 x2 2 x1 n1^n1
P^Q = 1 - 2 x2² n0∞ - 2 x2 n01 +2 x1² n0∞ + 2 x2 x1² n∞1+2 x1 n01- x2² 2 x1n∞1
P^Q = 1 + 2 (x1² - x2² )n0∞ + 2 (x1-x2 ) n01+ 2 x2 x1(x1-x2) n∞1
so the inner product of two points is a scalar value+bivector.
Meet
Two Points
In the above example, if x2 = x1 then:
P^Q = 1
Investigation of alternative way to calculate inner product
The outer product for the conventional 'e' basis is represented by the following table (if an index occors more than one in the term then the term is zero):
- e1 and e3 square to positive
- e2 squares to negative
a^b |
b.e | b.e1 | b.e2 | b.e3 | b.e12 | b.e31 | b.e23 | b.e123 |
a.e | e | e1 | e2 | e3 | e12 | e31 | e23 | e123 |
a.e1 | e1 | 0 | e12 | -e31 | 0 | 0 | e123 | 0 |
a.e2 | e2 | -e12 | 0 | e23 | 0 | e123 | 0 | 0 |
a.e3 | e3 | e31 | -e23 | 0 | e123 | 0 | 0 | 0 |
a.e12 | e12 | 0 | 0 | e123 | 0 | 0 | 0 | 0 |
a.e31 | e31 | 0 | e123 | 0 | 0 | 0 | 0 | 0 |
a.e23 | e23 | e123 | 0 | 0 | 0 | 0 | 0 | 0 |
a.e123 | e123 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
We will then use this to derive the outer product table for our null vector basis.
a^b |
b.n | b.n0 | b.n∞ | b.n0∞ | b.n1 | b.n01 | b.n∞1 | b.n0∞1 |
a.n | 1 | n0 |
n∞ | n0∞ | n1 | n01 | n∞1 | n0∞1 |
a.n0 | n0 | 0 |
n0∞ -1/2 | n0/2 | n01 | 0 | n0∞1-n1/2 | n01/2 |
a.n∞ | n∞ | -n0∞+ 1/2 | 0 | n∞/2 | n∞1 | -n0∞1+n1/2 | 0 | n∞1/2 |
a.n0∞ | n0∞ | n0/2 | n∞/2 | n0∞-1/4 | n0∞1 | n01/2 | n∞1/2 | n0∞1-n1/2 |
a.n1 | n1 | -n01 | -n∞1 | n0∞1 | 0 | 0 | 0 | 0 |
a.n01 | n01 | 0 | -n0∞1+n1/2 |
n01/2 | 0 | 0 | 0 | 0 |
a.n∞1 | n∞1 | n0∞1-n1/2 | 0 | n∞1/2 | 0 | 0 | 0 | 0 |
a.n0∞1 | n0∞1 | n01/2 | n∞1/2 | n0∞1-n1/2 | 0 | 0 | 0 | 0 |
Each term in this table is calculated from:
n0= (e1 + e2)/2
n∞= (e1 - e2)/2
n1= e3
So we just multiply out each term by converting to 'e' basis, doing inner product, then converting back to 'n' basis (see full working at the end of this page).
The outer product of two null vectors
Lets take x1 in Euclidean space, this gives,
p=(-1,x1²,x1)
and we want to take the inner product with x2:
q=(-1,x2²,x2)
So the outer product is the bivector:
scalar = (x1² - x2²)/2
n0∞ = x2² - x1²
n01 = x1 - x2
n∞1 = x1²x2 - x2²x1 = x1x2(x1 - x2)
Meet
Two Points
In the above example if x1=x2 (and only if x1=x2) then:
scalar = 0
n0∞ = 0
n01 = 0
n∞1 = 0
So this gives us a way to test if x1 and x2 represent the same point since, if they do then,
p^q=0
This may not be specially useful in one dimensional Euclidean space but when we go to higher dimensions it will allow us to test if, a point lies on a line or a plane, or two lines intersect for example.
Two Points and Single Point
Above we calculated the outer product of two points p and q to give:
|
= |
|
r=(-1,x3²,x3)
|
= |
|
So using the following table and multipling out the terms:
a^b |
b.n0 -1 |
b.n∞ x3² |
b.n1 x3 |
a.n =(x1² - x2²)/2 | n0 |
n∞ | n1 |
a.n0∞=x2² - x1² | n0/2 | n∞/2 | n0∞1 |
a.n01=x1 - x2 | 0 | -n0∞1+n1/2 |
0 |
a.n∞1=x1x2(x1 - x2) | n0∞1-n1/2 | 0 | 0 |
(p^q)^r =
|
= |
|
If x3 = x1 we get:
|
= |
|
If x3 = x2 we get:
|
= |
|
If we normalise to set n0= -1 this will give n1 = ∞ with an additional n0∞1 component. I don't know how to interpret this? perhaps If x1≠x2 then meet will not be zero for any x3
Join
So instead try join: (p^q)•r by multiplying out the following terms:
a•b |
b.n0 -1 |
b.n∞ x3² |
b.n1 x3 |
a.n =(x1² - x2²)/2 | n0 |
n∞ | n1 |
a.n0∞=x2² - x1² | n0 | 0 | n1/2 |
a.n01=x1 - x2 | -n1/2 | 0 | n0 |
a.n∞1=x1x2(x1 - x2) | 0 | -n1/2 | n∞ |
(p^q)•r =
|
= |
|
If x3 = x1 we get:
|
= |
|
If x3 = x2 we get:
|
= |
|
If we normalise so n0= -1 this will give:
|
= |
|
I'm sure about the definition of • so this needs checking
Line
Above we calculated the outer product of two points p and q to give:
|
= |
|
∞=n∞
So using the following table and multipling out the terms:
a^b |
b.n∞ |
a.n =(x1² - x2²)/2 | n∞ |
a.n0∞=x2² - x1² | n∞/2 |
a.n01=x1 - x2 | -n0∞1+n1/2 |
a.n∞1=x1x2(x1 - x2) | 0 |
(p^q)^∞ =
|
= |
|
If we normalise to set n0= -1 this will give n1 = ∞ with an additional n0∞1 component. I don't know how to interpret this?
Expansion of Outer Product
Note: work in progress ignore the following
Our multiplcaition is represented by:
c=a^b
Where a, b and c are multivectors which may contain scalar, vector and bivector and trivector components.
so multiplying out all the components gives:
(an an+an0 an0+an∞ an∞+an0 an1+an0∞ an0∞+an01 an01+an∞1 an∞1+an0∞1 an0∞1)^
(bn b n+bn0 bn0+bn∞ bn∞+bn1 bn1+bn0∞ b n0∞+bn01 b n01+bn∞1 b n∞1+bn0∞1 bn0∞1)
The result is:
cn=an*bn + an0*bn1 + an0*bn∞ - an∞1*bn01
cn0=an*bn0 + an0*bn + an0∞*bn0- an0*bn01+ an01*bn1- an0∞1*bn01
cn∞=an*bn∞ + an∞*bn + an∞*bn0∞ - an0*bn∞1+ an∞1*bn1 + an∞1*bn0∞1
cn1=an*bn1 + an0*bn+ an∞*bn01- an∞1*bn0
cn0∞=an*bn0∞+an0*bn∞-an∞*bn0+an0∞*bn+an0∞*bn0∞+an0*bn0∞1-an01*bn∞1+an∞1*bn01+an0∞1*bn1+an0∞1*bn0∞1
cn01=an*bn01+an0*bn1+an0∞*bn01-an0*bn0+an01*bn-an0∞1*bn0
cn∞1=an*bn∞1+an∞*bn1+an∞*bn0∞1-an0*bn∞+an∞1*bn+an∞1*bn0∞
cn0∞1=an*bn0∞1+an0*bn∞1-an∞*bn01+an0∞*bn1+an0*bn0∞-an01*bn∞+an∞1*bn0+an0∞1*bn
Multivector Calculator
The following calculator allows you to calculate the multivector arithmetic of our rotated basis. Enter the values into the top two multivectors and then press "+ - or * " to display the result in the bottom multivector: