APOS80
Quaternions are used for rotation of koordinates and vectors.
struct
#:mutable#:transparent)x:flonum?y:flonum?z:flonum?
struct
#:mutable#:transparent)w:flonum?v:qvector?
q1:(quaternion?)q2:(quaternion?)
q1:(quaternion?)q2:(quaternion?)
q:(quaternion?)
q:(quaternion?)
q1:(quaternion?)q2:(quaternion?)
q:(quaternion?)
q:(quaternion?)
q:(quaternion?)
q:(quaternion?)
qv:(qvector?)
;Rotation about one axis:(let*[B(q-rotateA(quaternion0.0(qvector0.00.01.0)))]);Apply rotation on quaternion with A.
;Rotation about two axis:(let*[AS(q-multiply-qqA1A2)];Combine rotations.[B(q-rotateAS(quaternion0.0(qvector0.00.01.0)))]);Apply rotation on quaternion with A.