VTK 测量类Widget的应用 与 vtkDistanceWidget 3D测试 问题

  • vtkDistanceWidget:用于在二维平面上测量两点之间的距离。
  • vtkAngleWidget:用于在平面的角度测量。

AngleWidget

感觉这都是 2D控件

VTK 测量类Widget的应用 与 vtkDistanceWidget 3D测试 问题_第1张图片

 

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

int main(int, char*[])
{
  vtkNew colors;

  // A renderer and render window
  vtkNew renderer;
  vtkNew renderWindow;
  renderWindow->AddRenderer(renderer);
  renderWindow->SetWindowName("AngleWidget");

  // An interactor
  vtkNew renderWindowInteractor;
  renderWindowInteractor->SetRenderWindow(renderWindow);

  vtkNew angleWidget;
  angleWidget->SetInteractor(renderWindowInteractor);
  angleWidget->CreateDefaultRepresentation();

  // Render
  renderer->SetBackground(colors->GetColor3d("MidnightBlue").GetData());
  renderWindow->Render();
  renderWindowInteractor->Initialize();
  renderWindow->Render();
  angleWidget->On();
  renderWindowInteractor->Start();

  return EXIT_SUCCESS;
}

 vtkDistanceWidget

vtkDistanceWidget 3D测试 不能真正的落在 3D模型上,这个问题挺意外;感觉可以修改源码,但时间有限,暂时没有空看;

VTK 测量类Widget的应用 与 vtkDistanceWidget 3D测试 问题_第2张图片

这个是vtkDistanceWidget

vDistanceWidget

明显可以看到它的点不能落到 模型上;理论上这个修改源码可以实现;

Code:

vtkDistanceWidget* distanceWidget = vtkDistanceWidget::New();
distanceWidget->SetInteractor(m_renderWindows[i]->GetInteractor());
vtkDistanceRepresentation3D* representation = vtkDistanceRepresentation3D::New();
distanceWidget->SetRepresentation(representation);
distanceWidget->SetPriority(0.9);
static_cast (distanceWidget->GetRepresentation())->SetLabelFormat("%-#6.3g px");
distanceWidget->ManagesCursorOn();
distanceWidget->On();

使用 vtkLineWidget 实现

vtkDistanceWidget vtkLineWidge

这个自己判断 了一下,点击的点能不能落到模型上,如果没有落到不处理;

你可能感兴趣的:(VTK,VTK,vDistanceWidget)