我有一些未知数量的3D空间对象,我想知道检测两个或多个对象之间距离是否小于阈值的最快方法是什么。
我认为这是一个n!问题,但我希望有更好的解决方法。
我尝试了以下伪代码,并需要您的意见。
我尝试了以下伪代码,并需要您的意见。
for (int y=0; y<blobList.size();y++){
for (int x =1; x<blobList.size();x++)
{
CvPoint *blob_a = new CvPoint();
CvPoint *blob_b = new CvPoint();
blob_a->x = blobList[x].second->maxx;
blob_a->y = blobList[x].second->maxy;
blob_b->x = blobList[y].second->maxx;
blob_b->y = blobList[y].second->maxy;
double dist = distance(blob_a,blob_b);
cout<< " distance between blob "<<blobList[y].second->label<<"and "<<blobList[x].second->label<<endl;
cout<<dist<<endl;
if( dist<ParamMgr.fDistance)
{
cout<< " Collision between "<<blobList[y].second->label<<"and "<<blobList[x].second->label<<endl;
}
else {
cout<< " "<<endl;
}
}