/**
  * Adds a Science_Chemistry_Atom object to the list of atoms in the molecule
  * 
  * @param   object  Science_Chemistry_Atom   $atom
  * @return  boolean
  * @access  public
  * @see     initMolecule()
  */
 function addAtom($atom)
 {
     if (Science_Chemistry_Atom::isAtom($atom)) {
         $this->atoms[] = $atom;
         $this->num_atoms++;
         // unset the distance matrix and
         // connection table if they are not empty
         // so next time either one is requested
         // it gets calculated anew
         if (!empty($this->dist_matrix)) {
             $this->dist_matrix = array();
         }
         if (!empty($this->conn_table)) {
             $this->conn_table = array();
         }
         return true;
     } else {
         return false;
     }
 }
 /**
  * Calculates the cartesian distance from this atom
  * instance to another
  *
  * @param   object  Science_Chemistry_Atom $atom2
  * @return  float   distance
  * @access  public
  */
 function distance($atom2)
 {
     if (!empty($this->xyz) && Science_Chemistry_Coordinates::areCoordinates($this->xyz) && Science_Chemistry_Atom::isAtom($atom2)) {
         return $this->xyz->distance($atom2->xyz);
     } else {
         return -1.0;
     }
 }