Science_Chemistry
[ class tree: Science_Chemistry ] [ index: Science_Chemistry ] [ all elements ]

Source for file Coordinates.php

Documentation is available at Coordinates.php

  1. <?php
  2. //
  3. // +----------------------------------------------------------------------+
  4. // | PHP Version 4                                                        |
  5. // +----------------------------------------------------------------------+
  6. // | Copyright (c) 1997-2003 The PHP Group                                |
  7. // +----------------------------------------------------------------------+
  8. // | This source file is subject to version 2.0 of the PHP license,       |
  9. // | that is bundled with this package in the file LICENSE, and is        |
  10. // | available at through the world-wide-web at                           |
  11. // | http://www.php.net/license/2_02.txt.                                 |
  12. // | If you did not receive a copy of the PHP license and are unable to   |
  13. // | obtain it through the world-wide-web, please send a note to          |
  14. // | license@php.net so we can mail you a copy immediately.               |
  15. // +----------------------------------------------------------------------+
  16. // | Authors: Jesus M. Castagnetto <jmcastagnetto@php.net>                |
  17. // +----------------------------------------------------------------------+
  18. //
  19. // $Id$
  20. //
  21.  
  22. /**
  23.  * Utility class for defining 3D coordinates and
  24.  * its associated distance() method
  25.  *
  26.  * @author  Jesus M. Castagnetto <jmcastagnetto@php.net>
  27.  * @version 1.0
  28.  * @access  public
  29.  * @package Science_Chemistry
  30.  */
  31.  
  32.     /**
  33.      * Array of tridimensional coordinates: (x, y, z)
  34.      * 
  35.      * @var     array 
  36.      * @access  private
  37.      */
  38.     var $coords;
  39.     
  40.     /**
  41.      * Constructor for the class, returns null if parameter is
  42.      * not an array with 3 entries
  43.      *
  44.      * @param   array   $coords array of three floats (x, y, z)
  45.      * @return  object  Science_Chemistry_Coordinates 
  46.      * @access  public
  47.      */
  48.     function Science_Chemistry_Coordinates($coords{
  49.         if (is_array($coords&& count($coords== 3)
  50.             $this->coords $coords;
  51.         else
  52.             return null;
  53.     }
  54.     
  55.     /**
  56.      * Cartesian distance calculation method
  57.      *
  58.      * @param   object  Science_Chemistry_Coordinates $coord 
  59.      * @return  float   distance
  60.      * @access  public
  61.      */
  62.     function distance($coord{
  63.         if (Science_Chemistry_Coordinates::areCoordinates($coord)) {
  64.             $xyz2 $coord->getCoordinates();
  65.             $sum2 = 0;
  66.             for ($i=0; $i<count($xyz2)$i++{
  67.                 $sum2 += pow(($xyz2[$i$this->coords[$i]),2);
  68.             }
  69.             return sqrt($sum2);
  70.         }
  71.     }
  72.  
  73.     /**
  74.      * Checks if the object is an instance of Science_Chemistry_Coordinates
  75.      * 
  76.      * @param   object  Science_Chemistry_Coordinates    $obj 
  77.      * @return  boolean 
  78.      * @access  public
  79.      */
  80.     function areCoordinates($obj{
  81.         return  is_object($obj&& 
  82.                  (strtolower(strtolower(get_class($obj))) == strtolower("Science_Chemistry_Coordinates")
  83.                   || is_subclass_of($objstrtolower("Science_Chemistry_Coordinates")))
  84.                 );
  85.     }
  86.  
  87.     /**
  88.      * Returns the array of coordinates
  89.      *
  90.      * @return  array   array (x, y, z)
  91.      * @access  public
  92.      */
  93.     function getCoordinates({
  94.         if (is_array($this->coords&& !empty($this->coords))
  95.             return $this->coords;
  96.     }
  97.  
  98.     /**
  99.      * Returns a string representation of the coordinates: x y z
  100.      *
  101.      * @return  string 
  102.      * @access  public
  103.      */
  104.     function toString({
  105.         for ($i=0; $i<count($this->coords)$i++)
  106.             $tmp[$isprintf("%10.4f",$this->coords[$i]);
  107.         return implode(" ",$tmp);
  108.     }
  109.  
  110.     /**
  111.      * Returns a CML representation of the coordinates
  112.      *
  113.      * @return  string 
  114.      * @access  public
  115.      */
  116.     function toCML({
  117.         $out "<coordinate3 builtin=\"xyz3\">";
  118.         $tmp = array();
  119.         for ($i=0; $i count($this->coords)$i++)
  120.             $tmp[trim(sprintf("%10.4f"$this->coords[$i]));
  121.         $out .= implode(" ",$tmp)."</coordinate3>\n";
  122.         return $out;
  123.     }
  124.  
  125. // end of class Science_Chemistry_Coordinates
  126.  
  127. // vim: expandtab: ts=4: sw=4
  128. ?>

Documentation generated on Mon, 11 Mar 2019 15:48:16 -0400 by phpDocumentor 1.4.4. PEAR Logo Copyright © PHP Group 2004.