vtkPolyData中GetPoint函式沖掉上一個資料的問題
阿新 • • 發佈:2019-01-01
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);
好了,就是這個白痴的錯誤,雖然很白,但是經常被忽略。