/** * Inverts the direction of this {@link Vector3} and creates a new one set with the result. * * @return {@link Vector3} The resulting {@link Vector3}. */ @NonNull public Vector3 invertAndCreate() { return new Vector3(-x, -y, -z); }
/** * Multiplies two input {@link Vector3} objects and creates a new one to hold the result. * * @param u {@link Vector3} The first vector. * @param v {@link Vector3} The second vector * * @return {@link Vector3} The resulting {@link Vector3}. */ @NonNull public static Vector3 multiplyAndCreate(@NonNull Vector3 u, @NonNull Vector3 v) { return new Vector3(u.x * v.x, u.y * v.y, u.z * v.z); }
/** * Fetch the minimum bounds of the scene. * * @return {@link Vector3} containing the minimum values along each axis. */ public Vector3 getSceneMinBound() { if (mSceneGraph != null) { return mSceneGraph.getSceneMinBound(); } else { return new Vector3(Float.MIN_VALUE, Float.MIN_VALUE, Float.MIN_VALUE); } }
/** * Creates a new {@link Vector3} representing the translation component * of this {@link Matrix4}. * * @return {@link Vector3} representing the translation. */ @NonNull public Vector3 getTranslation() { return getTranslation(new Vector3()); }
@Test public void testMultiplyAndSet() { final Vector3 v = new Vector3(); final Vector3 v1 = new Vector3(1d, 2d, 3d); final Vector3 v2 = new Vector3(2d, 3d, 4d); final Vector3 out = v.multiplyAndSet(v1, v2); assertNotNull(out); assertTrue(out == v); assertEquals(2d, v.x, 0); assertEquals(6d, v.y, 0); assertEquals(12d, v.z, 0); }
@Test public void testIntersectRayPlane() { Vector3 rayStart = new Vector3(0, 0, 0); Vector3 rayEnd = new Vector3(1, 1, 1); Plane plane = new Plane(); Vector3 hitPoint = new Vector3(); Boolean result = Intersector.intersectRayPlane(rayStart, rayEnd, plane, hitPoint); assertTrue(result); assertEquals("hitPoint.x", 0, hitPoint.x, 1e-14); assertEquals("hitPoint.y", 0, hitPoint.x, 1e-14); assertEquals("hitPoint.z", 0, hitPoint.x, 1e-14); }
@Test public void testDistanceTo2FromDoublesXyz() { final Vector3 v1 = new Vector3(0d, 1d, 2d); final Vector3 v2 = new Vector3(3d, 5d, 7d); final double distance1 = v1.distanceTo2(3d, 5d, 7d); final double distance2 = v2.distanceTo2(0d, 1d, 2d); assertEquals(50d, distance1, 0); assertEquals(50d, distance2, 0); }
@Test public void testLength2FromVector3() { final Vector3 v = new Vector3(1d, 2d, 3d); final double l2 = Vector3.length2(v); assertEquals(14d, l2, 1e-14); }
@Test public void testDotFromDoublesXyz() { final Vector3 v = new Vector3(1d, 2d, 3d); final double dot = v.dot(4d, 5d, 6d); assertEquals(32d, dot, 0); }
@Test public void testConstructorFromStringArray() { final String[] values = new String[]{"1", "2", "3"}; final Vector3 v = new Vector3(values); assertNotNull(v); assertEquals(1d, v.x, 0); assertEquals(2d, v.y, 0); assertEquals(3d, v.z, 0); }
@Test public void testMultiplyFomDoubleMatrix() { final Vector3 v = new Vector3(1d, 2d, 3d); final double[] matrix = new double[]{1d, 2d, 3d, 4d, 5d, 6d, 7d, 8d, 9d, 10d, 11d, 12d, 13d, 14d, 15d, 16d}; final Vector3 out = v.multiply(matrix); assertNotNull(out); assertTrue(out == v); assertEquals(51d, v.x, 0); assertEquals(58d, v.y, 0); assertEquals(65d, v.z, 0); }
@Test public void testDivideFromDouble() { final Vector3 v = new Vector3(1d, 2d, 3d); final Vector3 out = v.divide(2d); assertNotNull(out); assertTrue(out == v); assertEquals(0.5d, v.x, 0); assertEquals(1d, v.y, 0); assertEquals(1.5d, v.z, 0); }
@Test public void testClone() { final Vector3 v1 = new Vector3(1d, 2d, 3d); final Vector3 v = v1.clone(); assertNotNull(v); assertFalse(v == v1); assertEquals(1d, v.x, 0); assertEquals(2d, v.y, 0); assertEquals(3d, v.z, 0); }