Я использую обработку, и до сих пор у меня есть эскиз, который рисует случайные шары и рисует линию при соединении в пределах определенного радиуса.Группировка/связывание в кластере
for(int i=0;i<=people.size()-1;i++){
Person p = people.get(i);
for(Person pp: people){
if(pp!=p){
if(p.isIntersecting(pp)){
// Draw the line connecting the two here
line(p.loc.x,p.loc.y,pp.loc.x,pp.loc.y);
// Store the other person in this persons "connections" list
if(!p.connections.contains(pp)){ p.connections.add(pp);}
} else {
p.connections.remove(pp);
}
}
}
}
Это прекрасно работает, чтобы визуально показать, какие группы группируются вместе. Но как я могу сохранить эту группу связанных объектов в ArrayList, пока они связаны? Поэтому я могу вспомнить их для других функций.
Как я имею в виду, я могу легко визуально видеть, когда на экране связаны 4 человека. Но как я могу сказать компьютеру, что все они связаны?
Ссылки хранятся в каждом списке соединений объектов. Но как каждый отдельный объект знает о соединениях других объектов, чтобы сгруппировать их.
Так что я могу нарисовать вокруг себя «групповой blob», в то время как они связаны.
Я пробовал кучу вещей, но я всегда сталкиваюсь с ошибками рекурсии/stackoverflow. Потому что, очевидно, я просто рекурсивно просматриваю все соединения, чтобы связать их, и это слишком много.
Любая идея, как я могу хранить связанные строки в виде групп в ArrayList?
Thats уже то, что я делаю. Im подталкивает соединение в массив связей лиц после проверки, пересекаются ли они. Это то, что делает ваш код выше. Мой настоящий вопрос. Как получить ВСЕ соединения из всех дочерних подключений. Например ... позволяет сказать, что все они связаны в одной строке. 6 соединений. каждый из которых связан в цепочке. Как первый элемент сообщает, что он связан с последним элементом. Когда он действительно связан через ряд соединений. Не прямые связи. Я не уверен, что я говорю, что это имеет смысл? – KyleK
Возможно, вам нужен класс группы ... для хранения связанных экземпляров Person? –
Я вижу - это было не очень ясно из вашего вопроса. См. Мой обновленный ответ со ссылкой на пример. – JeffThompson