[vtkusers] deriving from vtkPolygonalSurfacePointPlacer

Miro Drahos mdrahos at robodoc.com
Mon Jun 30 21:43:12 EDT 2014

Hi all,
I am trying to customize the behavior of vtkContourWidget to constrain 
drawing contours on a surface, and I need to modify the point placer to 
reimplement the validation. In particular, the default contouring (in 
5.10) doesn't support surfaces with multiple components (with 
vtkPolygonalSurfaceContourLineInterpolator and 
I thought I would separate the surface into connected regions and then 
validate against the region id to make sure I don't lock up the 
interpolator in trying to find the path between the components (which 
obviously doesn't exist).
I thought I would just write my point placer and reimplement the 
validating methods:

class myPointPlacer : public vtkPolygonalSurfacePointPlacer
public :
     virtual int ValidateWorldPosition(double wPt[3]);
     virtual int ValidateDisplayPosition(vtkRenerer *, double dispPt[2]);
int myPointPlacer::ValidateWorldPosition(double wPt[3])
      vtkIdType curRegionId;
      // extract the curRegionId here
      // ...
      if (this->Internals->Nodes.empty())  // compiler will complain 
here: "Invalid use of incomplete type"
          this->regionId = curRegionId;
          if (curRegionId != this->regionId)  // point on a different 
region, reject
             return 0;

   return 1;

Alas, this won't compile because the 
vtkPolygonalSurfacePointPlacerInternals is defined in 
vtkPolygonalSurfacePointPlacer.cxx, and there is no header file I could 
#include that would tell the compiler what this->Internals is...

How can I get around this and use the internals?
Thank you for all ideas/suggestions!
Using VTK 5.10.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20140630/2564aad9/attachment.html>

More information about the vtkusers mailing list