v2.0.0
Loading...
Searching...
No Matches
raypicker.h
Go to the documentation of this file.
1//=============================================================================================================
34
35#ifndef RAYPICKER_H
36#define RAYPICKER_H
37
38//=============================================================================================================
39// INCLUDES
40//=============================================================================================================
41
43
44#include "core/viewstate.h"
45
46#include <QPoint>
47#include <QRect>
48#include <QMatrix4x4>
49#include <QVector3D>
50#include <QMap>
51#include <QStandardItem>
52
53#include <memory>
54
55class BrainSurface;
56class DipoleObject;
57
58//=============================================================================================================
65{
66 bool hit = false;
67 float distance = 0.0f;
68 QVector3D hitPoint;
69
70 QStandardItem *item = nullptr;
71 QString surfaceKey;
72 int vertexIndex = -1;
73
74 bool isDipole = false;
75 int dipoleIndex = -1;
76
77 // Annotation info (brain surfaces only)
78 QString regionName;
79 int regionId = -1;
80
81 //=========================================================================================================
88 QString displayLabel() const;
89};
90
91//=============================================================================================================
103{
104public:
105 //=========================================================================================================
116 static bool unproject(const QPoint &screenPos,
117 const QRect &paneRect,
118 const QMatrix4x4 &pvm,
119 QVector3D &rayOrigin,
120 QVector3D &rayDir);
121
122 //=========================================================================================================
134 static PickResult pick(const QVector3D &rayOrigin,
135 const QVector3D &rayDir,
136 const SubView &subView,
137 const QMap<QString, std::shared_ptr<BrainSurface>> &surfaces,
138 const QMap<const QStandardItem*, std::shared_ptr<BrainSurface>> &itemSurfaceMap,
139 const QMap<const QStandardItem*, std::shared_ptr<DipoleObject>> &itemDipoleMap);
140
141 //=========================================================================================================
153 static QString buildLabel(const PickResult &result,
154 const QMap<const QStandardItem*, std::shared_ptr<BrainSurface>> &itemSurfaceMap,
155 const QMap<QString, std::shared_ptr<BrainSurface>> &surfaces);
156};
157
158#endif // RAYPICKER_H
disp3D_rhi library export/import macros.
#define DISP3DRHISHARED_EXPORT
ViewState declarations — per-view data structures and conversion helpers.
Viewport subdivision holding its own camera, projection, and scissor rectangle.
Definition viewstate.h:148
Result of a ray–mesh intersection test containing the hit point, triangle index, and distance.
Definition raypicker.h:65
int dipoleIndex
Index within the dipole set.
Definition raypicker.h:75
int vertexIndex
Vertex or element index at hit.
Definition raypicker.h:72
bool hit
True if something was hit.
Definition raypicker.h:66
QString surfaceKey
Surface map key of the hit surface.
Definition raypicker.h:71
QVector3D hitPoint
World-space intersection point.
Definition raypicker.h:68
QString displayLabel() const
QString regionName
Annotation region label (if available).
Definition raypicker.h:78
QStandardItem * item
Tree item that was hit (nullable).
Definition raypicker.h:70
float distance
Distance along ray to hit point.
Definition raypicker.h:67
bool isDipole
True if a dipole was hit.
Definition raypicker.h:74
int regionId
Annotation label ID.
Definition raypicker.h:79
Ray casting and intersection testing.
Definition raypicker.h:103
static bool unproject(const QPoint &screenPos, const QRect &paneRect, const QMatrix4x4 &pvm, QVector3D &rayOrigin, QVector3D &rayDir)
Definition raypicker.cpp:52
static QString buildLabel(const PickResult &result, const QMap< const QStandardItem *, std::shared_ptr< BrainSurface > > &itemSurfaceMap, const QMap< QString, std::shared_ptr< BrainSurface > > &surfaces)
static PickResult pick(const QVector3D &rayOrigin, const QVector3D &rayDir, const SubView &subView, const QMap< QString, std::shared_ptr< BrainSurface > > &surfaces, const QMap< const QStandardItem *, std::shared_ptr< BrainSurface > > &itemSurfaceMap, const QMap< const QStandardItem *, std::shared_ptr< DipoleObject > > &itemDipoleMap)
Definition raypicker.cpp:85
Renderable cortical surface mesh with per-vertex color, curvature data, and GPU buffer management.
Renderable dipole arrow set with instanced GPU rendering for QRhi.