![]() |
Быстрый поиск соседей
Возник такой вопрос. Есть n частиц(много:)). Вероятность столкновения велика. Есть теоритически бесграничное поле. Есть статья, где достаточно хорошо описан метод для поиска соседей(там всё поле разбивается на ячейки нужного нам размера, ну и всё такое. Хз как называется этот метод).
Всё бы хорошо, но все моменты, где применяется запись и поиск в объекте разных значений очень тормозит. Есть ли идеи, как сделать хранение бесконечного количества ячеек не в переменной Object, а в другом быстром виде, чтобы избавиться от всех длинных циклов? Вот примерно мой код: Код AS3:
|
Какой ужас :eek: Напишите метод целиком. И опишите что на входе, а что должно быть на выходе.
|
Вход:
Массив точек pt[] длины ptCount. Точки имеют координаты - свойства xx,yy Выход: Для каждой точки pt[i] массив индексов соседей i-ой точки с индексами < i. Под соседом понимается такая точка, для которой расстояние от неё до i-ой точки < R. Просто, стандартный поиск соседей, особого смысла метод писать нету. |
Лучше конечно упростить вначале задачу настолько, насколько возможно — например, сделать поле не бесконечного размера а конечного. Тогда и таблицу можно будет задать двумерным массивом.
Ну раз вы хотите бесконечное поле, то придется извращаться. Один из вариантов, создать класс разряженной таблицы и хранить элементы в двунаправленных списках. Также очень хорошее упрощение это разделение статичной и динамичной геометрии — статичные точки можно предрасчитать и заранее записать в таблицу. |
хм.. про разреженные матрицы и не подумал) спасибо) статичных точек нет. Моделирую жидкость.
|
| Часовой пояс GMT +4, время: 21:00. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.