From: <gil...@us...> - 2008-11-26 15:49:18
|
Revision: 13308 http://cdk.svn.sourceforge.net/cdk/?rev=13308&view=rev Author: gilleain Date: 2008-11-26 15:49:15 +0000 (Wed, 26 Nov 2008) Log Message: ----------- Made nicer atom placement for when there is only one atom to sprout from. Modified Paths: -------------- cdk/branches/jchempaint-primary/src/main/org/openscience/cdk/controller/Controller2DHub.java Modified: cdk/branches/jchempaint-primary/src/main/org/openscience/cdk/controller/Controller2DHub.java =================================================================== --- cdk/branches/jchempaint-primary/src/main/org/openscience/cdk/controller/Controller2DHub.java 2008-11-26 15:34:10 UTC (rev 13307) +++ cdk/branches/jchempaint-primary/src/main/org/openscience/cdk/controller/Controller2DHub.java 2008-11-26 15:49:15 UTC (rev 13308) @@ -302,18 +302,30 @@ atomPlacer.setMolecule(chemModel.getBuilder().newMolecule(atomCon)); double bondLength = GeometryTools.getBondLengthAverage(atomCon); - // determine the atoms which define where the new atom should not be - // placed + // determine the atoms which define where the + // new atom should not be placed List<IAtom> connectedAtoms = atomCon.getConnectedAtomsList(atom); - IAtomContainer placedAtoms = atomCon.getBuilder().newAtomContainer(); - for (IAtom conAtom : connectedAtoms) placedAtoms.addAtom(conAtom); - Point2d center2D = GeometryTools.get2DCenter(placedAtoms); - - IAtomContainer unplacedAtoms = atomCon.getBuilder().newAtomContainer(); - unplacedAtoms.addAtom(newAtom); - atomPlacer.distributePartners(atom, placedAtoms, center2D, - unplacedAtoms, bondLength); + if (connectedAtoms.size() == 1) { + IAtomContainer ac = atomCon.getBuilder().newAtomContainer(); + ac.addAtom(atom); + ac.addAtom(newAtom); + Point2d distanceMeasure = new Point2d(0,0); // XXX not sure about this? + IAtom connectedAtom = connectedAtoms.get(0); + Vector2d v = atomPlacer.getNextBondVector(atom, connectedAtom, distanceMeasure, true); + atomPlacer.placeLinearChain(ac, v, bondLength); + } else { + IAtomContainer placedAtoms = atomCon.getBuilder().newAtomContainer(); + for (IAtom conAtom : connectedAtoms) placedAtoms.addAtom(conAtom); + Point2d center2D = GeometryTools.get2DCenter(placedAtoms); + + IAtomContainer unplacedAtoms = atomCon.getBuilder().newAtomContainer(); + unplacedAtoms.addAtom(newAtom); + + atomPlacer.distributePartners( + atom, placedAtoms, center2D, unplacedAtoms, bondLength); + } + atomCon.addAtom(newAtom); atomCon.addBond(newBond); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |