extractRotationFromMatrix method

Quaternion extractRotationFromMatrix(
  1. Matrix4 m
)

Extracts the rotation of the given 4x4 matrix and stores it in this quaternion.

Implementation

Quaternion extractRotationFromMatrix(Matrix4 m ) {
	final e = matrix.elements;
	final me = m.elements;

	// remove scaling from the 3x3 portion
	final sx = 1 / vector.fromMatrix4Column( m, 0 ).length;
	final sy = 1 / vector.fromMatrix4Column( m, 1 ).length;
	final sz = 1 / vector.fromMatrix4Column( m, 2 ).length;

	e[ 0 ] = me[ 0 ] * sx;
	e[ 1 ] = me[ 1 ] * sx;
	e[ 2 ] = me[ 2 ] * sx;

	e[ 3 ] = me[ 4 ] * sy;
	e[ 4 ] = me[ 5 ] * sy;
	e[ 5 ] = me[ 6 ] * sy;

	e[ 6 ] = me[ 8 ] * sz;
	e[ 7 ] = me[ 9 ] * sz;
	e[ 8 ] = me[ 10 ] * sz;

	fromMatrix3( matrix );

	return this;
}