PolygonalEnergy.h

Go to the documentation of this file.
00001 /* $Id: PolygonalEnergy.h,v 1.4 2002/12/05 19:30:18 cvs Exp $ */
00002 
00003 #ifndef __POLYGONAL_ENERGY_H
00004 #define __POLYGONAL_ENERGY_H
00005 
00006 #include <esg/energy/EnergyCoat.h>
00007 #include <esg/AutoPtr.h>
00008 #include <esg/mesh/Mesh.h>
00009 
00010 
00011 namespace esg {
00012 
00013 class OGSCENE_EXPORT PolygonalEnergy : public EnergyCoat {
00014 protected:
00015     Sgi::hash_map<int, Vector3> _energy;
00016     AutoPtr<Mesh> *             _pMesh;
00017 
00018 public:
00019     enum Regions { VERTEX_BASED, FACET_BASED, UNKNOWN } _regions;
00020 
00021 public:
00022     PolygonalEnergy (AutoPtr<Mesh>* m, Regions r = UNKNOWN)
00023         : _pMesh(m), _regions(r) {
00024         if (_pMesh) _pMesh->registerReferer(this);
00025     }
00026 
00027     virtual ~PolygonalEnergy() { AutoPtr<Mesh>::destroy(_pMesh, this); }
00028 
00029     virtual Type type (void) const { return POLYGONAL; }
00030 
00031     virtual bool getRegionEnergy (int id, Vector3& val) const {
00032         Sgi::hash_map<int, Vector3>::const_iterator iter = _energy.find(id);
00033         //if (iter == _energy.end() || (*iter).first != id) return false;
00034         if (iter == _energy.end()) return false;
00035         val.set((*iter).second);
00036         return true;
00037     }
00038     
00039     virtual bool setRegionEnergy (int id, const Vector3& val) {
00040         //pair<hash_map<int, Vector3>::iterator, bool> res=_energy.insert(val);
00041         //return result.second;
00042         return (_energy[id] = val);
00043     }
00044     
00045     AutoPtr<Mesh>* getMesh (void) { return _pMesh; }
00046     Regions        getRegionsDescr (void) const { return _regions; }
00047     void           setRegionsDescr (Regions r)  { _regions = r; }
00048 };
00049 
00050 }; // namespace
00051 
00052 #endif // __POLYGONAL_ENERGY_H

Generated on Wed Jun 28 12:24:28 2006 for esg by  doxygen 1.4.6