/** * Creates a {@link RealPointCollection}. * * @param interval * Contains the points which will be included in this collection. * This will be used to create a * {@link NearestNeighborSearchOnIterableRealInterval}.The first * point determines the dimensionality of the collection. */ public NNSRealPointCollection( final IterableRealInterval< L > interval ) { this( interval, new NearestNeighborSearchOnIterableRealInterval<>( interval ) ); }
@Override public void search( final RealLocalizable reference ) { squareDistance = Double.MAX_VALUE; reference.localize( referenceLocation ); final RealCursor< T > cursor = iterable.localizingCursor(); while ( cursor.hasNext() ) { cursor.fwd(); final double cursorSquareDistance = squareDistance( cursor ); if ( squareDistance > cursorSquareDistance ) { squareDistance = cursorSquareDistance; element = cursor.copyCursor(); } } }
@Override public void search( final RealLocalizable reference ) { squareDistance = Double.MAX_VALUE; reference.localize( referenceLocation ); final RealCursor< T > cursor = iterable.localizingCursor(); while ( cursor.hasNext() ) { cursor.fwd(); final double cursorSquareDistance = squareDistance( cursor ); if ( squareDistance > cursorSquareDistance ) { squareDistance = cursorSquareDistance; element = cursor.copyCursor(); } } }
@Override public NearestNeighborSearchOnIterableRealInterval< T > copy() { final NearestNeighborSearchOnIterableRealInterval< T > copy = new NearestNeighborSearchOnIterableRealInterval< T >( iterable ); System.arraycopy( referenceLocation, 0, copy.referenceLocation, 0, referenceLocation.length ); copy.element = element; copy.squareDistance = squareDistance; return copy; } }
@Override public NearestNeighborSearchOnIterableRealInterval< T > copy() { final NearestNeighborSearchOnIterableRealInterval< T > copy = new NearestNeighborSearchOnIterableRealInterval< T >( iterable ); System.arraycopy( referenceLocation, 0, copy.referenceLocation, 0, referenceLocation.length ); copy.element = element; copy.squareDistance = squareDistance; return copy; } }