Jafar
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Feature.hpp
00001 /* $Id$ */
00002 
00003 #ifndef _SPAF_FEATURE_HPP_
00004 #define _SPAF_FEATURE_HPP_
00005 
00006 #include "jafarConfig.h"
00007 #include <values.h>
00008 
00009 #include <iostream>
00010 #include <geom/Declarations.hpp>
00011 #include <geom/Atom.hpp>
00012 
00013 namespace jafar {
00014 
00015   namespace spaf {
00016     class ComparisonResult;
00017     class Location;
00018     class LocationsBag;
00019     class DisplayContext;
00020     class MapsTransformation;
00025     class Feature {
00026       public:
00027         struct Range {
00028           Range() : a(FLT_MIN), aCov(0), b(FLT_MAX), bCov(0)
00029           {
00030           }
00031           Range(double _a, double _aCov, double _b, double _bCov) : a(_a), aCov(_aCov), b(_b), bCov(_bCov)
00032           {
00033           }
00034           double a, aCov, b, bCov;
00035         };
00036       public:
00037         Feature();
00038         Feature(const Feature&);
00039         virtual ~Feature();
00043         virtual int id() const = 0;
00044         const LocationsBag& locations() const;
00045         virtual std::list<int> maps() const = 0;
00046         virtual const std::map<int, geom::Atom3D*>& atoms() const = 0;
00047         virtual geom::Atom3D* atom(int _map) =0;
00048         virtual const geom::Atom3D* atom(int _map) const =0;
00049         virtual void setAtom(const geom::Atom3D* _atom, int _map) = 0;
00050         virtual void fillDisplayContext( DisplayContext*, MapsTransformation* mapsTransfo ) const = 0;
00051         virtual void computeCharacteristicVector( const Feature* feature, geom::Atom3D::HomogenousVecD& vec, geom::Atom3D::HomogenousSymMatrixD& vecCov ) const = 0;
00055         virtual Feature::Range computeOccupancyRange( const Feature* _feature ) const = 0;
00059         virtual void computeCosAngle( const Feature* feature, double& angle, double& angleCov ) const = 0;
00063         virtual void computeDistance( const Feature* feature, double& distance, double& distanceCov ) const = 0;
00067         virtual void mergeWith( Feature* feature) = 0;
00068         virtual geom::BoundingBox3D globalBoundingBox(MapsTransformation* mapsTransfo) const = 0;
00069       private:
00070         struct Private;
00071         Private* const d;
00072     };
00073     std::ostream& operator<<(std::ostream& s, const Feature&);
00074   }
00075 }
00076 
00077 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on Wed Oct 15 2014 00:37:28 for Jafar by doxygen 1.7.6.1
LAAS-CNRS