@Test public void testLengthSquared() { Random random = new Random(312310L); for (int i = 0; i < ITERATIONS; i++) { T vector1 = createRandomTuple(random); double length1 = vector1.length(); T vector2 = createEmptyTuple(); double scalar = EuclidCoreRandomTools.nextDouble(random, 0.0, 10.0); vector2.setAndScale(scalar, vector1); double expectedLength2 = scalar * length1; double actualLength2 = vector2.lengthSquared(); assertEquals(expectedLength2, Math.sqrt(actualLength2), 5.0 * getEpsilon()); } }
@Test public void testLength() { Random random = new Random(312310L); for (int i = 0; i < ITERATIONS; i++) { T vector1 = createRandomTuple(random); double length1 = vector1.length(); T vector2 = createEmptyTuple(); double scalar = EuclidCoreRandomTools.nextDouble(random, 0.0, 10.0); vector2.setAndScale(scalar, vector1); double expectedLength2 = scalar * length1; double actualLength2 = vector2.length(); assertEquals(expectedLength2, actualLength2, 5.0 * getEpsilon()); } }
@Test public void testAngle() { Random random = new Random(56461L); for (int i = 0; i < ITERATIONS; i++) { T vector1 = createRandomTuple(random); vector1.scale(EuclidCoreRandomTools.nextDouble(random, 2.0)); Vector3DBasics axis = EuclidCoreRandomTools.nextOrthogonalVector3D(random, vector1, true); double expectedAngle = EuclidCoreRandomTools.nextDouble(random, 0.01, Math.PI - 0.01); if (random.nextBoolean()) expectedAngle = -expectedAngle; T vector2 = createEmptyTuple(); RotationMatrix rotationMatrix = new RotationMatrix(new AxisAngle(axis, expectedAngle)); rotationMatrix.transform(vector1, vector2); vector2.scale(EuclidCoreRandomTools.nextDouble(random, 0.0, 2.0)); double actualAngle = vector1.angle(vector2); assertEquals(Math.abs(expectedAngle), actualAngle, 10.0 * getEpsilon()); } }
@Test public void testDot() { Random random = new Random(5461L); for (int i = 0; i < ITERATIONS; i++) { T vector1 = createRandomTuple(random); vector1.scale(EuclidCoreRandomTools.nextDouble(random, 2.0)); Vector3DBasics axis = EuclidCoreRandomTools.nextOrthogonalVector3D(random, vector1, true); double angle = EuclidCoreRandomTools.nextDouble(random, 0.1, Math.PI); if (random.nextBoolean()) angle = -angle; T vector2 = createEmptyTuple(); RotationMatrix rotationMatrix = new RotationMatrix(new AxisAngle(axis, angle)); rotationMatrix.transform(vector1, vector2); vector2.scale(EuclidCoreRandomTools.nextDouble(random, 0.0, 2.0)); double expectedDot = vector1.length() * vector2.length() * Math.cos(angle); double actualDot = vector1.dot(vector2); assertEquals(expectedDot, actualDot, 10.0 * getEpsilon()); } }
T vector1 = createRandomTuple(random); vector1.normalize(); assertEquals(expectedLength, actualLength, getEpsilon()); T vector2 = createRandomTuple(random); vector2.normalize(); vector1.setAndScale(EuclidCoreRandomTools.nextDouble(random, 0.0, 10.0), vector2); T vector1 = createRandomTuple(random); T vector2 = createEmptyTuple(); assertEquals(expectedLength, actualLength, getEpsilon()); vector2 = createRandomTuple(random); vector2.normalize(); T vector3 = createEmptyTuple();
T original = createRandomTuple(random); T expected = createEmptyTuple(); T actual = createEmptyTuple(); T original = createRandomTuple(random); T expected = createEmptyTuple(); T actual = createEmptyTuple(); T original = createRandomTuple(random); T expected = createEmptyTuple(); T actual = createEmptyTuple();
T original = createRandomTuple(random); T expected = createEmptyTuple(); T actual = createEmptyTuple(); T original = createRandomTuple(random); T expected = createEmptyTuple(); T actual = createEmptyTuple(); EuclidCoreRandomTools.nextDouble(random, 0.01, 10.0)), EuclidCoreRandomTools.nextPoint3D(random, 10.0)); T original = createRandomTuple(random); T expected = createEmptyTuple(); T actual = createEmptyTuple();
T vector1 = createRandomTuple(random); vector1.scale(EuclidCoreRandomTools.nextDouble(random, 0.01, 2.0)); Vector3DBasics axis = EuclidCoreRandomTools.nextOrthogonalVector3D(random, vector1, true); T vector1 = createRandomTuple(random); vector1.scale(EuclidCoreRandomTools.nextDouble(random, 2.0)); Vector3DBasics axis = EuclidCoreRandomTools.nextOrthogonalVector3D(random, vector1, true);