PointToGlyph
Description¶
Represent points as glyphs. The point is represented as a sphere.
To use the snippet, click the Copy to clipboard at the upper right of the code blocks.
Declaration Section¶
#include <vtkActor.h>
#include <vtkGlyph3DMapper.h>
#include <vtkPoints.h>
#include <vtkPolyData.h>
#include <vtkSmartPointer.h>
#include <vtkSphereSource.h>
namespace
{
/**
* Convert points to glyphs.
*
* @param points - The points to glyph
* @param scale - The scale, used to determine the size of the glyph
* representing the point, expressed as a fraction of the largest side of the
* bounding box surrounding the points. e.g. 0.05
*
* @return The actor.
*/
vtkSmartPointer<vtkActor> PointToGlyph(vtkPoints* points, double const& scale);
}
Implementation Section¶
namespace {
vtkSmartPointer<vtkActor> PointToGlyph(vtkPoints* points, double const& scale)
{
auto bounds = points->GetBounds();
double maxLen = 0;
for (int i = 1; i < 3; ++i)
{
maxLen = std::max(bounds[i + 1] - bounds[i], maxLen);
}
vtkNew<vtkSphereSource> sphereSource;
sphereSource->SetRadius(scale * maxLen);
vtkNew<vtkPolyData> pd;
pd->SetPoints(points);
vtkNew<vtkGlyph3DMapper> mapper;
mapper->SetInputData(pd);
mapper->SetSourceConnection(sphereSource->GetOutputPort());
mapper->ScalarVisibilityOff();
mapper->ScalingOff();
vtkNew<vtkActor> actor;
actor->SetMapper(mapper);
return actor;
}
} // namespace
Usage¶
// Map the points to spheres
auto sphereActor = PointToGlyph(someFilter->GetOutput()->GetPoints(), 0.05);
// Set the actor color here