scaleAndTranslateOtherSetSelf(other) {
        const a = other.values;
        const out = this.values;

        // Read scale and translation values from 'this'
        const sx = out[0]; // scale X (this[0])
        const sy = out[4]; // scale Y (this[4])
        const tx = out[6]; // translate X
        const ty = out[7]; // translate Y

        // Compute result = this * other, store into this.values (in-place)
        out[0] = sx * a[0];
        out[1] = sx * a[1];
        out[2] = sx * a[2];

        out[3] = sy * a[3];
        out[4] = sy * a[4];
        out[5] = sy * a[5];

        out[6] = tx * a[0] + ty * a[3] + a[6];
        out[7] = tx * a[1] + ty * a[4] + a[7];
        out[8] = tx * a[2] + ty * a[5] + a[8];
    }
Move and translate another matrix by self. 'this' matrix must be scale & translate matrix.
Optimization: in case the original matrix can be thrown away, optimize instead by computing in-place.
Used for optimization: we have
A) THIS matrix, carrying scale and translation,
B) OTHER general matrix to scale and translate.
Since THIS matrix is unique per tile, we can optimize the operation by:
 - move & scale OTHER by THIS, and
 - store the result to THIS, since we don't need to keep the scaling and translation, but
   we need to keep the original OTHER matrix (for each tile within tiled image).
@param {OpenSeadragon.Mat3} other the matrix to scale and translate by this matrix and accept values from
@memberof OpenSeadragon.Mat3