content: package study.acodexm.representation;
  
  /**
   * Matrix math utilities. These methods operate on OpenGL ES format
   * matrices and vectors stored in float arrays.
   * <p>
   * Matrices are 4 x 4 column-vector matrices stored in column-major
   * order:
   *
   * <pre>
   *  m[offset +  0] m[offset +  4] m[offset +  8] m[offset + 12]
   *  m[offset +  1] m[offset +  5] m[offset +  9] m[offset + 13]
   *  m[offset +  2] m[offset +  6] m[offset + 10] m[offset + 14]
   *  m[offset +  3] m[offset +  7] m[offset + 11] m[offset + 15]
   * </pre>
   * <p>
   * Vectors are 4 row x 1 column column-vectors stored in order:
   *
   * <pre>
   * v[offset + 0]
   * v[offset + 1]
   * v[offset + 2]
   * v[offset + 3]
   * </pre>
   */
  class Matrix {
  
      /**
       * Sets matrix m to the identity matrix.
       *
       * @param sm       returns the result
       * @param smOffset index into sm where the result matrix starts
       */
      static void setIdentityM(float[] sm, int smOffset) {
          for (int i = 0; i < 16; i++) {
              sm[smOffset + i] = 0;
          }
          for (int i = 0; i < 16; i += 5) {
              sm[smOffset + i] = 1.0f;
          }
      }
  
  }