refactored arrow

This commit is contained in:
Anatoly Baksheev
2014-01-11 23:07:30 +04:00
parent 1449823bcd
commit dac27c9913
2 changed files with 15 additions and 13 deletions

View File

@@ -192,22 +192,13 @@ cv::viz::WArrow::WArrow(const Point3d& pt1, const Point3d& pt2, double thickness
Vec3d zvec = normalized(xvec.cross(arbitrary));
Vec3d yvec = zvec.cross(xvec);
Affine3d pose = makeTransformToGlobal(xvec, yvec, zvec);
Matx33d R = makeTransformToGlobal(xvec, yvec, zvec).rotation();
Affine3d transform_with_scale(R * length, startPoint);
// Apply the transforms
vtkSmartPointer<vtkTransform> transform = vtkSmartPointer<vtkTransform>::New();
transform->Translate(startPoint.val);
transform->Concatenate(vtkmatrix(pose.matrix));
transform->Scale(length, length, length);
// Transform the polydata
vtkSmartPointer<vtkTransformPolyDataFilter> transformPD = vtkSmartPointer<vtkTransformPolyDataFilter>::New();
transformPD->SetTransform(transform);
transformPD->SetInputConnection(arrow_source->GetOutputPort());
transformPD->Update();
vtkSmartPointer<vtkPolyData> polydata = VtkUtils::TransformPolydata(arrow_source->GetOutputPort(), transform_with_scale);
vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
VtkUtils::SetInputData(mapper, transformPD->GetOutput());
VtkUtils::SetInputData(mapper, polydata);
vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);