molecule_xyz.php

来自「视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.」· PHP 代码 · 共 125 行

PHP
125
字号
<?php//// +----------------------------------------------------------------------+// | PHP Version 4                                                        |// +----------------------------------------------------------------------+// | Copyright (c) 1997-2003 The PHP Group                                |// +----------------------------------------------------------------------+// | This source file is subject to version 2.0 of the PHP license,       |// | that is bundled with this package in the file LICENSE, and is        |// | available at through the world-wide-web at                           |// | http://www.php.net/license/2_02.txt.                                 |// | If you did not receive a copy of the PHP license and are unable to   |// | obtain it through the world-wide-web, please send a note to          |// | license@php.net so we can mail you a copy immediately.               |// +----------------------------------------------------------------------+// | Authors: Jesus M. Castagnetto <jmcastagnetto@php.net>                |// +----------------------------------------------------------------------+//// $Id: Molecule_XYZ.php,v 1.4 2003/01/04 11:56:25 mj Exp $//require_once "Science/Chemistry.php";require_once "Science/Chemistry/Molecule.php";/** * Base class representing a Molecule from a XYZ format file * * @author  Jesus M. Castagnetto <jmcastagnetto@php.net> * @version 1.0 * @access  public * @package Science_Chemistry */class Science_Chemistry_Molecule_XYZ extends Science_Chemistry_Molecule {    /**     * Energy of the molecule. Optional value in XYZ file format.     *     * @var float     * @access public     */	var $energy = 0.0;    /**     * Constructor for the class, accepts 2 optional parameters:     * the data and its source. Possible values for $src: "file", "string"     *     * @param   optional    string $xyzdata     * @param   optional    string  $src   one of "file" or "string"     * @return  object Science_Chemistry_Molecule_XYZ     * @access  public     * @see     parseXYZ()     */	function Science_Chemistry_Molecule_XYZ($xyzdata="", $src="file") {		if (!empty($xyzdata))			if (!$this->parseXYZ($xyzdata, $src))				return null;	}    /**     * method that does the parsing of the XYZ data itself     *     * @param   string  $xyzdata     * @param   string  $src     * @return  boolean     * @access  public     * @see     Science_Chemistry_Molecule_XYZ()     */	function parseXYZ($xyzdata, $src) {		if ($src == "file") {			$line = file($xyzdata);		} elseif ($src == "string") {			$line = explode("\n", $xyzdata);		} else {			return false;		}		unset($this->atoms);		// first line is number of atoms		$this->num_atoms = trim($line[0]);		// second line is molecule name and energy		ereg("^([[:alnum:].]+)[[:space:]]+([[:digit:].-]+)",trim($line[1]),&$re);		$this->name = trim($re[1]);		$this->energy = trim($re[2]);		for ($i=2; $i<count($line); $i++) {			if (!ereg("^#",$line[$i]) && !ereg("^$", $line[$i])) {				$this->atoms[] = $this->parseAtom($line[$i]);			}		}	}    /**     * Parses an XYZ atom record     *     * @param   string  $line     * @return  object  Science_Chemistry_Atom     * @access   public     * @see     parseXYZ()     */	function parseAtom($line) {		list($element, $x, $y, $z) = split("[\t ]+",trim($line));		return new Science_Chemistry_Atom($element, array($x, $y, $z));	}    /**     * Generates a string representation of the XYZ molecule     * Overrides parent Science_Chemistry_Molecule::toString() method     *     * @return  string     * @access  public     */	function toString() {		if (!$this->atoms)			return false;		$out[] = $this->num_atoms;		$out[] = $this->name."\t".sprintf("%15f",$this->energy);		reset($this->atoms);		for ($i=0; $i<$this->num_atoms; $i++)			$out[] = $this->atoms[$i]->toString();		return implode("\n",$out)."\n";	}} // end of class Science_Chemistry_Molecule_XYZ// vim: expandtab: ts=4: sw=4?>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?