![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
ALexusB |
![]()
Сообщение
#1
|
Разработчик ВМЛ-КВЛ ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Admin Сообщений: 16,587 Регистрация: 2-November 04 Пользователь №: 3 ![]() |
Народ, нужна помощь в одной интересной задаче для нужд игры про "кораблики" не на стром-2.х
Уперся в генерацию (роботом) дна (мелей) Дано: Есть матрица, например, 64х64 или 100х100, не важно, хоть 100х60 клеток. Значение клеток - это глубина в метрах. Для простоты считаем до 7 метров, далее для корабля не важно - "нет дна". То есть 1 2 3 4 5 6 7 видов значений. переходы глубин плавные, то есть 1-2 2-3 и тп, 1-7 или 1-3 быть не может. Рандомно задаются: - место мели в матрице - размер и форма мели - ширина полоски перехода на каждую глубину (то есть ширина 1-2, 2-3... можно одну на всех - это частный случай) - число мелей (они могут быть в нескольких местах или накладываться, тогда переходы будут 1-2-3-4-3-2-1 или 1-2-1, зависимо от расстояния) Требуется Алгоритм генерации мелей амебообразной формы (из значений 1) с плавным переходом в 7 Решение ??? Какие есть идеи? Понятно, что вариант наколбасить все ручками рабочий - редактор такой сделать не вопрос, он у мя уже почти готов. Но хочется, чтоб само делало, каждый раз разное |
![]() ![]() |
Serginio |
![]()
Сообщение
#2
|
инопланетянец ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: форумчанин Сообщений: 2,018 Регистрация: 7-August 07 Из: Днепропетровск Пользователь №: 11,632 ![]() |
Искомый (генерируемый) объект имеет критическую кривую со значением 7 (периметр) и критические точки со значением 1 (пики или вершины мели). Количество пиков (пусть будет не более 4), а также значение высоты пика (например от 1 до 4) можно задать случайным генератором чисел. Также рандомно задаются координаты пиков. Дальше построение (генерация) объекта закладывается по принципу от пика к глубине в 8 направлениях- каждое следующее соседнее значение (Условие 1) точки должно быть равным или на единицу большим (случайная генерация) и так до достижения значения 7. Для однопиковой мели будет работать идеально, не нужно даже задавать критический периметр... Можно также задать коэффициент корреляции, чем он выше, тем круче будут откосы мели и наоборот. Не знаю как по скорости, но в математике такое будет работать. По окончании генерации мель будет иметь форму шатра с 8-ю лапами разной длины и скольугодно (рандомно) плоской вершиной.
Для многопиковых сложнее, но можно задать функцию: если два откоса мели стыкуются со значениями 4 и 6, то 6 изменить на 5 (следующую 6 при необходимости тоже на 5, до выполнения условия 1). Но здесь уже сложно для мох куриных мозгов... Я не программист, поэтому не смейтесь, если чего не так ![]() |
![]() ![]() |
Текстовая версия | Сейчас: 7th July 2025 - 16:00 |