@Test public void testHashCode() throws Exception { Random random = new Random(621541L); Point3D tuple1 = createEmptyTuple(); tuple1.setX(random.nextDouble()); tuple1.setY(random.nextDouble()); tuple1.setZ(random.nextDouble()); int newHashCode, previousHashCode; newHashCode = tuple1.hashCode(); assertEquals(newHashCode, tuple1.hashCode()); previousHashCode = tuple1.hashCode(); for (int i = 0; i < ITERATIONS; i++) { tuple1.setElement(i % 3, random.nextDouble()); newHashCode = tuple1.hashCode(); assertNotEquals(newHashCode, previousHashCode); previousHashCode = newHashCode; } }
firstEndpoint.setElement(j, element + 0.999 * epsilon); line2.setFirstEndpoint(firstEndpoint); firstEndpoint.setElement(j, element - 0.999 * epsilon); line2.setFirstEndpoint(firstEndpoint); firstEndpoint.setElement(j, element + 1.001 * epsilon); line2.setFirstEndpoint(firstEndpoint); firstEndpoint.setElement(j, element - 1.001 * epsilon); line2.setFirstEndpoint(firstEndpoint); secondEndpoint.setElement(j, element + 0.999 * epsilon); line2.setSecondEndpoint(secondEndpoint); secondEndpoint.setElement(j, element - 0.999 * epsilon); line2.setSecondEndpoint(secondEndpoint); secondEndpoint.setElement(j, element + 1.001 * epsilon); line2.setSecondEndpoint(secondEndpoint); secondEndpoint.setElement(j, element - 1.001 * epsilon); line2.setSecondEndpoint(secondEndpoint);
double value = amp * Math.sin(pulse * t + phi); double valueDot = amp * pulse * Math.cos(pulse * t + phi); position.setElement(i, value); linearVelocity.setElement(i, valueDot);
alphaStart.setElement(hoveringAxisIndex, EuclidCoreRandomTools.nextDouble(random, 1.0, 10.0)); // Make the line hover outside alphaEnd.setElement(hoveringAxisIndex, EuclidCoreRandomTools.nextDouble(random, 1.0, 10.0)); // Make the line hover outside alphaStart.setElement(hoveringAxisIndex, EuclidCoreRandomTools.nextDouble(random, -10.0, 0.0)); // Make the line hover outside alphaEnd.setElement(hoveringAxisIndex, EuclidCoreRandomTools.nextDouble(random, -10.0, 0.0)); // Make the line hover outside alphaStart.setElement(otherIndex, 0.0); alphaEnd.setElement(otherIndex, 1.0); alphaStart.setElement(otherIndex, 1.0); alphaEnd.setElement(otherIndex, 0.0); rayOrigin.setElement(axisIndex, boundingBoxMax.getElement(axisIndex) + random.nextDouble()); rayDirection.interpolate(axisDirection, orthogonalToAxis, EuclidCoreRandomTools.nextDouble(random, 0.0, 1.0)); rayOrigin.setElement(axisIndex, boundingBoxMin.getElement(axisIndex) - random.nextDouble()); axisDirection.negate(); rayDirection.interpolate(axisDirection, orthogonalToAxis, EuclidCoreRandomTools.nextDouble(random, 0.0, 1.0)); rayOrigin.setElement(nextAxis, EuclidCoreTools.interpolate(boundingBoxMin.getElement(nextAxis), boundingBoxMax.getElement(nextAxis), EuclidCoreRandomTools.nextDouble(random, 0.0, 1.0))); rayOrigin.setElement(nextNextAxis, EuclidCoreTools.interpolate(boundingBoxMin.getElement(nextNextAxis), boundingBoxMax.getElement(nextNextAxis), EuclidCoreRandomTools.nextDouble(random, 0.0, 1.0))); rayOrigin.setElement(axisIndex, boundingBoxMax.getElement(axisIndex) + EuclidCoreRandomTools.nextDouble(random, 0.0, 10.0)); pointOnRay.setElement(axisIndex, boundingBoxMax.getElement(axisIndex)); rayOrigin.setElement(axisIndex, boundingBoxMin.getElement(axisIndex) - EuclidCoreRandomTools.nextDouble(random, 0.0, 10.0)); pointOnRay.setElement(axisIndex, boundingBoxMin.getElement(axisIndex));
firstEndpoint.setElement(j, element + epsilon); line2.setFirstEndpoint(firstEndpoint); firstEndpoint.setElement(j, element - epsilon); line2.setFirstEndpoint(firstEndpoint); secondEndpoint.setElement(j, element + epsilon); line2.setSecondEndpoint(secondEndpoint); secondEndpoint.setElement(j, element - epsilon); line2.setSecondEndpoint(secondEndpoint);
@Test public void testContainsNaN() throws Exception { for (int i = 0; i < 3; i++) { LineSegment3D lineSegment3D = new LineSegment3D(); assertFalse(lineSegment3D.containsNaN()); Point3D firstEndpoint = new Point3D(); firstEndpoint.setElement(i, Double.NaN); lineSegment3D.setFirstEndpoint(firstEndpoint); assertTrue(lineSegment3D.containsNaN()); assertTrue(lineSegment3D.firstEndpointContainsNaN()); assertFalse(lineSegment3D.secondEndpointContainsNaN()); } for (int i = 0; i < 3; i++) { LineSegment3D lineSegment3D = new LineSegment3D(); assertFalse(lineSegment3D.containsNaN()); Point3D secondEndpoint = new Point3D(); secondEndpoint.setElement(i, Double.NaN); lineSegment3D.setSecondEndpoint(secondEndpoint); assertTrue(lineSegment3D.containsNaN()); assertFalse(lineSegment3D.firstEndpointContainsNaN()); assertTrue(lineSegment3D.secondEndpointContainsNaN()); } }
alpha.setElement(axisIndex, 0.0); boundingBox3D.getPointGivenParameters(alpha.getX(), alpha.getY(), alpha.getZ(), actualPoint); assertEquals(boundingBox3D.getMinPoint().getElement(axisIndex), actualPoint.getElement(axisIndex), EPSILON); alpha.setElement(axisIndex, 1.0); boundingBox3D.getPointGivenParameters(alpha.getX(), alpha.getY(), alpha.getZ(), actualPoint); assertEquals(boundingBox3D.getMaxPoint().getElement(axisIndex), actualPoint.getElement(axisIndex), EPSILON);
double element = line1.getPoint().getElement(j); point.set(line1.getPoint()); point.setElement(j, element + 0.999 * epsilon); line2.setPoint(point); assertTrue(line1.epsilonEquals(line2, epsilon)); point.set(line1.getPoint()); point.setElement(j, element - 0.999 * epsilon); line2.setPoint(point); assertTrue(line1.epsilonEquals(line2, epsilon)); point.set(line1.getPoint()); point.setElement(j, element + 1.001 * epsilon); line2.setPoint(point); assertFalse(line1.epsilonEquals(line2, epsilon)); point.set(line1.getPoint()); point.setElement(j, element - 1.001 * epsilon); line2.setPoint(point); assertFalse(line1.epsilonEquals(line2, epsilon));
double element = point.getElement(j); point.setElement(j, element + epsilon); line2.setPoint(point); point.setElement(j, element - epsilon); line2.setPoint(point);
initialBounds.getAndGrowIfNeeded(order).setElement(axis.ordinal(), currentTrajectory.getDerivative(axis.ordinal(), order, startTime)); midpointBounds.getAndGrowIfNeeded(order).setElement(axis.ordinal(), trajectoryAtTime.getDerivative(axis.ordinal(), order, timeToResampleTo)); finalBounds.getAndGrowIfNeeded(order).setElement(axis.ordinal(), nextTrajectory.getDerivative(axis.ordinal(), order, endTime));
alpha.setElement(axisIndex, EuclidCoreRandomTools.nextDouble(random, -10.0, 0.0)); boundingBox3D.getPointGivenParameters(alpha.getX(), alpha.getY(), alpha.getZ(), query); assertFalse(boundingBox3D.isInsideExclusive(query)); assertFalse(boundingBox3D.isInsideExclusive(query.getX(), query.getY(), query.getZ())); alpha.setElement(axisIndex, EuclidCoreRandomTools.nextDouble(random, 1.0, 10.0)); boundingBox3D.getPointGivenParameters(alpha.getX(), alpha.getY(), alpha.getZ(), query); assertFalse(boundingBox3D.isInsideExclusive(query)); query.setElement(axisIndex, minPoint.getElement(axisIndex)); assertFalse(boundingBox3D.isInsideExclusive(query)); assertFalse(boundingBox3D.isInsideExclusive(query.getX(), query.getY(), query.getZ())); query.setElement(axisIndex, maxPoint.getElement(axisIndex)); assertFalse(boundingBox3D.isInsideExclusive(query)); assertFalse(boundingBox3D.isInsideExclusive(query.getX(), query.getY(), query.getZ()));
alpha.setElement(axisIndex, EuclidCoreRandomTools.nextDouble(random, -10.0, 0.0)); boundingBox3D.getPointGivenParameters(alpha.getX(), alpha.getY(), alpha.getZ(), query); assertFalse(boundingBox3D.isInsideInclusive(query)); assertFalse(boundingBox3D.isInsideInclusive(query.getX(), query.getY(), query.getZ())); alpha.setElement(axisIndex, EuclidCoreRandomTools.nextDouble(random, 1.0, 10.0)); boundingBox3D.getPointGivenParameters(alpha.getX(), alpha.getY(), alpha.getZ(), query); assertFalse(boundingBox3D.isInsideInclusive(query)); query.setElement(axisIndex, minPoint.getElement(axisIndex)); assertTrue(boundingBox3D.isInsideInclusive(query)); assertTrue(boundingBox3D.isInsideInclusive(query.getX(), query.getY(), query.getZ())); query.setElement(axisIndex, maxPoint.getElement(axisIndex)); assertTrue(boundingBox3D.isInsideInclusive(query)); assertTrue(boundingBox3D.isInsideInclusive(query.getX(), query.getY(), query.getZ()));
alpha.setElement(axisIndex, EuclidCoreRandomTools.nextDouble(random, -10.0, 0.0)); boundingBoxEpsilon.getPointGivenParameters(alpha.getX(), alpha.getY(), alpha.getZ(), query); assertEquals(boundingBoxExclusive.isInsideExclusive(query), boundingBoxEpsilon.isInsideEpsilon(query, epsilon)); assertEquals(boundingBoxExclusive.isInsideExclusive(query), boundingBoxEpsilon.isInsideEpsilon(query.getX(), query.getY(), query.getZ(), epsilon)); alpha.setElement(axisIndex, EuclidCoreRandomTools.nextDouble(random, 1.0, 10.0)); boundingBoxEpsilon.getPointGivenParameters(alpha.getX(), alpha.getY(), alpha.getZ(), query); assertEquals(boundingBoxExclusive.isInsideExclusive(query), boundingBoxEpsilon.isInsideEpsilon(query, epsilon)); query.setElement(axisIndex, minPoint.getElement(axisIndex)); assertEquals(boundingBoxExclusive.isInsideExclusive(query), boundingBoxEpsilon.isInsideEpsilon(query, epsilon)); assertEquals(boundingBoxExclusive.isInsideExclusive(query), boundingBoxEpsilon.isInsideEpsilon(query.getX(), query.getY(), query.getZ(), epsilon)); query.setElement(axisIndex, maxPoint.getElement(axisIndex)); assertEquals(boundingBoxExclusive.isInsideExclusive(query), boundingBoxEpsilon.isInsideEpsilon(query, epsilon)); assertEquals(boundingBoxExclusive.isInsideExclusive(query), boundingBoxEpsilon.isInsideEpsilon(query.getX(), query.getY(), query.getZ(), epsilon));
alpha.setElement(axisIndex, EuclidCoreRandomTools.nextDouble(random, -10.0, 0.0)); boundingBox3D.getPointGivenParameters(alpha.getX(), alpha.getY(), alpha.getZ(), query); assertFalse(boundingBox3D.isXYInsideInclusive(new Point2D(query.getX(), query.getY()))); assertFalse(boundingBox3D.isXYInsideInclusive(query.getX(), query.getY())); alpha.setElement(axisIndex, EuclidCoreRandomTools.nextDouble(random, 1.0, 10.0)); boundingBox3D.getPointGivenParameters(alpha.getX(), alpha.getY(), alpha.getZ(), query); assertFalse(boundingBox3D.isXYInsideInclusive(new Point2D(query.getX(), query.getY()))); query.setElement(axisIndex, minPoint.getElement(axisIndex)); assertTrue(boundingBox3D.isXYInsideInclusive(new Point2D(query.getX(), query.getY()))); assertTrue(boundingBox3D.isXYInsideInclusive(query.getX(), query.getY())); query.setElement(axisIndex, maxPoint.getElement(axisIndex)); assertTrue(boundingBox3D.isXYInsideInclusive(new Point2D(query.getX(), query.getY()))); assertTrue(boundingBox3D.isXYInsideInclusive(query.getX(), query.getY()));
alphaStart.setElement(hoveringAxisIndex, EuclidCoreRandomTools.nextDouble(random, 1.0, 10.0)); // Make the line hover outside alphaEnd.setElement(hoveringAxisIndex, EuclidCoreRandomTools.nextDouble(random, 1.0, 10.0)); // Make the line hover outside alphaStart.setElement(hoveringAxisIndex, EuclidCoreRandomTools.nextDouble(random, -10.0, 0.0)); // Make the line hover outside alphaEnd.setElement(hoveringAxisIndex, EuclidCoreRandomTools.nextDouble(random, -10.0, 0.0)); // Make the line hover outside alphaStart.setElement(otherIndex, 0.0); alphaEnd.setElement(otherIndex, 1.0); alphaStart.setElement(otherIndex, 1.0); alphaEnd.setElement(otherIndex, 0.0); int index = random.nextInt(3); if (random.nextBoolean()) outsidePoint.setElement(index, EuclidCoreTools.interpolate(boundingBoxMin.getElement(index), boundingBoxMax.getElement(index), EuclidCoreRandomTools.nextDouble(random, 1.0, 10.0))); else outsidePoint.setElement(index, EuclidCoreTools.interpolate(boundingBoxMin.getElement(index), boundingBoxMax.getElement(index), EuclidCoreRandomTools.nextDouble(random, -10.0, 0.0)));
alphaStart.setElement(hoveringAxisIndex, EuclidCoreRandomTools.nextDouble(random, 1.0, 10.0)); // Make the line hover outside alphaEnd.setElement(hoveringAxisIndex, EuclidCoreRandomTools.nextDouble(random, 1.0, 10.0)); // Make the line hover outside alphaStart.setElement(hoveringAxisIndex, EuclidCoreRandomTools.nextDouble(random, -10.0, 0.0)); // Make the line hover outside alphaEnd.setElement(hoveringAxisIndex, EuclidCoreRandomTools.nextDouble(random, -10.0, 0.0)); // Make the line hover outside alphaStart.setElement(otherIndex, 0.0); alphaEnd.setElement(otherIndex, 1.0); alphaStart.setElement(otherIndex, 1.0); alphaEnd.setElement(otherIndex, 0.0);
alphaStart.setElement(axisIndex, EuclidCoreRandomTools.nextDouble(random, 1.0, 10.0)); // Make the line segment hover outside else alphaStart.setElement(axisIndex, EuclidCoreRandomTools.nextDouble(random, -10.0, 0.0)); // Make the line segment hover outside alphaEnd.setElement(axisIndex, EuclidCoreRandomTools.nextDouble(random, 1.0, 10.0)); // Make the line segment hover outside else alphaEnd.setElement(axisIndex, EuclidCoreRandomTools.nextDouble(random, -10.0, 0.0)); // Make the line segment hover outside lineSegmentEnd.setX(EuclidCoreTools.interpolate(boundingBoxMin.getX(), boundingBoxMax.getX(), alphaEnd.getX())); lineSegmentEnd.setY(EuclidCoreTools.interpolate(boundingBoxMin.getY(), boundingBoxMax.getY(), alphaEnd.getY())); int index = random.nextInt(3); if (random.nextBoolean()) outsideEndpoint.setElement(index, EuclidCoreTools.interpolate(boundingBoxMin.getElement(index), boundingBoxMax.getElement(index), EuclidCoreRandomTools.nextDouble(random, 1.0, 10.0))); else outsideEndpoint.setElement(index, EuclidCoreTools.interpolate(boundingBoxMin.getElement(index), boundingBoxMax.getElement(index), EuclidCoreRandomTools.nextDouble(random, -10.0, 0.0))); if (random.nextBoolean()) onFaceEndpoint.setElement(index, boundingBoxMax.getElement(index)); outsideEndpoint.setElement(index, EuclidCoreTools.interpolate(boundingBoxMin.getElement(index), boundingBoxMax.getElement(index), nextDouble(random, 1.0, 10.0))); onFaceEndpoint.setElement(index, boundingBoxMin.getElement(index)); outsideEndpoint.setElement(index, EuclidCoreTools.interpolate(boundingBoxMin.getElement(index), boundingBoxMax.getElement(index), nextDouble(random, -10.0, 0.0)));
alpha.setElement(axisIndex, EuclidCoreRandomTools.nextDouble(random, -10.0, 0.0)); boundingBoxEpsilon.getPointGivenParameters(alpha.getX(), alpha.getY(), alpha.getZ(), query); assertEquals(boundingBoxExclusive.isXYInsideExclusive(new Point2D(query.getX(), query.getY())), boundingBoxEpsilon.isXYInsideEpsilon(query.getX(), query.getY(), epsilon)); alpha.setElement(axisIndex, EuclidCoreRandomTools.nextDouble(random, 1.0, 10.0)); boundingBoxEpsilon.getPointGivenParameters(alpha.getX(), alpha.getY(), alpha.getZ(), query); assertEquals(boundingBoxExclusive.isXYInsideExclusive(new Point2D(query.getX(), query.getY())), query.setElement(axisIndex, minPoint.getElement(axisIndex)); assertEquals(boundingBoxExclusive.isXYInsideExclusive(new Point2D(query.getX(), query.getY())), boundingBoxEpsilon.isXYInsideEpsilon(new Point2D(query.getX(), query.getY()), epsilon)); boundingBoxEpsilon.isXYInsideEpsilon(query.getX(), query.getY(), epsilon)); query.setElement(axisIndex, maxPoint.getElement(axisIndex)); assertEquals(boundingBoxExclusive.isXYInsideExclusive(new Point2D(query.getX(), query.getY())), boundingBoxEpsilon.isXYInsideEpsilon(new Point2D(query.getX(), query.getY()), epsilon));
alpha.setElement(axisIndex, EuclidCoreRandomTools.nextDouble(random, -10.0, 0.0)); boundingBox3D.getPointGivenParameters(alpha.getX(), alpha.getY(), alpha.getZ(), query3D); query2D.set(query3D.getX(), query3D.getY()); assertFalse(boundingBox3D.isXYInsideExclusive(query2D.getX(), query2D.getY())); alpha.setElement(axisIndex, EuclidCoreRandomTools.nextDouble(random, 1.0, 10.0)); boundingBox3D.getPointGivenParameters(alpha.getX(), alpha.getY(), alpha.getZ(), query3D); query2D.set(query3D.getX(), query3D.getY());