网站后台百度统计图如何做的,免费网址申请,网站开发是在电脑上打出来的资料么,珠海门户网站建设费用函数介绍
VTKPointPickerInteractorStyle是一个自定义的交互样式类#xff0c;它是VTK库中vtkInteractorStyleTrackballCamera类的子类。VTK#xff08;Visualization Toolkit#xff09;是一个开源的#xff0c;跨平台的库#xff0c;用于处理、渲染和视觉化科学数据。它…函数介绍
VTKPointPickerInteractorStyle是一个自定义的交互样式类它是VTK库中vtkInteractorStyleTrackballCamera类的子类。VTKVisualization Toolkit是一个开源的跨平台的库用于处理、渲染和视觉化科学数据。它包括一系列的类和方法用于3D计算机图形、图像处理和可视化。
vtkInteractorStyleTrackballCamera是VTK中的一个交互样式类它定义了用户与3D场景交互的方式例如旋转、缩放、平移等。VTKPointPickerInteractorStyle类继承了vtkInteractorStyleTrackballCamera类并重写了一些方法以自定义用户的交互行为。 class VTKPointPickerInteractorStyle : public vtkInteractorStyleTrackballCamera
{
public:static VTKPointPickerInteractorStyle* New();vtkTypeMacro(VTKPointPickerInteractorStyle, vtkInteractorStyleTrackballCamera);void setObjectIndex(int index) { m_index index; }int getObjectIndex() const { return m_index; }VTKPointPickerInteractorStyle(){LastPickedActor NULL;LastPickedProperty vtkProperty::New();}virtual ~VTKPointPickerInteractorStyle(){LastPickedProperty-Delete();}virtual void OnLeftButtonUp() override{// Forward eventsvtkInteractorStyleTrackballCamera::OnLeftButtonUp();}virtual void OnLeftButtonDown() override{int* clickPos this-GetInteractor()-GetEventPosition();this-Interactor-GetPicker()-Pick(clickPos[0], clickPos[1], 0, // always zero.this-Interactor-GetRenderWindow()-GetRenderers()-GetFirstRenderer());double picked[3];this-Interactor-GetPicker()-GetPickPosition(picked);
// std::cout Picked value: picked[0] picked[1] picked[2] std::endl;// Forward eventsvtkInteractorStyleTrackballCamera::OnLeftButtonDown();}
// virtual void OnMouseMove() override
// {// }private:vtkActor *LastPickedActor;vtkProperty *LastPickedProperty;int m_index;};被重写的方法还能保留之前的功能吗重写一个方法会完全覆盖父类中的该方法的实现。但是可以在子类的方法中显式调用父类的方法来保留父类的功能。
例如在VTKPointPickerInteractorStyle类的OnLeftButtonDown方法中在方法的最后调用了vtkInteractorStyleTrackballCamera::OnLeftButtonDown()。这样就可以在执行完VTKPointPickerInteractorStyle类的OnLeftButtonDown方法的自定义操作后再执行vtkInteractorStyleTrackballCamera类的OnLeftButtonDown方法。这样做可以保证在执行完子类的自定义操作后还能执行父类的操作。
设置回调
下面是用于设置回调同时为了在鼠标点击窗口时确认当前窗口索引将每个窗口的索引或objectName存储在类的某个成员变量中并添加一个方法来检索它。
class VTKPointPickerInteractorStyle : public vtkInteractorStyleTrackballCamera
{...
public:void setObjectIndex(int index) { m_index index; }int getObjectIndex() const { return m_index; }...
private:int m_index;
};
然后在创建VTKPointPickerInteractorStyle对象时设置索引i。 for(int i0;i8;i){vtkSmartPointerVTKPointPickerInteractorStyle style vtkSmartPointerVTKPointPickerInteractorStyle::New();style-setObjectIndex(i);render[i]-GetInteractor()-SetInteractorStyle(style);}
将交互样式设置为 nullptr也就是清除交互样式回到默认的交互方法。
render[i]-GetInteractor()-SetInteractorStyle(nullptr);