Как изменить размер стрелок в ВТК?

Короткий вопрос, но есть ли функция / способ простого изменения размеров стрелок в VTK C ++?

Я хочу сделать это, потому что я пытаюсь отобразить набор стрелок, все в определенных положениях, которые довольно близки друг к другу, но поскольку я не могу изменить размер стрелки, выходные данные выглядят действительно грязными.

В настоящее время я использую исходные объекты со стрелками, добавляю их к уникальным акторам, а затем итеративно добавляю их к средству визуализации.

1

Решение

Вы могли бы попытаться масштабировать vtkActor используя что-то вроде myActor.SetScale (0.5). Если все идет хорошо, это должно масштабировать ваш размер стрелки, ничего не меняя.

1

Другие решения

Для того, чтобы установить длина из vtkArrowSource, вы должны установить размерное масштабирование актера.

При добавлении 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 на переменную, чтобы параметризовать его.

0