[vtkusers] problem with Point Iterator : vtkGenericPointIterator vtkGenericDataSet

Francois Bertel francois.bertel at kitware.com
Thu Aug 18 13:05:41 EDT 2005


Hi Alberto,

vtkGeneric* is made for higher-order elements. There is no concrete
class of the abstract class vtkGenericDataSet, except for testing
purpose in GenericFiltering/Testing/Cxx. So, it will not help you.

For what you are looking for, you may use a vtkImageReader to load the
file. The output of this reader is a vtkImageData.

Then, to iterate over the points, you may write:

vtkImageData *image;

vtkIdType c=image->GetNumberOfPoints();
double x[3];
double n[3];

vtkDataFloat *normals=static_cast<vttFloatArray
*>(image->GetPointData()->GetNormals());

vtkIdType i=0;
while(i<c)
{
 image->GetPoint(i,x); // get the point coordinates
 normals->GetTuple(i,n); // get the normal at this point
++i;
}

Alberto Magrofuoco wrote:
> I am running vtk on windows (c++).
> 
> I am working on human head modelling, I extract the
> skull surface from medical data and I obtain a file
> containing :
> - points list with correspoinding value (1 if the
> surface passes through that voxel 0 otherwise)
> - normals per each point.
> 
> something like:
> 
> 
> --------------------------------------------------
> vtk output
> ASCII
> DATASET STRUCTURED_POINTS
> DIMENSIONS 8 8 8
> SPACING 1 1 1
> ORIGIN 0 0 0
> CELL_DATA 343
> POINT_DATA 512
> SCALARS scalars float
> LOOKUP_TABLE default
> 0 0 0 0 0 0 0 0 0 
> 0 0 0 0 0 0 0 0 0 
> 1 1 1 1 0 0 0 0 1 
> 1 1 1 0 0 0 0 1 1 
> 
> (... and so on)
> 
> NORMALS normals float
> 0 0 0 0 0 0 0 0 0 
> 0 0 0 0 0 0 0 0 0 
> 0 0 0 0 0 0 0 0 0 
> 0 0 0 0 0 0 0 0 0 
> 0 0 0 0 0 0 0 0 0 
> 0 0 0 0 0 0 0 0 0 
> -0.0524864 -0.0524864 -0.997241 0 -0.0525588 -0.998618
> 0 -0.0525588 -0.998618 
> 0.0524864 -0.0524864 -0.997241 0 0 0 0 0 0 
> 0 0 0 0 0 0 -0.0525588 0 -0.998618 
> 
> (..... and so on)
> 
> ----------------------------------------------------
> 
> I need to be able to iterate in this file, to use a
> index to individuate a point and the corresponding
> normals. 
> 
> 1)Which function should I use?
> 
> I found out vtkGenericPointIterator should work, but
> it was not installed,
> so I copied vtkGenericPointIterator.h,
> vtkGenericDataSet.h, vtkGenericPointIterator.cxx,
> vtkGenericDataSet.cxx into /VTK/Filtering
> 2)Is that enough or should I install something else?
> 
> Anyway I do not know how to use it, I could find only
> one example.
> I am running something like:
> 
> vtkGenericDataSet *dataset;
> vtkGenericPointIterator *it =
> dataset->NewPointIterator();
> 
> 2)How can I choose the input for dataset? (I should be
> able to load structuredpoints data)
> 
> 3)Can I find some examples in which
> vtkGenericPointIterator performs something similar to
> what I am looking for? 
> 
> Thanks,
> Alberto 

-- 
François Bertel, PhD  | Kitware Inc. Suite 204
1 (518) 371 3971 x113 | 28 Corporate Drive
                      | Clifton Park NY 12065, USA



More information about the vtkusers mailing list