2
我正在使用一個項目的VTK,似乎無法弄清楚它的一部分。我試圖遍歷幾千個點,並找到每個點最接近的5個點。看起來像一個簡單的循環操作,但我的問題是,由於某種原因,我被告知相同的5分是我的數據中每個點的最近點...我知道這是不正確的。我將附加代碼比特我描述下圖:如何在找到每個點的最近鄰點時迭代VTK中的點?
//test
vtkSmartPointer<vtkPointSource> pointSource =
vtkSmartPointer<vtkPointSource>::New();
pointSource->SetNumberOfPoints(Output->GetNumberOfPoints());
pointSource->Update();
vtkSmartPointer<vtkKdTreePointLocator> Tree =
vtkSmartPointer<vtkKdTreePointLocator>::New();
Tree->SetDataSet(pointSource->GetOutput());
Tree->BuildLocator();
unsigned int k = 5;
double testpoint[3];
vtkSmartPointer<vtkIdList> result =
vtkSmartPointer<vtkIdList>::New();
for(vtkIdType n = 0; n < Output->GetNumberOfPoints(); n++)
{
result->Reset();
Output->GetPoint(n,testpoint);
Tree->Update();
std::cout << "Point: " << testpoint[0] << ", " << testpoint[1] << ", " << testpoint[2] << ": " << endl;
Tree->FindClosestNPoints(k, testpoint, result);
for(vtkIdType i = 0; i < k; i++)
{
vtkIdType point_ind = result->GetId(i);
double p[3];
pointSource->GetOutput()->GetPoint(point_ind, p);
std::cout << "Closest point " << i+1 << ": Point "
<< point_ind << ": (" << p[0] << ", " << p[1] << ", " << p[2] << ")" << std::endl;
}
}
//end test
這是做什麼我試圖做...它打印出5個最接近點的興趣的一個點,但儘管點的利益變化,5個最近的點保持不變。我假設我只是在我的代碼中傳遞一個小細節,但我可能是錯的。如果你需要更多的信息來幫助,只需要提問即可。
謝謝您的時間和幫助, 盧克^ h