Здравствуйте, гость ( Вход | Регистрация )
| ALexusB |
Nov 13 2008, 14:32
Сообщение
#1
|
|
Разработчик ВМЛ-КВЛ ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Admin Сообщений: 16,628 Регистрация: 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 наверняка знает парочку волшебных слов, чтоб это отрегулировать Хотя не исключаю, что моя модель с точки зрения программирования - есть полная туфта и бред дилетанта. |
ALexusB Математическая генерация дна моря (глубины) Nov 13 2008, 14:32
os_ Если я правильно понял, то координаты точек по пер... Nov 13 2008, 20:35
Belphegor Попробовал смоделировать в эксельке. Не до 7, до 5... Nov 13 2008, 21:55
ALexusB 2Belphegor
Спасибо! Похоже, что нужно - дейст... Nov 13 2008, 22:40
Destynar Можно попробовать сделать аналог топографической к... Nov 13 2008, 22:45
ALexusB 2Destynar
Это и нужно - другое дело алгоритм всего... Nov 13 2008, 23:07
Destynar Ну например:
Есть клетка матрицы (100x100), с коор... Nov 13 2008, 23:30
Belphegor
А как? там же во втором круге уже 16 точек, потом... Nov 13 2008, 23:43
Destynar g (глубина) - тут выбирается на повышение идет гру... Nov 13 2008, 23:54
ALexusB Поправка - в идеале это должно генерится за разумн... Nov 14 2008, 00:07
Belphegor А нельзя сетку использовать не квадратную, а шести... Nov 14 2008, 00:40
ALexusB Теоретически можно, но не в моем случае
Упраылять... Nov 14 2008, 09:45
Serginio Искомый (генерируемый) объект имеет критическую кр... Nov 14 2008, 15:21
Belphegor Ну погоди, по 8 направлениям... А промежуточные кл... Nov 14 2008, 15:42
Serginio
Ну погоди, по 8 направлениям... А промежуточные к... Nov 14 2008, 16:18
Belphegor
Нифига не понимаю. :huh: Главное, чтоб Алексус ... Nov 14 2008, 17:40
Serginio
Нифига не понимаю. :huh: Главное, чтоб Алексус ... Nov 14 2008, 18:44
ALexusB
Я тоже не догнал
Точнее, подход от высоты (1) в ... Nov 14 2008, 19:28
Belphegor Сделал копию своей модели в Фотошопе.
Все еще квад... Nov 14 2008, 20:41
ALexusB Сделал квадратами от 7 к 1
http://online.seaward.r... Nov 14 2008, 22:12
Tymofei Пирамиды получаются, потому что весь расчет работа... Nov 15 2008, 00:30
ALexusB
Не годится :(
нужны фарватеры - это же все для ко... Nov 15 2008, 02:01
ALexusB Начал понимать подход с реперными точками - да, мо... Nov 15 2008, 12:36
ALexusB Дело сдвинулось.
Метод с реперными точками и решет... Nov 19 2008, 22:25
Serginio
Дело сдвинулось.
Метод с реперными точками и реше... Nov 20 2008, 13:03
ALexusB Все верно- плоскость и есть. матрица двумерная. Зн... Nov 20 2008, 13:27
Serginio
... Значение и есть глубина.
...Если отойти от м... Nov 20 2008, 13:41
os_ 2 варианта генерации поверхности дна. Dec 11 2008, 15:37
Serginio
2 варианта генерации поверхности дна.
Конкретная... Dec 11 2008, 18:03
ALexusB Наглядно, спасибо.
А если от середины плясать а н... Dec 11 2008, 17:16
os_ Можно и от середины плясать. Но для меня не совсем... Dec 11 2008, 19:55
ALexusB PHP - это http://ru.wikipedia.org/wiki/Php язык п... Dec 11 2008, 20:15
os_ ИМХО оптимальный вариант:
Создать несколько базовы... Dec 15 2008, 14:48
m-traxx
ИМХО оптимальный вариант:
Надо ещё учесть, что ос... Dec 15 2008, 16:35
Scatimon
ИМХО оптимальный вариант:
Ну и будут опять одни ... Dec 16 2008, 09:27
os_ Спрайты могут применяться для оптимизации графичес... Dec 16 2008, 15:29
Serginio
Спрайты могут применяться для оптимизации графиче... Dec 16 2008, 17:57
ALexusB Оно (дно) и сейчас в моей двиге не плохо смотрится... Dec 21 2008, 16:42
TAHAT Человек на твоей задаче магистерскую работу защити... Dec 21 2008, 22:41
ALexusB Спасибо за статью!!!
накидаю несколько... Dec 22 2008, 16:22
ALexusB Получилось
http://dev.seaward.ru/File/MapEdit_1.sw... Dec 22 2008, 22:44
N.tony Если я не сильно поздно, я бы тоже предложил :)
Е... Jun 6 2009, 13:41
Tymofei Если я не сильно поздно, я бы тоже предложил :)Мул... Jun 6 2009, 14:02
N.tony
Мулька в том, чтобы визуально отображались матема... Jun 6 2009, 14:11
ALexusB Сохранать нагенеренное == рисовать руками (с испол... Jun 6 2009, 21:36
N.tony
Сохранать нагенеренное == рисовать руками (с испо... Jun 6 2009, 23:08
N.tony Как я и предполагал, если коэффициенты смещения по... Jun 9 2009, 00:40
ALexusB Результат впечатляет, особенно анимированное масшт... Jul 4 2009, 19:12
Serginio Мелей в сумме должна быть не более 20% карты и дол... Jul 4 2009, 20:08
N.tony
Мелей в сумме должна быть не более 20% карты и до... Jul 4 2009, 23:00
Serginio Если под мелями тут имеется в виду любая точка с в... Jul 4 2009, 23:22
ALexusB Тоже делал, делал по 20-30 высот и обрезал по 7, т... Jul 4 2009, 21:31
Serginio Тоже делал, делал по 20-30 высот и обрезал по 7, т... Jul 4 2009, 21:47
ALexusB Анимация воды на флаше. Линки давал когда-то, раз ... Jan 2 2011, 23:21![]() ![]() |
| Текстовая версия | Сейчас: 30th October 2025 - 05:14 |