00001
00002
00003 #ifndef _SPAF_SEGMENT3D_FEATURE_HPP_
00004 #define _SPAF_SEGMENT3D_FEATURE_HPP_
00005
00006 #include "spaf/Feature.hpp"
00007
00008 namespace jafar {
00009 namespace spaf {
00010 class Descriptor;
00015 class Segment3DFeature : public Feature {
00016 public:
00017 Segment3DFeature(const geom::Segment<3>&, int _map, Descriptor*);
00018 virtual std::list<int> maps() const;
00019 virtual int id() const;
00020 virtual const std::map<int, geom::Atom3D*>& atoms() const;
00021 virtual geom::Atom3D* atom(int _map);
00022 virtual const geom::Atom3D* atom(int _map) const;
00023 virtual void setAtom(const geom::Atom3D* _atom, int _map);
00024 virtual void fillDisplayContext( DisplayContext*, MapsTransformation* mapsTransfo ) const;
00025 virtual void computeCharacteristicVector( const Feature* feature, geom::Atom3D::HomogenousVecD& vec, geom::Atom3D::HomogenousSymMatrixD& vecCov ) const;
00026 virtual Feature::Range computeOccupancyRange( const Feature* _feature ) const;
00027 virtual void computeCosAngle( const Feature* feature, double& angle, double& angleCov ) const;
00028 virtual void computeDistance( const Feature* feature, double& distance, double& distanceCov ) const;
00029 virtual void mergeWith( Feature* feature);
00030 virtual geom::BoundingBox3D globalBoundingBox(MapsTransformation* mapsTransfo) const;
00031 protected:
00032 const Descriptor* descriptor() const;
00033 private:
00034 struct Private;
00035 Private * const d;
00036 };
00037 }
00038 }
00039
00040 #endif