X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scenegraph%2Fsrc%2Fcom%2Finfomatiq%2Fjsi%2FSpatialIndex.java;h=cacd07d14585158c0d0babd4094c085319c52310;hb=6dc5e6caf621067311ea19d6b689ffb77470a916;hp=073cf7087ad10366a11d6185f41b4843fc117467;hpb=969bd23cab98a79ca9101af33334000879fb60c5;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scenegraph/src/com/infomatiq/jsi/SpatialIndex.java b/bundles/org.simantics.scenegraph/src/com/infomatiq/jsi/SpatialIndex.java index 073cf7087..cacd07d14 100644 --- a/bundles/org.simantics.scenegraph/src/com/infomatiq/jsi/SpatialIndex.java +++ b/bundles/org.simantics.scenegraph/src/com/infomatiq/jsi/SpatialIndex.java @@ -1,165 +1,165 @@ -// SpatialIndex.java -// Java Spatial Index Library -// Copyright (C) 2002-2005 Infomatiq Limited. -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -package com.infomatiq.jsi; - -import gnu.trove.TIntProcedure; - -import java.util.Properties; - -/** - * Defines methods that must be implemented by all - * spatial indexes. This includes the RTree and its variants. - * - * @author aled@sourceforge.net - * @version 1.0b8 - */ -public interface SpatialIndex { - - /** - * Initializes any implementation dependent properties - * of the spatial index. For example, RTree implementations - * will have a NodeSize property. - * - * @param props The set of properties used to initialize the spatial index. - */ - public void init(Properties props); - - /** - * Adds a new rectangle to the spatial index - * - * @param r The rectangle to add to the spatial index. - * @param id The ID of the rectangle to add to the spatial index. - * The result of adding more than one rectangle with - * the same ID is undefined. - */ - public void add(Rectangle r, int id); - - /** - * Deletes a rectangle from the spatial index - * - * @param r The rectangle to delete from the spatial index - * @param id The ID of the rectangle to delete from the spatial - * index - * - * @return true if the rectangle was deleted - * false if the rectangle was not found, or the - * rectangle was found but with a different ID - */ - public boolean delete(Rectangle r, int id); - - /** - * Finds the nearest rectangles to the passed rectangle and calls - * v.execute(id) for each one. - * - * If multiple rectangles are equally near, they will - * all be returned. - * - * @param p The point for which this method finds the - * nearest neighbours. - * - * @param v The IntProcedure whose execute() method is is called - * for each nearest neighbour. - * - * @param furthestDistance The furthest distance away from the rectangle - * to search. Rectangles further than this will not be found. - * - * This should be as small as possible to minimise - * the search time. - * - * Use Float.POSITIVE_INFINITY to guarantee that the nearest rectangle is found, - * no matter how far away, although this will slow down the algorithm. - */ - public void nearest(Point p, TIntProcedure v, float furthestDistance); - - /** - * Finds the N nearest rectangles to the passed rectangle, and calls - * execute(id, distance) on each one, in order of increasing distance. - * - * Note that fewer than N rectangles may be found if fewer entries - * exist within the specified furthest distance, or more if rectangles - * N and N+1 have equal distances. - * - * @param p The point for which this method finds the - * nearest neighbours. - * - * @param v The IntfloatProcedure whose execute() method is is called - * for each nearest neighbour. - * - * @param n The desired number of rectangles to find (but note that - * fewer or more may be returned) - * - * @param distance The furthest distance away from the rectangle - * to search. Rectangles further than this will not be found. - * - * This should be as small as possible to minimise - * the search time. - * - * Use Float.POSITIVE_INFINITY to guarantee that the nearest rectangle is found, - * no matter how far away, although this will slow down the algorithm. - */ - public void nearestN(Point p, TIntProcedure v, int n, float distance); - - /** - * Same as nearestN, except the found rectangles are not returned - * in sorted order. This will be faster, if sorting is not required - */ - public void nearestNUnsorted(Point p, TIntProcedure v, int n, float distance); - - /** - * Finds all rectangles that intersect the passed rectangle. - * - * @param r The rectangle for which this method finds - * intersecting rectangles. - * - * @param ip The IntProcedure whose execute() method is is called - * for each intersecting rectangle. - */ - public void intersects(Rectangle r, TIntProcedure ip); - - /** - * Finds all rectangles contained by the passed rectangle. - * - * @param r The rectangle for which this method finds - * contained rectangles. - * - * @param ip The procedure whose visit() method is is called - * for each contained rectangle. - */ - public void contains(Rectangle r, TIntProcedure ip); - - /** - * Returns the number of entries in the spatial index - */ - public int size(); - - - /** - * Returns the bounds of all the entries in the spatial index, - * or null if there are no entries. - */ - public Rectangle getBounds(); - - /** - * Returns a string identifying the type of - * spatial index, and the version number, - * eg "SimpleIndex-0.1" - */ - public String getVersion(); - -} +// SpatialIndex.java +// Java Spatial Index Library +// Copyright (C) 2002-2005 Infomatiq Limited. +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +package com.infomatiq.jsi; + +import gnu.trove.TIntProcedure; + +import java.util.Properties; + +/** + * Defines methods that must be implemented by all + * spatial indexes. This includes the RTree and its variants. + * + * @author aled@sourceforge.net + * @version 1.0b8 + */ +public interface SpatialIndex { + + /** + * Initializes any implementation dependent properties + * of the spatial index. For example, RTree implementations + * will have a NodeSize property. + * + * @param props The set of properties used to initialize the spatial index. + */ + public void init(Properties props); + + /** + * Adds a new rectangle to the spatial index + * + * @param r The rectangle to add to the spatial index. + * @param id The ID of the rectangle to add to the spatial index. + * The result of adding more than one rectangle with + * the same ID is undefined. + */ + public void add(Rectangle r, int id); + + /** + * Deletes a rectangle from the spatial index + * + * @param r The rectangle to delete from the spatial index + * @param id The ID of the rectangle to delete from the spatial + * index + * + * @return true if the rectangle was deleted + * false if the rectangle was not found, or the + * rectangle was found but with a different ID + */ + public boolean delete(Rectangle r, int id); + + /** + * Finds the nearest rectangles to the passed rectangle and calls + * v.execute(id) for each one. + * + * If multiple rectangles are equally near, they will + * all be returned. + * + * @param p The point for which this method finds the + * nearest neighbours. + * + * @param v The IntProcedure whose execute() method is is called + * for each nearest neighbour. + * + * @param furthestDistance The furthest distance away from the rectangle + * to search. Rectangles further than this will not be found. + * + * This should be as small as possible to minimise + * the search time. + * + * Use Float.POSITIVE_INFINITY to guarantee that the nearest rectangle is found, + * no matter how far away, although this will slow down the algorithm. + */ + public void nearest(Point p, TIntProcedure v, float furthestDistance); + + /** + * Finds the N nearest rectangles to the passed rectangle, and calls + * execute(id, distance) on each one, in order of increasing distance. + * + * Note that fewer than N rectangles may be found if fewer entries + * exist within the specified furthest distance, or more if rectangles + * N and N+1 have equal distances. + * + * @param p The point for which this method finds the + * nearest neighbours. + * + * @param v The IntfloatProcedure whose execute() method is is called + * for each nearest neighbour. + * + * @param n The desired number of rectangles to find (but note that + * fewer or more may be returned) + * + * @param distance The furthest distance away from the rectangle + * to search. Rectangles further than this will not be found. + * + * This should be as small as possible to minimise + * the search time. + * + * Use Float.POSITIVE_INFINITY to guarantee that the nearest rectangle is found, + * no matter how far away, although this will slow down the algorithm. + */ + public void nearestN(Point p, TIntProcedure v, int n, float distance); + + /** + * Same as nearestN, except the found rectangles are not returned + * in sorted order. This will be faster, if sorting is not required + */ + public void nearestNUnsorted(Point p, TIntProcedure v, int n, float distance); + + /** + * Finds all rectangles that intersect the passed rectangle. + * + * @param r The rectangle for which this method finds + * intersecting rectangles. + * + * @param ip The IntProcedure whose execute() method is is called + * for each intersecting rectangle. + */ + public void intersects(Rectangle r, TIntProcedure ip); + + /** + * Finds all rectangles contained by the passed rectangle. + * + * @param r The rectangle for which this method finds + * contained rectangles. + * + * @param ip The procedure whose visit() method is is called + * for each contained rectangle. + */ + public void contains(Rectangle r, TIntProcedure ip); + + /** + * Returns the number of entries in the spatial index + */ + public int size(); + + + /** + * Returns the bounds of all the entries in the spatial index, + * or null if there are no entries. + */ + public Rectangle getBounds(); + + /** + * Returns a string identifying the type of + * spatial index, and the version number, + * eg "SimpleIndex-0.1" + */ + public String getVersion(); + +}