/** * @param matrix * @return This matrix for chaining, modified internally to reflect multiplication against the given matrix * @throws NullPointerException * if matrix is null */ public Matrix4 multiplyLocal(final ReadOnlyMatrix4 matrix) { return multiply(matrix, this); }
8, 9, 10, 11, // 12, 13, 14, 15); final Matrix4 result = mat4A.multiply(mat4B, null); assertTrue(0.02 * 0.5 + 0.2 * 4 + 0.4 * 8 + 0.6 * 12 == result.getM00()); assertTrue(0.02 * 1 + 0.2 * 5 + 0.4 * 9 + 0.6 * 13 == result.getM01());
/** * @param matrix * @return This matrix for chaining, modified internally to reflect multiplication against the given matrix * @throws NullPointerException * if matrix is null */ public Matrix4 multiplyLocal(final ReadOnlyMatrix4 matrix) { return multiply(matrix, this); }
@Override public ResultSample doMultTest(final int count, final int maxCount, final long timeOutMS) { final Matrix4 m1 = a3dMatrixRandom(); final Matrix4 m2 = a3dMatrixRandom(); final long start = System.currentTimeMillis(); int loopCount = 0; while (System.currentTimeMillis() - start < timeOutMS && loopCount != maxCount) { ++loopCount; for (int i = 0; i < count; ++i) { m1.multiply(m2, m1); } } return populateResult(System.currentTimeMillis() - start, loopCount, m1.toArray(null)); }
@Test public void testTranslation() { final Matrix4 src = new Matrix4(); src.applyRotation(MathUtils.QUARTER_PI, 1, 0, 0); final Matrix4 trans = new Matrix4(); trans.setColumn(3, new Vector4(1, 2, 3, 1)); final Matrix4 transThenRotate = trans.multiply(src, null); final Matrix4 rotateThenTrans = src.multiply(trans, null); final Matrix4 pre1 = new Matrix4(src).applyTranslationPre(1, 2, 3); final Matrix4 post1 = new Matrix4(src).applyTranslationPost(1, 2, 3); assertEquals(transThenRotate, pre1); assertEquals(rotateThenTrans, post1); }
@Test public void testInvert() { final Matrix4 mat4A = new Matrix4().applyRotationX(MathUtils.QUARTER_PI).applyTranslationPost(1, 2, 3); final Matrix4 inverted = mat4A.invert(null); assertEquals(Matrix4.IDENTITY, mat4A.multiply(inverted, null)); assertEquals(mat4A, inverted.invertLocal()); }