Commit dac27c99 authored by Anatoly Baksheev's avatar Anatoly Baksheev

refactored arrow

parent 1449823b
...@@ -192,22 +192,13 @@ cv::viz::WArrow::WArrow(const Point3d& pt1, const Point3d& pt2, double thickness ...@@ -192,22 +192,13 @@ cv::viz::WArrow::WArrow(const Point3d& pt1, const Point3d& pt2, double thickness
Vec3d zvec = normalized(xvec.cross(arbitrary)); Vec3d zvec = normalized(xvec.cross(arbitrary));
Vec3d yvec = zvec.cross(xvec); 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<vtkPolyData> polydata = VtkUtils::TransformPolydata(arrow_source->GetOutputPort(), transform_with_scale);
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<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New(); vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
VtkUtils::SetInputData(mapper, transformPD->GetOutput()); VtkUtils::SetInputData(mapper, polydata);
vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New(); vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper); actor->SetMapper(mapper);
......
...@@ -277,6 +277,8 @@ TEST(Viz, DISABLED_show_image_3d) ...@@ -277,6 +277,8 @@ TEST(Viz, DISABLED_show_image_3d)
viz.showWidget("arr1", WArrow(Vec3d(-0.5, -0.5, 0.0), Vec3d(0.2, 0.2, 0.0), 0.009, Color::raspberry())); viz.showWidget("arr1", WArrow(Vec3d(-0.5, -0.5, 0.0), Vec3d(0.2, 0.2, 0.0), 0.009, Color::raspberry()));
viz.showWidget("img1", WImage3D(gray, Size2d(1.0, 1.0), Vec3d(-0.5, -0.5, 0.0), Vec3d(1.0, 1.0, 0.0), Vec3d(0.0, 1.0, 0.0))); viz.showWidget("img1", WImage3D(gray, Size2d(1.0, 1.0), Vec3d(-0.5, -0.5, 0.0), Vec3d(1.0, 1.0, 0.0), Vec3d(0.0, 1.0, 0.0)));
viz.showWidget("arr3", WArrow(Vec3d::all(-0.5), Vec3d::all(0.5), 0.009, Color::raspberry()));
int i = 0; int i = 0;
while(!viz.wasStopped()) while(!viz.wasStopped())
{ {
...@@ -286,6 +288,15 @@ TEST(Viz, DISABLED_show_image_3d) ...@@ -286,6 +288,15 @@ TEST(Viz, DISABLED_show_image_3d)
//viz.spin(); //viz.spin();
} }
TEST(Viz, show_simple_widgets)
{
Viz3d viz("show_simple_widgets");
viz.showWidget("coos", WCoordinateSystem());
viz.showWidget("cube", WCube());
viz.showWidget("arr3", WArrow(Vec3d::all(-0.5), Vec3d::all(0.5), 0.009, Color::raspberry()));
viz.spin();
}
TEST(Viz, DISABLED_spin_twice_____________________________TODO_UI_BUG) TEST(Viz, DISABLED_spin_twice_____________________________TODO_UI_BUG)
{ {
Mesh mesh = Mesh::load(get_dragon_ply_file_path()); Mesh mesh = Mesh::load(get_dragon_ply_file_path());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment