18#ifndef vtkMRMLAccuratePicker_h
19#define vtkMRMLAccuratePicker_h
22#include "vtkMRMLDisplayableManagerExport.h"
25#include <vtkCellPicker.h>
26#include <vtkSmartPointer.h>
31class vtkAbstractCellLocator;
63 void PrintSelf(ostream& os, vtkIndent indent)
override;
72 using vtkCellPicker::Pick;
76 int Pick(
double selectionX,
double selectionY,
double selectionZ, vtkRenderer* renderer)
override;
92 double IntersectWithLine(
const double p1[3],
const double p2[3],
double tol, vtkAssemblyPath* path, vtkProp3D* p, vtkAbstractMapper3D* m)
override;
97 double IntersectActorWithLine(
const double p1[3],
const double p2[3],
double t1,
double t2,
double tol, vtkProp3D* prop, vtkMapper* mapper)
override;
122 vtkAbstractCellLocator*& locator,
128 double minPCoords[3])
override;
132 vtkSmartPointer<vtkAbstractCellLocator>
Locator;
A cell picker that stays fast when large surfaces are shown.
~vtkMRMLAccuratePicker() override
std::map< vtkPolyData *, CachedLocator > LocatorsBySurface
void UpdateLocators(vtkRenderer *renderer)
bool IntersectDataSetWithLine(vtkDataSet *dataSet, const double p1[3], const double p2[3], double t1, double t2, double tol, vtkAbstractCellLocator *&locator, vtkIdType &cellId, int &subId, double &tMin, double &pDistMin, double xyz[3], double minPCoords[3]) override
double IntersectActorWithLine(const double p1[3], const double p2[3], double t1, double t2, double tol, vtkProp3D *prop, vtkMapper *mapper) override
static vtkMRMLAccuratePicker * New()
int Pick(double selectionX, double selectionY, double selectionZ, vtkRenderer *renderer) override
double IntersectWithLine(const double p1[3], const double p2[3], double tol, vtkAssemblyPath *path, vtkProp3D *p, vtkAbstractMapper3D *m) override
vtkIdType MinimumCellCountToIndex
void PrintSelf(ostream &os, vtkIndent indent) override
vtkSmartPointer< vtkAbstractCellLocator > Locator