У меня есть два списка объектов; Я хотел бы выполнить операцию над данным объектом списка 2, только если он находится в границах текущего объекта списка 1.Избегайте вложенных циклов на расстоянии
Что-то вроде этого:
for k=1:size(object_list1)
for l=1:size(object_list2)
if euclideanDstSqt(object_list1(k).centroid,object_list2(l).centroid) < toleranceRadius then
// do something ...
end
end
end
, что случилось с этим, то, что я буду проверять расстояние каждый раз, даже для объектов, которые очень далеки друг от друга. Есть ли алгоритмический более разумный способ сделать это? Может быть, какое-то дерево?
Этот алгоритм затем может быть переведен на C++, поэтому я должен забыть обо всех матрично-ориентированных трюках Matlab.
k-d tree - очень интересный алгоритм, спасибо стакану. Я также буду использовать квадратичное евклидово расстояние (вместо того, чтобы принимать квадратный корень). – CTZStef
Это должно работать нормально. – beaker