デカルト平面のポイントのリストとテスト ポイントがあります。テスト ポイントに最も近い 3 つのポイントのリスト インデックスを検索します。これらのインデックスを見つけるより良い方法は何ですか? ツアーの返信ありがとうございます。
=== 編集 ===
C++で解決策を見つけました。まず、ベクトルを作成します。
typedef struct
{
int iIndex;
double dSqrDistance;
} IndexedDistance;
std::vector<IndexedDistance> xDistanceVector;
そして、その要素をソートする関数
bool compareIndexedDistance(IndexedDistance xD1, IndexedDistance xD2)
{
return (xD1.dSqrDistance < xD2.dSqrDistance);
}
次に、ループですべての距離を計算し、並べ替えて、最後に最初の 3 つの要素を取得します。
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);
このようにして、私は必要なものを見つけました。それが最善の方法かどうかはわかりませんが、うまくいくようです。