[vtkusers] Polydata contour without vtkreader !!! ????

qzgrmc qin_in_usa at hotmail.com
Wed Nov 26 09:54:26 EST 2003


Hi, all,

Sorry for sending  again. I am really so eager to start with VTK.

I am a new user of VTK. I want to contour with some points and I have tried
some ways. But no way out. who can help me?
The first part is all the same : I create a polydata without cells
////////////////////////////////////////////////////////////////////////////
////////////////
 vtkPoints* _points = vtkPoints::New();
 vtkFloatArray* _pcoords =vtkFloatArray::New();
 vtkFloatArray* _iso_data =vtkFloatArray::New();
 vtkPolyData* _polydata = vtkPolyData::New();
 vtkCellArray*  _cells =  vtkCellArray::New();

 float grids[9800][3];       //  9800=70*140
 _pcoords->SetNumberOfComponents(3); // for x,y,z
 _pcoords->SetNumberOfTuples(70*140);  // for data (num)

/*
 Here I retrieve data from a file and store in a array temdata[70*140]
 process omitted here....

*/
 int indexs=0;
 float ii,jj;
 for (ii =0;ii<70 ;ii ++)
 {
      for (jj = 0 ;jj< 140;jj =jj ++)
      {
          indexs =ii * 140 + jj);
          _iso_data->InsertNextValue(temdata[indexs]);

           grids[indexs][0] = jj; grids[indexs][1] = ii; grids[indexs][2] =
100;
           _pcoords->SetTuple(indexs, grids[indexs]);

      }
 }
 _points->SetData(_pcoords);
 _polydata->SetPoints(_points);
 _polydata->GetPointData()->SetScalars(_iso_data);

////////////////////////////////////////////////////////////////////////////
////////////////

//<1>  Method 1: Manually create Cell.  Actually It is a grid so I create
Pixel as a cell
// for the grid 70 * 140 the cell of pixels should be 69 * 139
  for (ii =0;ii<70-1 ;ii ++)
 {
      for (jj = 0 ;jj< 140 -1 ;jj =jj ++)
      {

           _cells->InsertNextCell(4);
           _cells->InsertCellPoint( (ii+1)*140 + j );
           _cells->InsertCellPoint((ii+1)*140 + j+1 );
           _cells->InsertCellPoint(  ii*140 + j );
           _cells->InsertCellPoint(  ii*140 + j +1 );
          // Here establish a cell of pixel
      }
 }
_polydata->SetPolys(_cells);
//<1> ...............And then I use  vtkContourFilter to process the
_polydata  and then render it.



//<2> Method 2: Use vtkDelaunay2D as a filter to transfer the vtkPoints to
vtkPolydata

    vtkDelaunay2D *  _d_2d =vtkDelaunay2D::New();
    _d_2d->SetInput(_polydata);
    _d_2d->SetTolerance(1);
 _polydata =_d_2d->GetOutput();

// <2>...............And then I use  vtkContourFilter to process the
_polydata  and then render it.



//<3> I also use vtkSurfaceReconstructionFilter to do so.



But I failed to get any contour data!!!!!
I know that if I create a polydata without cell I will surely fail. But I
tried different way to create cell and fail too. why??

Is there anything important I am missing?


Thanks!!!!

qzgrmc



More information about the vtkusers mailing list