Quaternion

Quaternion schema, conversion helpers, normalization helpers, interpolation helpers, and quaternion-derived rotation matrices.


Schema and access model


Constructors and conversions


Algebraic operations


Interpolation and stabilization


Examples

Schema access

"Quaternion.identityQuaternion" use
"Quaternion.fieldCount" use
"control" use

{} () {} [
  Real32 identityQuaternion fieldCount printStack _:;
] "main" exportFunction

Expected Output During Compilation

4

Zero-angle construction

"Quaternion.axisAngleQuaternion" use
"control" use

{} () {} [
  (0.0r32 0.0r32 1.0r32 0.0r32) axisAngleQuaternion printStack _:;
] "main" exportFunction

Expected Output During Compilation

{
  QUATERNION: ();
  entries: (0.0r32 0.0r32 0.0r32 1.0r32);
}

Matrix conversion

"Quaternion.identityQuaternion" use
"Quaternion.matrix" use
"control" use

{} () {} [
  q: Real32 identityQuaternion;
  q matrix printStack _:;
] "main" exportFunction

Expected Output During Compilation

((1.0r32 0.0r32 0.0r32) (0.0r32 1.0r32 0.0r32) (0.0r32 0.0r32 1.0r32))

Checked normalization fallback

"Quaternion.quaternion" use
"Quaternion.unitChecked" use
"control" use

{} () {} [
  q: (0.0r32 0.0r32 0.0r32 0.0r32) quaternion;
  q unitChecked printStack _:;
] "main" exportFunction

Expected Output During Compilation

{
  QUATERNION: ();
  entries: (0.0r32 0.0r32 0.0r32 1.0r32);
}

Runtime matrix check

"Quaternion.identityQuaternion" use
"Quaternion.matrix" use
"algebra" use
"String" use
"control" use

{} Int32 {} [
  q: Real32 identityQuaternion;
  m: q matrix;
  expected: ((1.0r32 0.0r32 0.0r32) (0.0r32 1.0r32 0.0r32) (0.0r32 0.0r32 1.0r32));
  m expected = print
  LF print
  0
] "main" exportFunction

Expected Output

TRUE

See also