| Yoko http://forum.yoko.com.ua/ |
|
| Мининг, точнее аспект бегов -) http://forum.yoko.com.ua/viewtopic.php?f=20&t=5362 |
Page 1 of 1 |
| Author: | Destruction [ 2005-10-04 13:14:25 ] |
| Post subject: | Мининг, точнее аспект бегов -) |
Собсно хочу написать универсальный мининг - разметка пещеры не рулит. Есть начит массив координат тайлов пещеры, как бы разбить её на квадраты самым оптимальным образом? |
|
| Author: | Askaneli [ 2005-10-04 13:32:03 ] |
| Post subject: | Re: Мининг, точнее аспект бегов -) |
Destruction wrote: Собсно хочу написать универсальный мининг - разметка пещеры не рулит.
Есть начит массив координат тайлов пещеры, как бы разбить её на квадраты самым оптимальным образом? Не понял. А на кой тебе делить то ? Ты как планируешь копать, с хождением или так по кругу (то бишь по квадрату) ? |
|
| Author: | Destruction [ 2005-10-04 16:08:30 ] |
| Post subject: | Re: Мининг, точнее аспект бегов -) |
Askaneli wrote: Destruction wrote: Собсно хочу написать универсальный мининг - разметка пещеры не рулит. Есть начит массив координат тайлов пещеры, как бы разбить её на квадраты самым оптимальным образом? Не понял. А на кой тебе делить то ? Ты как планируешь копать, с хождением или так по кругу (то бишь по квадрату) ? Обкапываем квадрат - дуем к следущему. Вот, расписал, даже нарисовал http://forum.woweb.ru/topic17332.html?st=0#entry140183 |
|
| Author: | Beyonder [ 2005-10-04 16:23:44 ] |
| Post subject: | |
Все очень просто. Расписываю алгоритм по пунктам: 1) Делаем функция подсчета количества красных точек на расстояни от выбранной точки. 2) Устанавливаем где-попало в зеленом секторе красную точку. 3) Запускаем от нее рекурсивную функцию: for все точки на радиусе N if у текущей точки на расстоянии (N-1) красных точек нет ставим сюда красную точку запускаем эту функцию относительно уже этой новой красной точки endif endfor Теперь как будет работать этот скрипт: 1) Точка одна которая взята случайным образом. 2) найдена точка на расстоянии N, вокруг нее только 1 точка (начальная на расстоянии N (а проверка на расстояние N-1) тоесть сюда ставим красную тоже. Повторяем 2 для новой точки, и так далее пока вдруг не зайдем в тупик. Зайдя в тупик, функция просто переберет все точки, и возвратиться на 1 "уровень" выше, тоесть на предыдущую красную точку. Она дойдет начатый цикл до конца, и возвратиться еще выше. В итоге по полю будут раскиданы красные точки с максимальным расстоянием 3. Решение НЕ САМОЕ ОПТИМАЛЬНОЕ. Но из всех возможных алгоритмов самое простое. |
|
| Page 1 of 1 | All times are UTC+02:00 |
| Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |
|