complete sfmulti3d class
This class can represent a 3D rotation. The class has 4 double numbers which
represent the rotation as either quaternion, axis-angle or euler number depending
on the cde int/enum
The class has methods to combine with other rotations. Also many other methods,
including the ability to load and save to from VRML and x3d
There are 3 versions available depending on language:
See also the following related classes
The full source code is available on Sourceforge here:
Axiom Program
There are a number of open source programs that can solve polynomial equations. I have used Axiom, how to install Axiom here.
As an example the following shows how to generate quaternions using Clifford algebra.
I have put user input in red:
(1) -> )set mes auto off (1) -> K := Fraction Polynomial Integer (1) Fraction Polynomial Integer
Type: Domain
(2) -> qf := matrix[[1,0,0],[0,1,0],[0,0,1]]
+1 0 0+
| |
(2) |0 1 0|
| |
+0 0 1+
Type: Matrix Integer
(3) -> H := CliffordAlgebra(3, K, quadraticForm qf)
(3) CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
Type: Domain
(4) -> bases : List H :=
[1,e(1),e(2),e(3),e(1)*e(2),e(2)*e(3),e(3)*e(1),e(1)*e(2)*e(3)]
(4) [1,e ,e ,e ,e e ,e e ,- e e ,e e e ]
1 2 3 1 2 2 3 1 3 1 2 3
Type: List CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
(5) -> matrix([[bases(i)*bases(j) for i in 1..8] for j in 1..8])
+ 1 e e e e e e e - e e e e e + | 1 2 3 1 2 2 3 1 3 1 2 3| | | | e 1 - e e - e e - e e e e e e e | | 1 1 2 1 3 2 1 2 3 3 2 3 | | | | e e e 1 - e e e - e e e e - e e | | 2 1 2 2 3 1 3 1 2 3 1 3| | | | e e e e e 1 e e e e - e e e | | 3 1 3 2 3 1 2 3 2 1 1 2 | (5) | | | e e e - e e e e - 1 - e e - e e - e | | 1 2 2 1 1 2 3 1 3 2 3 3 | | | | e e e e e e - e e e - 1 e e - e | | 2 3 1 2 3 3 2 1 3 1 2 1 | | | |- e e - e e e e e e e - e e - 1 - e | | 1 3 3 1 2 3 1 2 3 1 2 2 | | | |e e e e e - e e e e - e - e - e - 1 | + 1 2 3 2 3 1 3 1 2 3 1 2 + Type: Matrix CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX) |