/** {@inheritDoc} */ @Override public void setPoint2d(Point2d point2d) { logger.debug("Setting point2d: x=" + point2d.x + ", y=" + point2d.y); super.setPoint2d(point2d); }
/** * Clones this atom object and its content. * * @return The cloned object */ @Override public IAtom clone() throws CloneNotSupportedException { Object clone = super.clone(); if (point2d != null) { ((Atom) clone).setPoint2d(new Point2d(point2d.x, point2d.y)); } if (point3d != null) { ((Atom) clone).setPoint3d(new Point3d(point3d.x, point3d.y, point3d.z)); } if (fractionalPoint3d != null) { ((Atom) clone).setFractionalPoint3d(new Point3d(fractionalPoint3d.x, fractionalPoint3d.y, fractionalPoint3d.z)); } return (IAtom) clone; }
/** * Clones this atom object and its content. * * @return The cloned object */ @Override public IAtom clone() throws CloneNotSupportedException { Object clone = super.clone(); if (point2d != null) { ((Atom) clone).setPoint2d(new Point2d(point2d.x, point2d.y)); } if (point3d != null) { ((Atom) clone).setPoint3d(new Point3d(point3d.x, point3d.y, point3d.z)); } if (fractionalPoint3d != null) { ((Atom) clone).setFractionalPoint3d(new Point3d(fractionalPoint3d.x, fractionalPoint3d.y, fractionalPoint3d.z)); } return (IAtom) clone; }
@Test public void testGetLength2D_IBond_HashMap() { Atom atom1 = new Atom("C"); atom1.setPoint2d(new Point2d(-1, -1)); Atom atom2 = new Atom("C"); atom2.setPoint2d(new Point2d(1, 0)); IBond bond = new Bond(atom1, atom2); IAtomContainer ac = DefaultChemObjectBuilder.getInstance().newInstance(IAtomContainer.class); ac.addAtom(atom1); ac.addAtom(atom2); Assert.assertEquals(GeometryUtil.getLength2D(bond), 2.23, 0.01); }
@Test public void testGet2DCenter_IAtomContainer() { Atom atom1 = new Atom("C"); atom1.setPoint2d(new Point2d(1, 1)); Atom atom2 = new Atom("C"); atom2.setPoint2d(new Point2d(1, 0)); IAtomContainer ac = DefaultChemObjectBuilder.getInstance().newInstance(IAtomContainer.class); ac.addAtom(atom1); ac.addAtom(atom2); Point2d p = GeometryUtil.get2DCenter(ac); Assert.assertEquals(p.x, 1.0, .1); Assert.assertEquals(p.y, 0.5, .1); }
@Test public void testGet2DCenter_arrayIAtom() { IAtomContainer container = new AtomContainer(); Atom atom1 = new Atom("C"); atom1.setPoint2d(new Point2d(1, 1)); Atom atom2 = new Atom("C"); atom2.setPoint2d(new Point2d(1, 0)); container.addAtom(atom1); container.addAtom(atom2); Point2d p = GeometryUtil.get2DCenter(container.atoms()); Assert.assertEquals(p.x, 1.0, .1); Assert.assertEquals(p.y, 0.5, .1); }
@Test public void testGet2DCenter_Iterator() { Atom atom1 = new Atom("C"); atom1.setPoint2d(new Point2d(1, 1)); Atom atom2 = new Atom("C"); atom2.setPoint2d(new Point2d(1, 0)); IAtomContainer ac = DefaultChemObjectBuilder.getInstance().newInstance(IAtomContainer.class); ac.addAtom(atom1); ac.addAtom(atom2); Point2d p = GeometryUtil.get2DCenter(ac.atoms()); Assert.assertEquals(p.x, 1.0, .1); Assert.assertEquals(p.y, 0.5, .1); }
/** @cdk.bug 2094881 */ @Test public void testGetMinMax2() { Atom atom1 = new Atom("C"); atom1.setPoint2d(new Point2d(-2, -1)); Atom atom2 = new Atom("C"); atom2.setPoint2d(new Point2d(-5, -1)); IAtomContainer ac = DefaultChemObjectBuilder.getInstance().newInstance(IAtomContainer.class); ac.addAtom(atom1); ac.addAtom(atom2); double[] minmax = GeometryUtil.getMinMax(ac); Assert.assertEquals(-5, minmax[0], .1); Assert.assertEquals(-1, minmax[1], .1); Assert.assertEquals(-2, minmax[2], .1); Assert.assertEquals(-1, minmax[3], .1); }
@Test public void testGetMinMax_IAtomContainer() { Atom atom1 = new Atom("C"); atom1.setPoint2d(new Point2d(1, 1)); Atom atom2 = new Atom("C"); atom2.setPoint2d(new Point2d(1, 0)); IAtomContainer ac = DefaultChemObjectBuilder.getInstance().newInstance(IAtomContainer.class); ac.addAtom(atom1); ac.addAtom(atom2); double[] minmax = GeometryUtil.getMinMax(ac); Assert.assertEquals(minmax[0], 1d, .1); Assert.assertEquals(minmax[1], 0d, .1); Assert.assertEquals(minmax[2], 1d, .1); Assert.assertEquals(minmax[3], 1d, .1); }
@Test public void testGet2DCenter_IRingSet() { Atom atom1 = new Atom("C"); atom1.setPoint2d(new Point2d(1, 1)); Atom atom2 = new Atom("C"); atom2.setPoint2d(new Point2d(1, 0)); IRing ac = DefaultChemObjectBuilder.getInstance().newInstance(IRing.class); ac.addAtom(atom1); ac.addAtom(atom2); IRingSet ringset = DefaultChemObjectBuilder.getInstance().newInstance(IRingSet.class); ringset.addAtomContainer(ac); Point2d p = GeometryUtil.get2DCenter(ac); Assert.assertEquals(p.x, 1.0, .1); Assert.assertEquals(p.y, 0.5, .1); }
@Test public void testGet2DCenterOfMass_IAtomContainer() { Atom atom1 = new Atom("C"); atom1.setPoint2d(new Point2d(1, 1)); atom1.setExactMass(12.0); Atom atom2 = new Atom("C"); atom2.setPoint2d(new Point2d(1, 0)); atom2.setExactMass(12.0); IAtomContainer ac = DefaultChemObjectBuilder.getInstance().newInstance(IAtomContainer.class); ac.addAtom(atom1); ac.addAtom(atom2); Point2d p = GeometryUtil.get2DCentreOfMass(ac); Assert.assertNotNull(p); Assert.assertEquals(p.x, 1.0, .1); Assert.assertEquals(p.y, 0.5, .1); }
@Test public void testRotate_IAtomContainer_Point2d_double() { Atom atom1 = new Atom("C"); atom1.setPoint2d(new Point2d(1, 1)); Atom atom2 = new Atom("C"); atom2.setPoint2d(new Point2d(1, 0)); IAtomContainer ac = DefaultChemObjectBuilder.getInstance().newInstance(IAtomContainer.class); ac.addAtom(atom1); ac.addAtom(atom2); GeometryUtil.rotate(ac, new Point2d(0, 0), Math.PI / 2); Assert.assertEquals(atom1.getPoint2d().x, -1, .2); Assert.assertEquals(atom1.getPoint2d().y, 1, .2); Assert.assertEquals(atom2.getPoint2d().x, 0, .2); Assert.assertEquals(atom2.getPoint2d().y, 1, .2); atom2.setPoint2d(new Point2d(0, 0)); GeometryUtil.rotate(ac, new Point2d(0, 0), Math.PI); Assert.assertFalse(Double.isNaN(atom2.getPoint2d().x)); Assert.assertFalse(Double.isNaN(atom2.getPoint2d().y)); }
@Test public void testTranslateAllPositive_IAtomContainer_HashMap() { Atom atom1 = new Atom("C"); atom1.setPoint2d(new Point2d(-1, -1)); Atom atom2 = new Atom("C"); atom2.setPoint2d(new Point2d(1, 0)); IAtomContainer ac = DefaultChemObjectBuilder.getInstance().newInstance(IAtomContainer.class); ac.addAtom(atom1); ac.addAtom(atom2); GeometryUtil.translateAllPositive(ac); Assert.assertEquals(atom1.getPoint2d().x, 0.0, 0.01); Assert.assertEquals(atom1.getPoint2d().y, 0.0, 0.01); Assert.assertEquals(atom2.getPoint2d().x, 2.0, 0.01); Assert.assertEquals(atom2.getPoint2d().y, 1.0, 0.01); }
@Test public void testHas2DCoordinates_IBond() { Atom atom1 = new Atom("C"); atom1.setPoint2d(new Point2d(1, 1)); Atom atom2 = new Atom("C"); atom2.setPoint2d(new Point2d(1, 0)); IBond bond = new Bond(atom1, atom2); Assert.assertTrue(GeometryUtil.has2DCoordinates(bond)); atom1 = new Atom("C"); atom1.setPoint3d(new Point3d(1, 1, 1)); atom2 = new Atom("C"); atom2.setPoint3d(new Point3d(1, 0, 5)); bond = new Bond(atom1, atom2); Assert.assertFalse(GeometryUtil.has2DCoordinates(bond)); }
@Test public void testHas2DCoordinates_IAtom() { Atom atom1 = new Atom("C"); atom1.setPoint2d(new Point2d(1, 1)); Assert.assertTrue(GeometryUtil.has2DCoordinates(atom1)); atom1 = new Atom("C"); atom1.setPoint3d(new Point3d(1, 1, 1)); Assert.assertFalse(GeometryUtil.has2DCoordinates(atom1)); }
@Test public void testHas2DCoordinates_Partial() { IAtomContainer container = new AtomContainer(); Atom atom1 = new Atom("C"); Atom atom2 = new Atom("C"); atom1.setPoint2d(new Point2d(1, 1)); container.addAtom(atom1); Assert.assertTrue(GeometryUtil.has2DCoordinates(container)); container.addAtom(atom2); Assert.assertFalse(GeometryUtil.has2DCoordinates(container)); }
@Test public void testAtom2D() throws Exception { IAtomContainer mol = new AtomContainer(); Atom atom = new Atom("N"); Point2d p2d = new Point2d(1.3, 1.4); atom.setPoint2d(p2d); mol.addAtom(atom); IAtomContainer roundTrippedMol = CMLRoundTripTool.roundTripMolecule(convertor, mol); Assert.assertEquals(1, roundTrippedMol.getAtomCount()); IAtom roundTrippedAtom = roundTrippedMol.getAtom(0); assertEquals(atom.getPoint2d(), roundTrippedAtom.getPoint2d(), 0.00001); }
@Test public void testHas2DCoordinates_IAtomContainer() { Atom atom1 = new Atom("C"); atom1.setPoint2d(new Point2d(1, 1)); Atom atom2 = new Atom("C"); atom2.setPoint2d(new Point2d(1, 0)); IAtomContainer container = new AtomContainer(); container.addAtom(atom1); container.addAtom(atom2); Assert.assertTrue(GeometryUtil.has2DCoordinates(container)); atom1 = new Atom("C"); atom1.setPoint3d(new Point3d(1, 1, 1)); atom2 = new Atom("C"); atom2.setPoint3d(new Point3d(1, 0, 5)); container = new AtomContainer(); container.addAtom(atom1); container.addAtom(atom2); Assert.assertFalse(GeometryUtil.has2DCoordinates(container)); }
@Test public void testHas3DCoordinates_IAtomContainer() { Atom atom1 = new Atom("C"); atom1.setPoint2d(new Point2d(1, 1)); Atom atom2 = new Atom("C"); atom2.setPoint2d(new Point2d(1, 0)); IAtomContainer container = new AtomContainer(); container.addAtom(atom1); container.addAtom(atom2); Assert.assertFalse(GeometryUtil.has3DCoordinates(container)); atom1 = new Atom("C"); atom1.setPoint3d(new Point3d(1, 1, 1)); atom2 = new Atom("C"); atom2.setPoint3d(new Point3d(1, 0, 5)); container = new AtomContainer(); container.addAtom(atom1); container.addAtom(atom2); Assert.assertTrue(GeometryUtil.has3DCoordinates(container)); }
@Test public void testAtom2DAnd3D() throws Exception { IAtomContainer mol = new AtomContainer(); Atom atom = new Atom("N"); Point2d p2d = new Point2d(1.3, 1.4); atom.setPoint2d(p2d); Point3d p3d = new Point3d(1.3, 1.4, 0.9); atom.setPoint3d(p3d); mol.addAtom(atom); IAtomContainer roundTrippedMol = CMLRoundTripTool.roundTripMolecule(convertor, mol); Assert.assertEquals(1, roundTrippedMol.getAtomCount()); IAtom roundTrippedAtom = roundTrippedMol.getAtom(0); assertEquals(atom.getPoint2d(), roundTrippedAtom.getPoint2d(), 0.00001); assertEquals(atom.getPoint3d(), roundTrippedAtom.getPoint3d(), 0.00001); }