Короткий вопрос, но есть ли функция / способ простого изменения размеров стрелок в VTK C ++?
Я хочу сделать это, потому что я пытаюсь отобразить набор стрелок, все в определенных положениях, которые довольно близки друг к другу, но поскольку я не могу изменить размер стрелки, выходные данные выглядят действительно грязными.
В настоящее время я использую исходные объекты со стрелками, добавляю их к уникальным акторам, а затем итеративно добавляю их к средству визуализации.
Вы могли бы попытаться масштабировать vtkActor используя что-то вроде myActor.SetScale (0.5). Если все идет хорошо, это должно масштабировать ваш размер стрелки, ничего не меняя.
Для того, чтобы установить длина из 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 на переменную, чтобы параметризовать его.