T tuple = createRandomTuple(random); assertFalse(tuple.equals(createEmptyTuple())); assertFalse(tuple.equals(null)); assertFalse(tuple.equals(new double[5])); double s = tuple.getS(); assertTrue(tuple.equals(createTuple(x, y, z, s))); assertFalse(tuple.equals(createTuple(x + getEpsilon(), y, z, s))); assertFalse(tuple.equals(createTuple(x - getEpsilon(), y, z, s))); assertFalse(tuple.equals(createTuple(x, y + getEpsilon(), z, s))); assertFalse(tuple.equals(createTuple(x, y - getEpsilon(), z, s))); assertFalse(tuple.equals(createTuple(x, y, z + getEpsilon(), s))); assertFalse(tuple.equals(createTuple(x, y, z - getEpsilon(), s))); assertFalse(tuple.equals(createTuple(x, y, z, s + getEpsilon()))); assertFalse(tuple.equals(createTuple(x, y, z, s - getEpsilon())));
@Test public void testLengthSquared() { Random random = new Random(312310L); for (int i = 0; i < ITERATIONS; i++) { T tuple1 = createRandomTuple(random); double length1 = tuple1.norm(); double scalar = EuclidCoreRandomTools.nextDouble(random, 0.0, 10.0); T tuple2 = createTuple(scalar * tuple1.getX(), scalar * tuple1.getY(), scalar * tuple1.getZ(), scalar * tuple1.getS()); double expectedLength2 = scalar * length1; double actualLength2 = tuple2.normSquared(); assertEquals(expectedLength2, Math.sqrt(actualLength2), 5.0 * getEpsilon()); } }
@Test public void testEpsilonEquals() throws Exception { Random random = new Random(621541L); double epsilon = random.nextDouble(); T tuple = createRandomTuple(random); double x = tuple.getX(); double y = tuple.getY(); double z = tuple.getZ(); double s = tuple.getS(); assertTrue(tuple.epsilonEquals(createTuple(x + 0.999 * epsilon, y, z, s), epsilon)); assertTrue(tuple.epsilonEquals(createTuple(x - 0.999 * epsilon, y, z, s), epsilon)); assertTrue(tuple.epsilonEquals(createTuple(x, y + 0.999 * epsilon, z, s), epsilon)); assertTrue(tuple.epsilonEquals(createTuple(x, y - 0.999 * epsilon, z, s), epsilon)); assertTrue(tuple.epsilonEquals(createTuple(x, y, z + 0.999 * epsilon, s), epsilon)); assertTrue(tuple.epsilonEquals(createTuple(x, y, z - 0.999 * epsilon, s), epsilon)); assertTrue(tuple.epsilonEquals(createTuple(x, y, z, s + 0.999 * epsilon), epsilon)); assertTrue(tuple.epsilonEquals(createTuple(x, y, z, s - 0.999 * epsilon), epsilon)); assertFalse(tuple.epsilonEquals(createTuple(x + 1.001 * epsilon, y, z, s), epsilon)); assertFalse(tuple.epsilonEquals(createTuple(x - 1.001 * epsilon, y, z, s), epsilon)); assertFalse(tuple.epsilonEquals(createTuple(x, y + 1.001 * epsilon, z, s), epsilon)); assertFalse(tuple.epsilonEquals(createTuple(x, y - 1.001 * epsilon, z, s), epsilon)); assertFalse(tuple.epsilonEquals(createTuple(x, y, z + 1.001 * epsilon, s), epsilon)); assertFalse(tuple.epsilonEquals(createTuple(x, y, z - 1.001 * epsilon, s), epsilon)); assertFalse(tuple.epsilonEquals(createTuple(x, y, z, s + 1.001 * epsilon), epsilon)); assertFalse(tuple.epsilonEquals(createTuple(x, y, z, s - 1.001 * epsilon), epsilon)); }
T p = createRandomTuple(random); T q = createRandomTuple(random); Vector4D product = new Vector4D(); assertEquals(expectedDot, actualDot, getEpsilon()); assertEquals(expectedDot, actualDot, getEpsilon()); assertEquals(expectedDot, actualDot, getEpsilon()); assertEquals(expectedDot, actualDot, getEpsilon());
@Test public void testContainsNaN() throws Exception { assertFalse(createTuple(0.0, 0.0, 0.0, 0.0).containsNaN()); assertTrue(createTuple(Double.NaN, 0.0, 0.0, 0.0).containsNaN()); assertTrue(createTuple(0.0, Double.NaN, 0.0, 0.0).containsNaN()); assertTrue(createTuple(0.0, 0.0, Double.NaN, 0.0).containsNaN()); assertTrue(createTuple(0.0, 0.0, 0.0, Double.NaN).containsNaN()); }
@Test public void testLength() { Random random = new Random(312310L); for (int i = 0; i < ITERATIONS; i++) { T tuple1 = createRandomTuple(random); double length1 = tuple1.norm(); double scalar = EuclidCoreRandomTools.nextDouble(random, 0.0, 10.0); T tuple2 = createTuple(scalar * tuple1.getX(), scalar * tuple1.getY(), scalar * tuple1.getZ(), scalar * tuple1.getS()); double expectedLength2 = scalar * length1; double actualLength2 = tuple2.norm(); assertEquals(expectedLength2, actualLength2, 5.0 * getEpsilon()); } }
T tuple = createEmptyTuple(); double z = random.nextDouble(); double s = random.nextDouble(); tuple = createTuple(x, y, z, s); assertEquals(tuple.getX(), x, getEpsilon()); assertEquals(tuple.getY(), y, getEpsilon()); assertEquals(tuple.getZ(), z, getEpsilon()); assertEquals(tuple.getS(), s, getEpsilon()); float z = random.nextFloat(); float s = random.nextFloat(); tuple = createTuple(x, y, z, s); assertEquals(tuple.getX32(), x, getEpsilon()); assertEquals(tuple.getY32(), y, getEpsilon()); assertEquals(tuple.getZ32(), z, getEpsilon()); assertEquals(tuple.getS32(), s, getEpsilon()); double z = random.nextDouble(); double s = random.nextDouble(); tuple = createTuple(x, y, z, s); assertEquals(tuple.getElement(0), x, getEpsilon()); assertEquals(tuple.getElement(1), y, getEpsilon()); assertEquals(tuple.getElement(2), z, getEpsilon()); assertEquals(tuple.getElement(3), s, getEpsilon());