0
我點的座標平面的列表,以及一個測試點。我想找到離測試點最近的三個點的列表索引。有什麼更好的方法來找到這些指數?預先感謝旅遊回覆。發現三個最近的點
===編輯===
我在C++中找到了一個解決方案。起初,我創建了一個向量:
typedef struct
{
int iIndex;
double dSqrDistance;
} IndexedDistance;
std::vector<IndexedDistance> xDistanceVector;
,然後一個功能它的元素
bool compareIndexedDistance(IndexedDistance xD1, IndexedDistance xD2)
{
return (xD1.dSqrDistance < xD2.dSqrDistance);
}
然後在一個循環中我計算所有的距離,然後我對它們進行排序分類,並在最後我拿前三元素:
IndexedDistance xDistanceElement;
for (int i = 0; i < xPointList.size(); i++)
{
dSqrDistance = xPointList.at(i).sqrDistance(xTestPoint);
xDistanceElement.iIndex = i;
xDistanceElement.dSqrDistance = dSqrDistance;
xDistanceVector.push_back(xDistanceElement);
}
std::sort(xDistanceVector.begin(), xDistanceVector.end(), compareIndexedDistance);
xDistanceVector.resize(3);
就這樣,我找到了我所需要的。我不知道這是不是最好的方法,但它似乎工作。