1. 程式人生 > >vtkPolyData中GetPoint函式沖掉上一個資料的問題

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);

好了,就是這個白痴的錯誤,雖然很白,但是經常被忽略。