This was my original working before Xavier pointed out the inconsistencies. (back to main page)
Alternative using Matrix representation
perpendicular component
A
B =
(A
B) * B/|B|2
A
B can be calculated as follows:
x = Ay * Bz - By * Az
y = Az * Bx - Bz * Ax
z = Ax * By - Bx * Ay
So,
(A
B)x
= ((Az * Bx - Bz * Ax) * Bz - By * (Ax * By - Bx * Ay)) / (Bx2 +
By2 + Bz2)
(A
B)y
= ((Ax * By - Bx * Ay) * Bx - Bz * (Ay * Bz - By * Az)) / (Bx2 +
By2 + Bz2)
(A
B)z
= ((Ay * Bz - By * Az) * By - Bx * (Az * Bx - Bz * Ax)) / (Bx2 +
By2 + Bz2)
grouping terms,
(A
B)x
= (Az * Bx* Bz - Bz * Ax* Bz - Ax * By* By + Bx * Ay* By) / (Bx2
+ By2 + Bz2)
(A
B)y
= (Ax * By* Bx - Bx * Ay* Bx - Ay * Bz*Bz + By * Az*Bz) / (Bx2 +
By2 + Bz2)
(A
B)z
= (Ay * Bz* By - By * Az* By - Az * Bx*Bx + Bz * Ax*Bx) / (Bx2 +
By2 + Bz2)
In matrix form,
(A
B) = 1 / (Bx2 + By2 + Bz2)* |
| -Bz* Bz- By* By |
Bx * By |
Bx* Bz |
| By* Bx |
-Bx*Bx- Bz*Bz |
By *Bz |
| Bz *Bx |
Bz* By |
-By*By- Bx*Bx |
|
[A] |
I think the signs of all terms should be inverted, see error heading below,
can anyone help?
Alternative Form
As pointed out here, If B is normalised (unit
length) then Bx2 + By2 + Bz2 =1 so we
get:
(A
B) = |
| Bx*Bx - 1 |
Bx * By |
Bx* Bz |
| By* Bx |
By*By- 1 |
By *Bz |
| Bz *Bx |
Bz* By |
Bz*Bz - 1 |
|
[A] |
which is:
(A
B) = ( |
|
* |
|
-[I])[A] |
which is:
(A
B) = (B * Bt - [I]) [A]
where:
- [I] = unit matrix
- Bt = transpose of B vector
As this is quite a simple equation I wonder if there is a simpler way
to derive it? perhaps the method of least squares discussed
here. |
parallel component
A || P = A P * P/|B|2
A P can be calculated as follows:
Ax * Bx + Ay * By + Az * Bz
so,
(A || P)x = (Ax * Bx + Ay * By + Az * Bz) * Bx / (Bx2 + By2
+ Bz2)
(A || P)y = (Ax * Bx + Ay * By + Az * Bz) * By/ (Bx2 + By2
+ Bz2)
(A || P)z = (Ax * Bx + Ay * By + Az * Bz) * Bz/ (Bx2 + By2
+ Bz2)
in matrix form this is:
| (A || P) = 1 / (Bx2 + By2 + Bz2)* |
| Bx2 |
Bx * By |
Bx * Bz |
| By * Bx |
By2 |
By * Bz |
| Bz * Bx |
Bz * By |
Bz2 |
|
[A] |
Alternative Form
If B is normalised (unit length) then Bx2 + By2
+ Bz2 =1 so we get:
| (A || P) = |
| Bx * Bx |
Bx * By |
Bx * Bz |
| By * Bx |
By * By |
By * Bz |
| Bz * Bx |
Bz * By |
Bz * Bz |
|
[A] |
which is:
(A
P) = ( |
|
* |
|
)[A] |
which is:
(A
P) = (B * Bt) [A]
where:
- Bt = transpose of B vector
As this is quite a simple equation I wonder if there is a simpler way
to derive it? perhaps the method of least squares discussed
here. |
Error
we have shown above that:
A = A || B + A
B
which would give:
A = (B * Bt - [I] + B * Bt)[A]
which should simplify to A = [I][A] but it does not so it looks like the sign
of (A
B) is inverted can anyone see where I went wrong?
|
metadata block
|
|
|
| see also: |
|
| Correspondence about this page |
|
|
Book Shop - Further reading.
Where I can, I have put links to Amazon for books that are relevant to
the subject, click on the appropriate country flag to get more details
of the book or to buy it from them.
|
New Foundations for Classical Mechanics (Fundamental Theories of Physics). This
is very good on the geometric interpretation of this algebra. It has lots of insights
into the mechanics of solid bodies. I still cant work out if the position, velocity,
etc. of solid bodies can be represented by a 3D multivector or if 4 or 5D multivectors
are required to represent translation and rotation.
Other Math Books
|
|
Commercial Software Shop
Where I can, I have put links to Amazon for commercial software, not
directly related to the software project, but related to the subject being
discussed, click on the appropriate country flag to get more details of
the software or to buy it from them.
|
|
|
Can you help?
Please send me any improvements to
here. I would appreciate ideas to make the pages more useful including
error correction, ideas for new pages, improvements to wording. It helps
if you quote the full URL of the page.
|
Are the signs of the terms correct? see error heading above
Is there a simpler derivation?
|
|
progam
I am working on a project which uses these principles, if you would like
to help me with this you are welcome to join in, here:
|
http://sourceforge.net/projects/mjbworld/
|
This site may have errors. Don't use for critical systems.