code: public static void translateM(float[] tm, int tmOffset,
              float[] m, int mOffset,
              float x, float y, float z) {
          for (int i=0 ; i<12 ; i++) {
              tm[tmOffset + i] = m[mOffset + i];
          }
          for (int i=0 ; i<4 ; i++) {
              int tmi = tmOffset + i;
              int mi = mOffset + i;
              tm[12 + tmi] = m[mi] * x + m[4 + mi] * y + m[8 + mi] * z +
                  m[12 + mi];
          }
      }
docs: Translates matrix m by x, y, and z, putting the result in tm
  @param tm returns the result
  @param tmOffset index into sm where the result matrix starts
  @param m source matrix
  @param mOffset index into m where the source matrix starts
  @param x translation factor x
  @param y translation factor y
  @param z translation factor z