Seaward.ru

Здравствуйте, гость ( Вход | Регистрация )

> Математическая генерация дна моря (глубины), Задача на мат.логику и/или программиование (не Стром-2.х)
ALexusB
сообщение Nov 13 2008, 14:32
Сообщение #1


Разработчик ВМЛ-КВЛ
*******

Seaward TeamЖелезный Профессор
Группа: Admin
Сообщений: 16,554
Регистрация: 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

Решение

???

Какие есть идеи?

Понятно, что вариант наколбасить все ручками рабочий - редактор такой сделать не вопрос, он у мя уже почти готов.
Но хочется, чтоб само делало, каждый раз разное
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
 
Reply to this topicStart new topic
Ответов
ALexusB
сообщение Nov 19 2008, 22:25
Сообщение #2


Разработчик ВМЛ-КВЛ
*******

Seaward TeamЖелезный Профессор
Группа: Admin
Сообщений: 16,554
Регистрация: 2-November 04
Пользователь №: 3



Дело сдвинулось.
Метод с реперными точками и решеткой осознал, в ехеле ручками програн на нескольких сетках 7х7 и получил в итоге те же квадратики + неясность как роботом делать промежутки, что б не было 2-4 3-5 и 5-7 стыков. Как раз про принципу игры "сапер", как и говорилось

Но пока это все делал вывел для себя замену реперам "пирамидками наоборот". Все просто - пирамидки нужны малеькие, разной высоты и не 1-2, а сотни. Тогда на выходе имеем мель произвольной формы, но вписанной в прямоугольник.
Это пока не победил.

Так же, что реперы, что пирамидки дают равномерное покрытие (1) - в игре вода такая смотрится хорошо, только по балансу лажа - потому продолжаю поиск метода, который сгенерит мель амебообразной формы и рандомный расход глубины от нее.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Serginio
сообщение Nov 20 2008, 13:03
Сообщение #3


инопланетянец
*******

Заслуженный КорсарСоздатель Модов к ГПК
Группа: форумчанин
Сообщений: 2,018
Регистрация: 7-August 07
Из: Днепропетровск
Пользователь №: 11,632



Цитата(ALexusB @ Nov 19 2008, 23:25) *

Дело сдвинулось.
Метод с реперными точками и решеткой осознал, в ехеле ручками програн на нескольких сетках 7х7 и получил в итоге те же квадратики + неясность как роботом делать промежутки, что б не было 2-4 3-5 и 5-7 стыков. Как раз про принципу игры "сапер", как и говорилось

Чтоб не было таких стыков, генерирование цифр должно происходить линейно (например от определённой оси влево и вправо, одновременно для всех рядов поля). От другой оси генерирование идёт навстречу. Принцип один - одинаковых цифр в ряду должно быть не меньше 2 и не более 10 (чтоб склоны не были очень крутыми или очень пологими). При стыковке полей (когда заполнены уже все ячейки) идёт корректировка (проверка) в обратном направлении и изменение цифр только в сторону понижения их значения (уже без ограничени количества одинаковых цифр в ряду). Пример:
33445!55444
22334!66555
33445!66655
44566!76655
В данном примере 2 ошибки, корректировка простая: ВУо второй строке при проверке от оси ! вправо, на значение 6 будет влиять значение 4, которая слева от оси. 6 под этим влиянием изменится на 5. Следующая 6, такдже на 5.
В четвёртой строке 6 изменится на 5 под влиянием верхней четвёрки...
Бред, конечно... Но для модели, которая будет состоять из одной кривой плоскости (как простынь, разостланная на траве), больше ничего в голову не лезет.
Цитата
Но пока это все делал вывел для себя замену реперам "пирамидками наоборот". Все просто - пирамидки нужны малеькие, разной высоты и не 1-2, а сотни. Тогда на выходе имеем мель произвольной формы, но вписанной в прямоугольник.
Это пока не победил.

Так же, что реперы, что пирамидки дают равномерное покрытие (1) - в игре вода такая смотрится хорошо, только по балансу лажа - потому продолжаю поиск метода, который сгенерит мель амебообразной формы и рандомный расход глубины от нее.

Хотел спросить. А как программа рассматривает, собственно "мель"? Как единую плоскость с координатами точек по трём осям? Или как набор плоскостей, каждая из которых имеет свой уровень (глубину)? Или там математикой (тригонометрией) и не пахнет, - а просто генерация объёмных объектов (пирамидок к примеру) в определённой последовательности (или по определённым принципам)?
Дело в том, что на Ваших примерах прямоугольных мелей явно просматривается "слоистая" их структура. Я подумал, и пока не вижу особых препятствий для того, чтоб генерировать овальные (пока в форме правильных эллипсов) слои с чётким алгоритмом. Т.е. мель будет выглядеть точно, как у Вас, только не из прямоугольников, а из эллипсов. Стыковку их можно придумать (при соблюдении некоторого условия, вообще проблем нет). Только для этого нужно, чтоб дно (плоскость со значением 7) программой рассматривалось, как плоскость координат.
Если это возможно, то готов завтра к вечеру математически описАть алгоритм построения.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Сообщений в этой теме
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
Belphegor   Это я ступил. Сперва понял правильно (прибавлял), ...   Nov 14 2008, 19:02
Serginio   2 3 2 _ [i]вокруг точки со значением 3 могут нахо...   Nov 14 2008, 19:35
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


Reply to this topicStart new topic
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 30th April 2025 - 02:06

Блок рекламы
Яндекс цитирования Rambler's Top100
Rambler's Top100