Кусок схожего по смыслу кода. Это из моего скрипта по распознаванию текста. Смысл в том, что если мы ищем некторый символ, скажем, букву "Е", то при определенной погрешности мы можем вместо одной реально существующей буквы найти несколько "двоящихся". В данном скрипте отсекаются изображения с очень близкими координатами. options.dupImage - расстояние при котором считается дубликатом.
Код
-- Удаляем дубли.
local crdsClear={} -- Массив без дублей.
for i=1, #crdsRaw, 1 do
local catch = 0 -- Флаг найденного дубля.
for n=i+1, #crdsRaw, 1 do
if crdsRaw[i].symbolName == crdsRaw[n].symbolName and
math.abs(crdsRaw[i].x - crdsRaw[n].x) <= options.dupImage and
math.abs(crdsRaw[i].y - crdsRaw[n].y) <= options.dupImage then
catch = 1
break
end
end
--log(catch)
if catch == 0 then -- не дубль, копируем значение в чистый массив.
table.insert(crdsClear,crdsRaw[i])
end
end
Накидать по-быстрому рабочий код тут едва ли получится - нужно учесть, что изначально скорости равны нулю, что ближайший колпачек после обновления совсем не обязательно будет тем же самым (прогнозирование скорости и вектора), траектории не линейные и т.д. По большому счету тут нужно понять, как вы, как человек, определяете какой из них где и куда движется - перевести в код это уже самое придет. Начинайте писать - подскажем, поможем. Тут еще никого в этом плане обижали =)