From: <eg...@us...> - 2008-11-26 12:55:21
|
Revision: 13294 http://cdk.svn.sourceforge.net/cdk/?rev=13294&view=rev Author: egonw Date: 2008-11-26 11:52:54 +0000 (Wed, 26 Nov 2008) Log Message: ----------- Ported patch by gilleain to jchempaint-primary (rev 13257) Revision Links: -------------- http://cdk.svn.sourceforge.net/cdk/?rev=13257&view=rev Modified Paths: -------------- cdk/branches/cdk-1.2.x/src/main/org/openscience/cdk/layout/RingPlacer.java Modified: cdk/branches/cdk-1.2.x/src/main/org/openscience/cdk/layout/RingPlacer.java =================================================================== --- cdk/branches/cdk-1.2.x/src/main/org/openscience/cdk/layout/RingPlacer.java 2008-11-26 11:25:03 UTC (rev 13293) +++ cdk/branches/cdk-1.2.x/src/main/org/openscience/cdk/layout/RingPlacer.java 2008-11-26 11:52:54 UTC (rev 13294) @@ -1,9 +1,7 @@ -/* $RCSfile$ - * $Author$ - * $Date$ - * $Revision$ +/* $Revision$ $Author$ $Date$ * * Copyright (C) 1997-2007 The Chemistry Development Kit (CDK) project + * 2008 Gilleain Torrance <gil...@us...> * * Contact: cdk...@li... * @@ -28,6 +26,7 @@ */ package org.openscience.cdk.layout; +import java.util.List; import java.util.Vector; import javax.vecmath.Point2d; @@ -104,6 +103,29 @@ } + public void placeRing(IRing ring, Point2d ringCenter, double bondLength) { + double radius = this.getNativeRingRadius(ring, bondLength); + double addAngle = 2 * Math.PI / ring.getRingSize(); + + IAtom startAtom = ring.getFirstAtom(); + Point2d p = new Point2d(ringCenter.x + radius, ringCenter.y); + startAtom.setPoint2d(p); + double startAngle = 0.0; + List<IBond> bonds = ring.getConnectedBondsList(startAtom); + /* + * Store all atoms to draw in consecutive order relative to the + * chosen bond. + */ + Vector<IAtom> atomsToDraw = new Vector<IAtom>(); + IAtom currentAtom = startAtom; + IBond currentBond = (IBond)bonds.get(0); + for (int i = 0; i < ring.getBondCount(); i++) { + currentBond = ring.getNextBond(currentBond, currentAtom); + currentAtom = currentBond.getConnectedAtom(currentAtom); + atomsToDraw.addElement(currentAtom); + } + atomPlacer.populatePolygonCorners(atomsToDraw, ringCenter, startAngle, addAngle, radius); + } /** * Positions the aliphatic substituents of a ring system @@ -588,7 +610,7 @@ * @param bondLength The bond length for each bond in the ring * @return The radius of the ring. */ - public double getNativeRingRadius(IRing ring, double bondLength) + public double getNativeRingRadius(IRing ring, double bondLength) { int size = ring.getAtomCount(); double radius = bondLength / (2 * Math.sin((Math.PI) / size)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |