random method

Quaternion random()

Implementation

Quaternion random() {
  // Derived from http://planning.cs.uiuc.edu/node198.html
  // Note, this source uses w, x, y, z ordering,
  // so we swap the order below.

  var u1 = Math.random();
  var sqrt1u1 = Math.sqrt(1 - u1);
  var sqrtu1 = Math.sqrt(u1);

  var u2 = 2 * Math.pi * Math.random();

  var u3 = 2 * Math.pi * Math.random();

  return set(
    sqrt1u1 * Math.cos(u2),
    sqrtu1 * Math.sin(u3),
    sqrtu1 * Math.cos(u3),
    sqrt1u1 * Math.sin(u2),
  );
}