vtkPolyData中GetPoint函数冲掉上一个数据的问题

vtkPolyData中GetPoint函数冲掉上一个数据的问题

vtkPolyData中GetPoint函数 是继承vtkPointSet类的函数,可以获取顶点值。
函数定义如下:

double *GetPoint(vtkIdType ptId) ;
void GetPoint(vtkIdType ptId, double x[3]);

代码调用实例:

  double* pt = polyData->GetPoint(1);
  double* pt2 = polyData->GetPoint(0);
  double* pt3 = polyData2->GetPoint(0);
  double ptt[3];
  ptt[0] = pt[0] + 0.5;
  ptt[1] = pt[1];
  ptt[2] = pt[2];

这段代码有一个常见错误:
- pt和pt2的地址是相同的。所以取出来的值是一样的。
- 每一个polyData有一个用于存储的地址 double指针。
- 不同的polyData有不同的double指针,pt2和pt3指向不同的地址。
可以调用另一个函数,避免这种错误,代码如下:

  double ptt1[3],ptt2[3],ptt3[3];
  polyData->GetPoint(ptt1);
  polyData->GetPoint(ptt2);
  polyData2->GetPoint(ptt3);

好了,就是这个白痴的错误,虽然很白,但是经常被忽略。

你可能感兴趣的:(VTK)