/** * Applies the inverse of this transform to the given vector and returns the result in the given store vector: V' = * M^{-1}*V * * @param vector * @param store * the vector to store our result in. if null, a new vector will be created. * @return the transformed vector. * @throws NullPointerException * if vector is null. */ @Override public Vector3 applyInverseVector(final ReadOnlyVector3 vector, final Vector3 store) { Vector3 result = store; if (result == null) { result = new Vector3(); } result.set(vector); return applyInverseVector(result); }
/** * Applies the inverse of this transform to the given vector and returns the result in the given store vector: V' = * M^{-1}*V * * @param vector * @param store * the vector to store our result in. if null, a new vector will be created. * @return the transformed vector. * @throws NullPointerException * if vector is null. */ @Override public Vector3 applyInverseVector(final ReadOnlyVector3 vector, final Vector3 store) { Vector3 result = store; if (result == null) { result = new Vector3(); } result.set(vector); return applyInverseVector(result); }
@Test(expected = NullPointerException.class) public void testApplyFail4() { final Transform trans = new Transform(); trans.applyInverseVector(null); }
final Vector3 result4 = trans.applyInverseVector(vec3, null); assertTrue(Math.abs(new Vector3(0, 1, -1).distance(result4)) <= MathUtils.EPSILON); trans.applyInverseVector(vec3, result4); assertTrue(Math.abs(new Vector3(0, 1, -1).distance(result4)) <= MathUtils.EPSILON); trans.applyInverseVector(vec3); assertTrue(Math.abs(new Vector3(0, 1, -1).distance(vec3)) <= MathUtils.EPSILON); trans.applyInverseVector(vec3); assertTrue(Math.abs(orig.distance(vec3)) <= 10 * MathUtils.EPSILON); // accumulated error trans.applyInverse(vec3); assertEquals(orig, vec3); trans.applyInverseVector(vec3); assertEquals(orig, vec3);