MNE-CPP 0.1.9
A Framework for Electrophysiology
Loading...
Searching...
No Matches
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
68namespace MNELIB {
69 class MNEmatVertices;
70}
71
72//=============================================================================================================
73// DEFINE NAMESPACE DISP3DLIB
74//=============================================================================================================
75
76namespace DISP3DLIB {
77
78#define FLOAT_INFINITY std::numeric_limits<float>::infinity()
79
80//=============================================================================================================
81// DISP3DLIB FORWARD DECLARATIONS
82//=============================================================================================================
83
84//=============================================================================================================
96{
97
98public:
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
151protected:
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
201inline double GeometryInfo::squared(double dBase)
202{
203 return dBase * dBase;
204}
205} // namespace GEOMETRYINFO
206
207#endif // DISP3DLIB_GEOMETRYINFO_H
FiffEvoked class declaration.
#define DISP3DSHARED_EXPORT
This class holds static methods for sensor-to-mesh mapping and surface constrained distance calculati...
QSharedPointer< GeometryInfo > SPtr
QSharedPointer< const GeometryInfo > ConstSPtr
static double squared(double dBase)
squared Implemented for better readability only
FIFF measurement file information.
Definition fiff_info.h:85