如何更改VTK中箭头的大小?

时间:2016-04-18 21:27:54

标签: c++ data-visualization vtk

简短的问题但是有一种功能/方法可以轻松改变VTK C ++中的箭头大小吗?

我想这样做是因为我试图在特定位置显示一组箭头,这些箭头彼此非常接近,但因为我无法改变箭头大小,所以输出看起来非常混乱。

目前我正在使用箭头源对象,将它们添加到唯一的actor,然后迭代地将它们添加到渲染器。

2 个答案:

答案 0 :(得分:1)

您可以尝试使用myActor.SetScale(0.5)之类的内容scale the vtkActor。如果一切顺利,这应该缩放你的箭头大小而不改变其他任何东西。

答案 1 :(得分:0)

为了设置vtkArrowSource的 length ,你应该设置actor的x-scale维度。

添加vtkArrowSource时:

vtkSmartPointer<vtkArrowSource> arrowSource = vtkSmartPointer<vtkArrowSource>::New();
arrowSource->SetShaftRadius(0.05);
arrowSource->SetTipRadius(0.1);
arrowSource->SetTipLength(0.3);

vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputConnection(arrowSource->GetOutputPort());
vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);

神奇:

double scale[3] = { 10, 1, 1 }; // Set x-scale to 10, y and z unchanged (1)
actor->SetScale(scale);

注意:这也会延伸箭头! 我通过设置

来解决这个问题
arrowSource->SetTipLength(0.3 / 10); // Scales arrow tip down by factor 10

用变量替换10次出现的10次以对其进行参数化。