message: add Mat4.isRotationAndTranslation
diff: @@ -739,6 +739,37 @@ namespace Mat4 {
  return true;
  }
  + /**
  + * Check if the matrix has only translation and uniform scaling
  + * [ S 0 0 X ]
  + * [ 0 S 0 Y ]
  + * [ 0 0 S Z ]
  + * [ 0 0 0 1 ]
  + */
  + export function isTranslationAndUniformScaling(a: Mat4, eps?: number) {
  + return _isTranslationAndUniformScaling(a, typeof eps !== 'undefined' ? eps : EPSILON)
  + }
  +
  + function _isTranslationAndUniformScaling(a: Mat4, eps: number) {
  + const a00 = a[0]
  + return (
  + // 0 base scaling
  + equalEps(a[1], 0, eps) &&
  + equalEps(a[2], 0, eps) &&
  + equalEps(a[3], 0, eps) &&
  + equalEps(a[4], 0, eps) &&
  + equalEps(a[5], a00, eps) &&
  + equalEps(a[6], 0, eps) &&
  + equalEps(a[7], 0, eps) &&
  + equalEps(a[8], 0, eps) &&
  + equalEps(a[9], 0, eps) &&
  + equalEps(a[10], a00, eps) &&
  + equalEps(a[11], 0, eps) &&
  + // 12, 13, 14 translation can be anything
  + equalEps(a[15], 1, eps)
  + )
  + }
  +
  export function fromQuat(out: Mat4, q: Quat) {
  const x = q[0], y = q[1], z = q[2], w = q[3];
  const x2 = x + x;
  