test_class.file: tool/pcore/src/test/java/org/openscience/cdk/pharmacophore/PharmacophoreAngleBondTest.java
test_class.identifier: PharmacophoreAngleBondTest
test_case.body: @Test
      public void testGetAngle5() {
          PharmacophoreAtom patom1 = new PharmacophoreAtom("[CX2]N", "Amine", new Point3d(1, 1, 1));
          PharmacophoreAtom patom2 = new PharmacophoreAtom("c1ccccc1", "Aromatic", new Point3d(0, 0, 0));
          PharmacophoreAtom patom3 = new PharmacophoreAtom("C", "Blah", new Point3d(1, 0, 0));
          PharmacophoreAngleBond pbond = new PharmacophoreAngleBond(patom1, patom2, patom3);
          Assert.assertEquals(54.7356, pbond.getBondLength(), 0.0001);
      }
test_case.class_method_signature: PharmacophoreAngleBondTest.testGetAngle5()
test_case.full_signature: @Test public void testGetAngle5()
test_case.identifier: testGetAngle5
test_case.invocations: assertEquals getBondLength
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testGetAngle5()
focal_class.file: tool/pcore/src/main/java/org/openscience/cdk/pharmacophore/PharmacophoreAngleBond.java
focal_class.identifier: PharmacophoreAngleBond
focal_class.class_method_signature: PharmacophoreAngleBond.PharmacophoreAngleBond(PharmacophoreAtom patom1, PharmacophoreAtom patom2, PharmacophoreAtom patom3)
focal_class.full_signature: public  PharmacophoreAngleBond(PharmacophoreAtom patom1, PharmacophoreAtom patom2, PharmacophoreAtom patom3)
focal_class.identifier: PharmacophoreAngleBond
focal_class.modifiers: public
focal_class.parameters: (PharmacophoreAtom patom1, PharmacophoreAtom patom2, PharmacophoreAtom patom3)
focal_class.signature:  PharmacophoreAngleBond(PharmacophoreAtom patom1, PharmacophoreAtom patom2, PharmacophoreAtom patom3)
focal_class.class_method_signature: PharmacophoreAngleBond.getBondLength()
focal_class.full_signature: public double getBondLength()
focal_class.identifier: getBondLength
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: double
focal_class.signature: double getBondLength()
focal_class.superclass: extends Bond
focal_method.body: public double getBondLength() {
          double epsilon = 1e-3;
          PharmacophoreAtom atom1 = (PharmacophoreAtom) getAtom(0);
          PharmacophoreAtom atom2 = (PharmacophoreAtom) getAtom(1);
          PharmacophoreAtom atom3 = (PharmacophoreAtom) getAtom(2);
  
          double a2 = atom3.getPoint3d().distanceSquared(atom1.getPoint3d());
          double b2 = atom3.getPoint3d().distanceSquared(atom2.getPoint3d());
          double c2 = atom2.getPoint3d().distanceSquared(atom1.getPoint3d());
  
          double cosangle = (b2 + c2 - a2) / (2 * Math.sqrt(b2) * Math.sqrt(c2));
          if (-1.0 - epsilon < cosangle && -1.0 + epsilon > cosangle) return 180.0;
          if (1.0 - epsilon < cosangle && 1.0 + epsilon > cosangle) return 0.0;
  
          return Math.acos(cosangle) * 180.0 / Math.PI;
      }
focal_method.class_method_signature: PharmacophoreAngleBond.getBondLength()
focal_method.full_signature: public double getBondLength()
focal_method.identifier: getBondLength
focal_method.invocations: getAtom getAtom getAtom distanceSquared getPoint3d getPoint3d distanceSquared getPoint3d getPoint3d distanceSquared getPoint3d getPoint3d sqrt sqrt acos
focal_method.modifiers: public
focal_method.parameters: ()
focal_method.return: double
focal_method.signature: double getBondLength()