MNE-CPP  0.1.9
A Framework for Electrophysiology
geometryinfo.h
Go to the documentation of this file.
1 //=============================================================================================================
35 #ifndef DISP3DLIB_GEOMETRYINFO_H
36 #define DISP3DLIB_GEOMETRYINFO_H
37 
38 //=============================================================================================================
39 // INCLUDES
40 //=============================================================================================================
41 
42 #include "../../disp3D_global.h"
43 #include <fiff/fiff_evoked.h>
44 
45 //=============================================================================================================
46 // INCLUDES
47 //=============================================================================================================
48 
49 #include <limits>
50 
51 //=============================================================================================================
52 // QT INCLUDES
53 //=============================================================================================================
54 
55 #include <QSharedPointer>
56 #include <QVector>
57 
58 //=============================================================================================================
59 // EIGEN INCLUDES
60 //=============================================================================================================
61 
62 #include <Eigen/Core>
63 
64 //=============================================================================================================
65 // FORWARD DECLARATIONS
66 //=============================================================================================================
67 
68 namespace MNELIB {
69  class MNEmatVertices;
70 }
71 
72 //=============================================================================================================
73 // DEFINE NAMESPACE DISP3DLIB
74 //=============================================================================================================
75 
76 namespace DISP3DLIB {
77 
78 #define FLOAT_INFINITY std::numeric_limits<float>::infinity()
79 
80 //=============================================================================================================
81 // DISP3DLIB FORWARD DECLARATIONS
82 //=============================================================================================================
83 
84 //=============================================================================================================
96 {
97 
98 public:
99  typedef QSharedPointer<GeometryInfo> SPtr;
100  typedef QSharedPointer<const GeometryInfo> ConstSPtr;
102  //=========================================================================================================
106  GeometryInfo() = delete;
107 
108  //=========================================================================================================
119  static QSharedPointer<Eigen::MatrixXd> scdc(const Eigen::MatrixX3f &matVertices,
120  const QVector<QVector<int> > &vecNeighborVertices,
121  QVector<int> &pVecVertSubset,
122  double dCancelDist = FLOAT_INFINITY);
123 
124  //=========================================================================================================
134  static QVector<int> projectSensors(const Eigen::MatrixX3f &matVertices,
135  const QVector<Eigen::Vector3f> &vecSensorPositions);
136 
137  //=========================================================================================================
147  static QVector<int> filterBadChannels(QSharedPointer<Eigen::MatrixXd> matDistanceTable,
148  const FIFFLIB::FiffInfo& fiffInfo,
149  qint32 iSensorType);
150 
151 protected:
152  //=========================================================================================================
160  static inline double squared(double dBase);
161 
162  //=========================================================================================================
172  static QVector<int> nearestNeighbor(const Eigen::MatrixX3f &matVertices,
173  QVector<Eigen::Vector3f>::const_iterator itSensorBegin,
174  QVector<Eigen::Vector3f>::const_iterator itSensorEnd);
175 
176  //=========================================================================================================
188  static void iterativeDijkstra(QSharedPointer<Eigen::MatrixXd> matOutputDistMatrix,
189  const Eigen::MatrixX3f &matVertices,
190  const QVector<QVector<int> > &vecNeighborVertices,
191  const QVector<int> &vecVertSubset,
192  qint32 iBegin,
193  qint32 iEnd,
194  double dCancelDistance);
195 };
196 
197 //=============================================================================================================
198 // INLINE DEFINITIONS
199 //=============================================================================================================
200 
201 inline double GeometryInfo::squared(double dBase)
202 {
203  return dBase * dBase;
204 }
205 } // namespace GEOMETRYINFO
206 
207 #endif // DISP3DLIB_GEOMETRYINFO_H
FIFFLIB::FiffInfo
FIFF measurement file information.
Definition: fiff_info.h:84
fiff_evoked.h
FiffEvoked class declaration.
DISP3DLIB::GeometryInfo::squared
static double squared(double dBase)
squared Implemented for better readability only
Definition: geometryinfo.h:201
DISP3DLIB::GeometryInfo::ConstSPtr
QSharedPointer< const GeometryInfo > ConstSPtr
Definition: geometryinfo.h:100
DISP3DLIB::GeometryInfo
This class holds static methods for sensor-to-mesh mapping and surface constrained distance calculati...
Definition: geometryinfo.h:95
DISP3DLIB::GeometryInfo::SPtr
QSharedPointer< GeometryInfo > SPtr
Definition: geometryinfo.h:99
DISP3DSHARED_EXPORT
#define DISP3DSHARED_EXPORT
Definition: disp3D_global.h:55