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
00028 #ifndef _chemistry_qc_wfn_density_h
00029 #define _chemistry_qc_wfn_density_h
00030
00031 #ifdef __GNUC__
00032 #pragma interface
00033 #endif
00034
00035 #include <math/isosurf/volume.h>
00036 #include <chemistry/qc/wfn/wfn.h>
00037 #include <chemistry/molecule/molrender.h>
00038
00039 class ElectronDensity: public Volume {
00040 protected:
00041 Ref<Wavefunction> wfn_;
00042 virtual void compute();
00043 public:
00044 ElectronDensity(const Ref<KeyVal>&);
00045 ElectronDensity(const Ref<Wavefunction>&);
00046 ~ElectronDensity();
00047 virtual void boundingbox(double valuemin,
00048 double valuemax,
00049 SCVector3& p1, SCVector3& p2);
00050 };
00051
00052 class DensityColorizer: public MoleculeColorizer {
00053 protected:
00054 Ref<Wavefunction> wfn_;
00055 double scale_;
00056 double reference_;
00057 int have_scale_;
00058 int have_reference_;
00059 public:
00060 DensityColorizer(const Ref<KeyVal>&);
00061 ~DensityColorizer();
00062
00063 void colorize(const Ref<RenderedPolygons> &);
00064 };
00065
00066 class GradDensityColorizer: public MoleculeColorizer {
00067 protected:
00068 Ref<Wavefunction> wfn_;
00069 double scale_;
00070 double reference_;
00071 int have_scale_;
00072 int have_reference_;
00073 public:
00074 GradDensityColorizer(const Ref<KeyVal>&);
00075 ~GradDensityColorizer();
00076
00077 void colorize(const Ref<RenderedPolygons> &);
00078 };
00079
00080 #endif
00081
00082
00083
00084
00085