Quaternion
-
class
compas.geometry.
Quaternion
(w, x, y, z)[source] Bases:
compas.geometry.primitives._primitive.Primitive
Creates a
Quaternion
object.- Parameters
w (float) – The scalar (real) part of a quaternion.
x, y, z (float) – Components of the vector (complex, imaginary) part of a quaternion.
- Attributes
wxyz (list of float, read-only) – Quaternion data listing the real part first.
xyzw (list of float, read-only) – Quaternion data listing the real part last.
norm (float, read-only) – The length of the quaternion.
is_unit (bool, read-only) – True if the quaternion has unit length.
Notes
The default convention to represent a quaternion q in this module is by four real values w, x, y, z. The first value w is the scalar (real) part, and x, y, z form the vector (complex, imaginary) part 1, so that:
q=w+xi+yj+zkwhere i,j,k are basis components with following multiplication rules 2:
ii=jj=kk=ijk=−1ij=k,ji=−kjk=i,kj=−iki=j,ik=−jQuaternions are associative but not commutative.
Quaternion as rotation.
A rotation through an angle θ around an axis defined by a euclidean unit vector u=uxi+uyj+uzk can be represented as a quaternion:
q=cos(θ2)+sin(θ2)[uxi+uyj+uzk]i.e.:
w=cos(θ2)x=sin(θ2)uxy=sin(θ2)uyz=sin(θ2)uzFor a quaternion to represent a rotation or orientation, it must be unit-length. A quaternion representing a rotation p resulting from applying a rotation r to a rotation q, i.e.: p=rq, is also unit-length.
References
Examples
>>> Q = Quaternion(1.0, 1.0, 1.0, 1.0).unitized() >>> R = Quaternion(0.0,-0.1, 0.2,-0.3).unitized() >>> P = R*Q >>> P.is_unit True
Methods
__init__
(w, x, y, z)Initialize self.
canonize
()Makes the quaternion canonic.
Returns a quaternion in canonic form.
Conjugate the quaternion.
Returns a conjugate quaternion.
copy
()Makes a copy of this primitive.
from_data
(data)Construct a quaternion from a data dict.
from_frame
(frame)Creates a quaternion object from a frame.
from_json
(filepath)Construct a primitive from structured data contained in a json file.
from_matrix
(M)Create a
Quaternion
from a transformation matrix.Create a
Quaternion
from acompas.geometry.Rotatation
.to_data
()Returns the data dictionary that represents the primitive.
to_json
(filepath)Serialise the structured data representing the primitive to json.
transform
(transformation)Transform the primitive.
transformed
(transformation)Returns a transformed copy of this primitive.
unitize
()Scales the quaternion to make it unit-length.
unitized
()Returns a quaternion with a unit-length.
Validate the data of this object against its data schema (self.DATASCHEMA).
Validate the data loaded from a JSON representation of the data of this object against its data schema (self.DATASCHEMA).