From: <nie...@us...> - 2007-07-27 08:07:33
|
Revision: 8614 http://cdk.svn.sourceforge.net/cdk/?rev=8614&view=rev Author: nielsout Date: 2007-07-27 01:07:30 -0700 (Fri, 27 Jul 2007) Log Message: ----------- getClosestAtom and getClosestBond can now have doubles as input as required by Java2DRenderer Modified Paths: -------------- trunk/cdk/src/org/openscience/cdk/geometry/GeometryToolsInternalCoordinates.java Modified: trunk/cdk/src/org/openscience/cdk/geometry/GeometryToolsInternalCoordinates.java =================================================================== --- trunk/cdk/src/org/openscience/cdk/geometry/GeometryToolsInternalCoordinates.java 2007-07-26 21:49:33 UTC (rev 8613) +++ trunk/cdk/src/org/openscience/cdk/geometry/GeometryToolsInternalCoordinates.java 2007-07-27 08:07:30 UTC (rev 8614) @@ -656,8 +656,36 @@ } return closestAtom; } + /** + * Returns the atom of the given molecule that is closest to the given + * coordinates. + * See comment for center(IAtomContainer atomCon, Dimension areaDim, HashMap renderingCoordinates) for details on coordinate sets + * + *@param xPosition The x coordinate + *@param yPosition The y coordinate + *@param atomCon The molecule that is searched for the closest atom + *@return The atom that is closest to the given coordinates + */ + public static IAtom getClosestAtom(double xPosition, double yPosition, IAtomContainer atomCon) { + IAtom closestAtom = null; + IAtom currentAtom; + double smallestMouseDistance = -1; + double mouseDistance; + double atomX; + double atomY; + for (int i = 0; i < atomCon.getAtomCount(); i++) { + currentAtom = atomCon.getAtom(i); + atomX = currentAtom.getPoint2d().x; + atomY = currentAtom.getPoint2d().y; + mouseDistance = Math.sqrt(Math.pow(atomX - xPosition, 2) + Math.pow(atomY - yPosition, 2)); + if (mouseDistance < smallestMouseDistance || smallestMouseDistance == -1) { + smallestMouseDistance = mouseDistance; + closestAtom = currentAtom; + } + } + return closestAtom; + } - /** * Returns the bond of the given molecule that is closest to the given * coordinates. @@ -686,7 +714,34 @@ } return closestBond; } + /** + * Returns the bond of the given molecule that is closest to the given + * coordinates. + * See comment for center(IAtomContainer atomCon, Dimension areaDim, HashMap renderingCoordinates) for details on coordinate sets + * + *@param xPosition The x coordinate + *@param yPosition The y coordinate + *@param atomCon The molecule that is searched for the closest bond + *@return The bond that is closest to the given coordinates + */ + public static IBond getClosestBond(double xPosition, double yPosition, IAtomContainer atomCon) { + Point2d bondCenter; + IBond closestBond = null; + double smallestMouseDistance = -1; + double mouseDistance; + Iterator bonds = atomCon.bonds(); + while (bonds.hasNext()) { + IBond currentBond = (IBond) bonds.next(); + bondCenter = get2DCenter(currentBond.atoms()); + mouseDistance = Math.sqrt(Math.pow(bondCenter.x - xPosition, 2) + Math.pow(bondCenter.y - yPosition, 2)); + if (mouseDistance < smallestMouseDistance || smallestMouseDistance == -1) { + smallestMouseDistance = mouseDistance; + closestBond = currentBond; + } + } + return closestBond; + } /** * Sorts a Vector of atoms such that the 2D distances of the atom locations This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |