What is the usage of the first Parameter of vtkPoints::SetPoint method?

(Chou) #1

Hi Everyone,

I am coming from a VisIt visualization world, with some experience on VisIt libsim. I am trying to create a curvilinear grid using ParaView catalyst. To do so, I have checked ParaView Catalyst user guide V2.0. In page 28 of this guide, there is a simple code for building curvilinear grids:

vtkStructuredGrid* grid = vtkStructuredGrid::New();
grid->SetExtent(0, 10, 0, 20, 0, 0);
vtkPoints* points = vtkPoints::New();
for(int j=0;j<21;j++)
    for(int i=0;i<11;i++)
        points->SetPoint(i+j*11, i, j, 0);

Although the whole sample is clear, but I cannot understand the usage of the first parameter of SetPoint method. There is no explanation about it neither in the user guide nor in online documentations of vtkPoints class:

void vtkPoints::SetPoint	(	vtkIdType 	id,
        double 	x,
        double 	y,
        double 	z 
Definition at line 288 of file vtkPoints.h.

Can anybody make me clear about it?


(Mark) #2

Sure easily explained.

You can either create a points and then insert them:

vtkPoints* points = vtkPoints::New();
for (int i=0; i < 10000; ++i)
    points->InsertPoint(x, y, z);

but this means that there will be some internal reallocation occurring when the points get inserted (append to the end).

Or else you pre-dimension the array before:


and then set the points in the particular array location:

for (int i=0; i < 10000; ++i)
    points->SetPoint(i, x, y, z);

(Chou) #3

Thanks Mark,

So, this parameter seems to be an index, instead of an Id, right?

(Mark) #4

Index or Id are the same thing. Later you will refer to these points in your element or cell topology. Eg, your quad element has points (0 5 8 10), which are 0-indexed into the points array.