SiGraph: sulcal graphs


domainBox.h
Go to the documentation of this file.
1
2#ifndef SI_FOLD_DOMAINBOX_H
3#define SI_FOLD_DOMAINBOX_H
4
6#include <vector>
7#include <string>
8
9
10namespace sigraph
11{
12
15 class DomainBox : public AdapDomain
16 {
17 public:
19 DomainBox( const DomainBox & dom );
20 virtual ~DomainBox();
22 virtual Domain* clone() const;
23
26
27 bool canBeFound( double x, double y, double z );
34 virtual bool canBeFound( const Vertex* v, const Graph* g = 0 );
36
39
46 virtual void learn( const Vertex* v, const Graph* g = 0 );
47 virtual void reset();
48 void setDims( double xmin, double ymin, double zmin,
49 double xmax, double ymax, double zmax );
50 double xmin() const;
51 double ymin() const;
52 double zmin() const;
53 double xmax() const;
54 double ymax() const;
55 double zmax() const;
56 const std::string & gravityCenterAttribute() const { return _gcattrib; }
57 void setGravityCenterAttribute( const std::string & att );
61 virtual void talairach( float & v1, float & v2, float & v3,
62 const Graph* g ) const;
66 virtual void cubeTalairach( std::vector<std::vector<double> >
67 & pts ) const;
69
72
73 virtual void buildTree( Tree & tr ) const;
74 static void buildDomBox( Tree* parent, Tree* tr );
76
77 protected:
78 double _xmin;
79 double _ymin;
80 double _zmin;
81 double _xmax;
82 double _ymax;
83 double _zmax;
84 std::string _gcattrib;
85
86 private:
87
88 };
89
90 // Fonctions inline
91
92 inline Domain* DomainBox::clone() const
93 {
94 return( new DomainBox( *this ) );
95 }
96
97
99 {
100 }
101
102
103 inline void DomainBox::setDims( double xmin, double ymin,
104 double zmin, double xmax, double ymax,
105 double zmax )
106 {
107 _xmin = ( xmin < xmax ) ? xmin : xmax;
108 _xmax = ( xmin < xmax ) ? xmax : xmin;
109 _ymin = ( ymin < ymax ) ? ymin : ymax;
110 _ymax = ( ymin < ymax ) ? ymax : ymin;
111 _zmin = ( zmin < zmax ) ? zmin : zmax;
112 _zmax = ( zmin < zmax ) ? zmax : zmin;
113 }
114
115
116 inline double DomainBox::xmin() const
117 {
118 return( _xmin );
119 }
120
121
122 inline double DomainBox::xmax() const
123 {
124 return( _xmax );
125 }
126
127
128 inline double DomainBox::ymin() const
129 {
130 return( _ymin );
131 }
132
133
134 inline double DomainBox::ymax() const
135 {
136 return( _ymax );
137 }
138
139
140 inline double DomainBox::zmin() const
141 {
142 return( _zmin );
143 }
144
145
146 inline double DomainBox::zmax() const
147 {
148 return( _zmax );
149 }
150
151
152 inline bool DomainBox::canBeFound( double x, double y, double z )
153 {
154 if( nData() )
155 return( (x >= _xmin) && (x <= _xmax) && (y >= _ymin) && (y <= _ymax)
156 && (z >= _zmin) && (z <= _zmax) );
157 else return( true ); // si pas appris, la reponse est oui par défaut
158 }
159
160}
161
162#endif
163
unsigned nData() const
Definition adapDomain.h:84
double xmin() const
Definition domainBox.h:116
virtual void reset()
Réinitialise l'apprentissage (remet les stats à zéro)
virtual bool canBeFound(const Vertex *v, const Graph *g=0)
Renvoie si le noeud de graphe peut appartenir au modèle concerné (donc avoir le label considéré)
void setDims(double xmin, double ymin, double zmin, double xmax, double ymax, double zmax)
Definition domainBox.h:103
virtual void buildTree(Tree &tr) const
Conversion en arbre (pour IO)
virtual ~DomainBox()
Definition domainBox.h:98
double zmax() const
Definition domainBox.h:146
bool canBeFound(double x, double y, double z)
Renvoie si le point peut se trouver aux coordonnées (x, y, z)
Definition domainBox.h:152
virtual void learn(const Vertex *v, const Graph *g=0)
Apprends le domaine d'un morceau de sillon donné.
double xmax() const
Definition domainBox.h:122
virtual void talairach(float &v1, float &v2, float &v3, const Graph *g) const
Transforme le vecteur {\tt (v1, v2, v3)} dans les coordonnées de Talairach (transformation dans le grap...
double ymin() const
Definition domainBox.h:128
static void buildDomBox(Tree *parent, Tree *tr)
double ymax() const
Definition domainBox.h:134
double zmin() const
Definition domainBox.h:140
const std::string & gravityCenterAttribute() const
Definition domainBox.h:56
std::string _gcattrib
Definition domainBox.h:84
void setGravityCenterAttribute(const std::string &att)
DomainBox(const DomainBox &dom)
virtual Domain * clone() const
Duplication.
Definition domainBox.h:92
virtual void cubeTalairach(std::vector< std::vector< double > > &pts) const
Donne les coordonnées des coins dans Talairach (pas forcément les minmax internes, cf InertialDomainBox),...
Domaine de validité.
Definition domain.h:18