00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00039
00042 template <typename PointT> vtkSmartPointer<vtkDataSet>
00043 pcl_visualization::createPolygon (const pcl::PointCloud<PointT> &cloud)
00044 {
00045 vtkSmartPointer<vtkPoints> poly_points = vtkSmartPointer<vtkPoints>::New ();
00046 vtkSmartPointer<vtkPolygon> polygon = vtkSmartPointer<vtkPolygon>::New ();
00047
00048 poly_points->SetNumberOfPoints (cloud.points.size ());
00049 polygon->GetPointIds ()->SetNumberOfIds (cloud.points.size ());
00050
00051 size_t i;
00052 for (i = 0; i < cloud.points.size (); ++i)
00053 {
00054 poly_points->InsertPoint (i, cloud.points[i].x, cloud.points[i].y, cloud.points[i].z);
00055 polygon->GetPointIds ()->SetId (i, i);
00056 }
00057
00058 vtkSmartPointer<vtkUnstructuredGrid> poly_grid = vtkSmartPointer<vtkUnstructuredGrid>::New ();
00059 poly_grid->Allocate (1, 1);
00060 poly_grid->InsertNextCell (polygon->GetCellType (), polygon->GetPointIds ());
00061 poly_grid->SetPoints (poly_points);
00062 poly_grid->Update ();
00063
00064 return (poly_grid);
00065 }
00066
00068
00072 template <typename P1, typename P2> vtkSmartPointer<vtkDataSet>
00073 pcl_visualization::createLine (const P1 &pt1, const P2 &pt2)
00074 {
00075 vtkSmartPointer<vtkLineSource> line = vtkSmartPointer<vtkLineSource>::New ();
00076 line->SetPoint1 (pt1.x, pt1.y, pt1.z);
00077 line->SetPoint2 (pt2.x, pt2.y, pt2.z);
00078 line->Update ();
00079
00080 return (line->GetOutput ());
00081 }
00082
00084
00089 template <typename PointT> vtkSmartPointer<vtkDataSet>
00090 pcl_visualization::createSphere (const PointT ¢er, double radius, int res)
00091 {
00092
00093 vtkSmartPointer<vtkTransform> t = vtkSmartPointer<vtkTransform>::New ();
00094 t->Identity (); t->Translate (center.x, center.y, center.z);
00095
00096 vtkSmartPointer<vtkSphereSource> s_sphere = vtkSmartPointer<vtkSphereSource>::New ();
00097 s_sphere->SetRadius (radius);
00098 s_sphere->SetPhiResolution (res);
00099 s_sphere->SetThetaResolution (res);
00100 s_sphere->LatLongTessellationOff ();
00101
00102 vtkSmartPointer<vtkTransformPolyDataFilter> tf = vtkSmartPointer<vtkTransformPolyDataFilter>::New ();
00103 tf->SetTransform (t);
00104 tf->SetInputConnection (s_sphere->GetOutputPort ());
00105 tf->Update ();
00106
00107 return (tf->GetOutput ());
00108 }
00109