crystalbond.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
#ifndef CRYSTAL_BOND_H
00028
#define CRYSTAL_BOND_H
00029
00030
#include <libxml/parser.h>
00031
#include <list>
00032
#include "bond.h"
00033
00034
using namespace std;
00035
00036
namespace gcu
00037 {
00038
00042 class CrystalBond:
public Bond
00043 {
00044
public:
00045
CrystalBond ();
00046
virtual ~
CrystalBond ();
00047
00048
public :
00049
CrystalBond (
double X1,
double Y1,
double Z1,
double X2,
double Y2,
double Z2,
double r,
float red,
float green,
float blue,
float alpha);
00050
CrystalBond (
CrystalBond& cbBond);
00051
CrystalBond& operator= (
CrystalBond&);
00052
00053
void Draw ();
00054
double X1 (
void) {
return m_dx;}
00055
double Y1 (
void) {
return m_dy;}
00056
double Z1 (
void) {
return m_dz;}
00057
double X2 (
void) {
return m_dx2;}
00058
double Y2 (
void) {
return m_dy2;}
00059
double Z2 (
void) {
return m_dz2;}
00060
double Xmax ();
00061
double Ymax ();
00062
double Zmax ();
00063
double Xmin ();
00064
double Ymin ();
00065
double Zmin ();
00066
double Long () {
return m_dl;}
00067
void SetPosition (
double x,
double y,
double z,
double x1,
double y1,
double z1);
00068
void SetColor (
float red,
float green,
float blue,
float alpha);
00069
void GetColor (
double *red,
double *green,
double *blue,
double *alpha);
00070
void SetRadius (
double r);
00071
double GetRadius () {
return m_dr;};
00072
bool operator== (
CrystalBond&);
00073
virtual void Move (
double x,
double y,
double z);
00074
double ScalProd (
int h,
int k,
int l);
00075
void Cleave () {m_nCleave++;}
00076
void NetToCartesian (
double a,
double b,
double c,
double alpha,
double beta,
double gamma);
00077
double Distance (
double x,
double y,
double z,
bool bFixed);
00078
bool IsCleaved () {
return m_nCleave != 0;}
00079
void GetRotation (
double& x,
double& y,
double& z,
double& th);
00080
virtual xmlNodePtr
Save (xmlDocPtr xml);
00081
virtual bool Load (xmlNodePtr node);
00082
00083
private :
00084
float m_fBlue, m_fRed, m_fGreen, m_fAlpha;
00085
double m_dx, m_dy, m_dz, m_dx2, m_dy2, m_dz2, m_dr, m_dl;
00086
double m_dxrot, m_dyrot, m_darot;
00087
int m_nCleave;
00088 };
00089
00090
typedef list<CrystalBond*> CrystalBondList;
00091
00092 }
00093
00094
#endif // CRYSTAL_BOND_H
Generated on Mon Dec 13 15:25:37 2004 for The Gnome Chemistry Utils by
1.3.8