[vtkusers] problem with Point Iterator : vtkGenericPointIterator vtkGenericDataSet
Alberto Magrofuoco
abemagro at yahoo.it
Fri Aug 19 10:40:10 EDT 2005
Hi François,
If I run :
vtkIdType c=out->GetNumberOfPoints(); //'out' is my
image, either vtkdataimage or vtkstructuredpoints
which is a subclass of vtkdataimage
vtkDataFloat
*normals=static_cast<vtkFloatArray*>(out->GetPointData()->GetNormals());
i get the error: undefined symbol 'vtkDataFloat'
If I run:
vtkNormals
*normals=static_cast<vtkFloatArray*>(out->GetPointData()->GetNormals());
or
vtkFloatArray
*normals=static_cast<vtkFloatArray*>(out->GetPointData()->GetNormals());
I get the error: 'GetNormals' is not a member of
VtkPointData.... what is wrong? Am i missing somefile?
it should work..
thanks,
Alberto
-------------------------------------------------------
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
___________________________________
Yahoo! Mail: gratis 1GB per i messaggi e allegati da 10MB
http://mail.yahoo.it
More information about the vtkusers
mailing list