Математическая генерация дна моря (глубины), Задача на мат.логику и/или программиование (не Стром-2.х) |
Здравствуйте, гость ( Вход | Регистрация )
Математическая генерация дна моря (глубины), Задача на мат.логику и/или программиование (не Стром-2.х) |
ALexusB |
Nov 13 2008, 14:32
Сообщение
#1
|
Разработчик ВМЛ-КВЛ Группа: Admin Сообщений: 16,309 Регистрация: 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 Решение ??? Какие есть идеи? Понятно, что вариант наколбасить все ручками рабочий - редактор такой сделать не вопрос, он у мя уже почти готов. Но хочется, чтоб само делало, каждый раз разное |
Belphegor |
Nov 14 2008, 19:02
Сообщение
#2
|
ou Le Fantome du Louvre Группа: форумчанин Сообщений: 1,232 Регистрация: 4-September 07 Пользователь №: 11,932 |
Это я ступил. Сперва понял правильно (прибавлял), а потом стал вычитать.
Но все равно, вот гляди Цитата Короче, вокруг точки со значением 1 могут находиться точки со значениями 1 или 2. Вокруг точки со значением 2 могут находиться точки со значениями 1,2 или 3. вокруг точки со значением 3 могут находиться точки со значениями 2,3 или 4 и т.д. Имеем две находящиеся рядом точки - 2 и 3 и две пустые точки внизу. Допустим, что вверху где-то находится пик, поэтому заполнение идет вниз. Если заполнение радиально. 2 3 _ _ Вокруг точки со значением 2 могут находиться точки со значениями 1,2 или 3. допустим 2. 2 3 2 _ вокруг точки со значением 3 могут находиться точки со значениями 2,3 или 4 и т.д. а вот если поставить 4, то первое условие нарушается и вводится ошибка 2 3 2 4 А если заполнение построчно - если расчет вести не от верхней точки, а от, к примеру, левой, то может получиться так 2 3 2 _ Вокруг точки со значением 2 могут находиться точки со значениями 1,2 или 3. 2 3 2 1 Получается хаотично-бугристый, но тут бугры чересчур крупные. Хотя логически правильно. То есть нужно дополнительно проверять? Вот мне и кажется, что слишком много условий. |
Serginio |
Nov 14 2008, 19:35
Сообщение
#3
|
инопланетянец Группа: форумчанин Сообщений: 2,018 Регистрация: 7-August 07 Из: Днепропетровск Пользователь №: 11,632 |
2 3 2 _ вокруг точки со значением 3 могут находиться точки со значениями 2,3 или 4 и т.д. а вот если поставить 4, то первое условие нарушается и вводится ошибка 2 3 2 4 Ты сам себя запутываешь. Поставить 4, безусловно можно, но следуя какому алгоритму? Т.е. откуда там взялась 4? Если основная ось проходит вертикально вниз через цифру 3 в твоём примере, то цифра 4 будет находиться на основной оси и мы от неё по часовой стрелке образуем ряд, в котором у тебя почему-то уже стоит двойка (эта двой должна быть вторичной), т.е. образовываться после четвёрки, тогда сгенериться не 2, а 4 или 5 (условие 1). Если же первична твоя нижняя двойка, то работает (условие 2) вокруг двойки могут быть цифры 1, 2 или 3; но вокруг тройки (верхней) могут быть цифры 2,3 или 4, т.е. сгенериться или 2 или 3 от наложения условий. Цитата А если заполнение построчно - если расчет вести не от верхней точки, а от, к примеру, левой, то может получиться так 2 3 2 _ Вокруг точки со значением 2 могут находиться точки со значениями 1,2 или 3. 2 3 2 1 Здесь проще. Условие 1 гласит, что цифра должна быть равна или больше. Единицы здесь ни в каком случае не будет (если генерация идёт сверху вниз). Если же генерация идёт снизу, то не будет тройки. Цитата Получается хаотично-бугристый, но тут бугры чересчур крупные. Хотя логически правильно. То есть нужно дополнительно проверять? Вот мне и кажется, что слишком много условий. В твоих примерах не крупные бугры. Здесь противоречие. Как математическое, так и логическое. Между глубиной 1 метр и глубиной 3 метра обязательно существует точка с глубиной 2 метра. Даже в случае вертикального размещения плоскости. Посмотри любую геологическую карту. На ней изогипсы (линии высот или глубин) никогда не пересекаются и не соединяются. В принципе что-то подобное нужно сгенерировать и здесь. Я прекрасно вижу свою ошибку, вернее ту ситуацию, когда условия пересекутся, но, надеюсь, что поле не будет таким огромным, да и уважаемый ALexusB наверняка знает парочку волшебных слов, чтоб это отрегулировать Хотя не исключаю, что моя модель с точки зрения программирования - есть полная туфта и бред дилетанта. |
Текстовая версия | Сейчас: 27th May 2024 - 06:59 |