powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Задачка про остров
25 сообщений из 421, страница 13 из 17
Задачка про остров
    #39932582
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
параметрически ? Как f(R,phi)
Ну в общем да, в полярных с центром в центре матрицы и персчёты к-т туда-сюда .... и закраска кусочно-постоянными лучами.
Написал сюда словесный алгоритм, но .... браузер, козёл розово-голубой((
Короче, нахрапом не успел, правки,правки ... надо строго по бумажке. А завтра времни почти не останется. Если никто не спешит, надеюсь ко вторнику, во всяк черновую картинку для замечаний.
...
Рейтинг: 0 / 0
Задачка про остров
    #39932584
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98
mayton
параметрически ? Как f(R,phi)
Ну в общем да, в полярных с центром в центре матрицы и персчёты к-т туда-сюда .... и закраска кусочно-постоянными лучами.
Написал сюда словесный алгоритм, но .... браузер, козёл розово-голубой((
Короче, нахрапом не успел, правки,правки ... надо строго по бумажке. А завтра времни почти не останется. Если никто не спешит, надеюсь ко вторнику, во всяк черновую картинку для замечаний.

Не спеши. Синтетические ландшафты у меня еще не готовы. Время есть.
Спираль надо сделать качественно чтоб между витками не было рандомных
пиков или шума. Или ступенек квантизации там где должен быть градиент.

Неплохой вариант - сделать суб-пиксельный рендеринг. Тоесть параметрически
сделать спираль в разрешении 2048х2048 а потом уменьшить разрешение в 4
раза с усреднением.
...
Рейтинг: 0 / 0
Задачка про остров
    #39932700
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iOracleDev

Нет, вот исходник:



Вместе с двумя файлами Node, GrayRgbBmpArray вы приложили два фрагмента кода которые непонятно
к чему относятся. Что мне с ними делать? Это недооформленные части проекта. И вы ставите меня в сложное
положение. Очевидно я должен сам придумать куда или положить. С одной стороны это - пустяк. С другой
стороны вы как-будто самоустранились от этой разработки и считаете что кто-то ее закончит.
...
Рейтинг: 0 / 0
Задачка про остров
    #39932730
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Один непонятный фрагмент, это сам расчет и он вполне себе изолирован и даже с комментами, второй это то как их все вместе использовать, тоже с комментами, если есть более конкретные вопросы могу расписать заложенную мысль. Я не решал задачу создать продуктовое решение, мне интересно было опробовать работу алгоритма, я ее опробовал, для тех кто захочет разобраться выложил и снабдил комментариями, не хочешь разбираться не разбирайся, хочешь продуктовое решение можешь сделать, мне не надо, я своей цели в данном вопросе достиг.


PS: расчет поместить в статический класс Island, а следующий кусок в main
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
        // на входе нужен файл с 8-битной глубиной цвета и использованием 256 градаций серого, если хочется чтобы 
        // затопленные плитки имели цвет отличный от градаций серого, можно добавить цветной пиксель
        GrayRgbBmpArray grba = new GrayRgbBmpArray("C:\\temp\\test.bmp", "C:\\temp\\output.bmp");
        // считываем исходную картинку в массив
        grba.readToArray();
        // расчет, остаточный уровень океана может быть от 0 до 255, максимальный уровень подъема при наводнении от 0 до инта
        // если нужно затопить весь отсров уровень должен быть больше 255
        // можно устанавливать равные, тогда получим вид острова затопленного до определенной высоты
        // если собрать последовательно сверху такие срезы, то можно сделать гифку отлива))
        grba.outputArray = Island.Calculate(grba.imageInByte, 1, 260);
        // выводим результат в файл, цвет для затопленных плиток берется от пикселя исходной картинки с координатами (0,0)
        // можно указать любую другую координату для цветного пикселя в исходном файле
        grba.writeToFile(0, 0);
...
Рейтинг: 0 / 0
Задачка про остров
    #39932783
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно было-бы хоть создать maven-based проект и довести его до стадии компилляции.

Впрочем я не настаиваю. Как будет угодно.
...
Рейтинг: 0 / 0
Задачка про остров
    #39932825
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для этого нужны морфологические процедуры. А я делаю простой математикой умножить-разделить.
mayton
Спираль надо сделать качественно чтоб между витками не было рандомных пиков или шума. Или ступенек квантизации там где должен быть градиент.
Боюсь, для 2К в лучшем случае считать будет всю ночь, если вообще памяти хватит. Мне кажется допустим небольшой % ямок.

Показываю сегодняшнее хреновое состояние. Реальный азмер 200х200, а это зум. И наврное надо градиент наоборот, иначе это будет яма.
Есть сейчас фигня - криволинейный конус и его окрестности - это явная ошибка. Сначала хотел спросить идей насчёт его, теперь предполагаю, что это ошибка при делении на R~0.
...
Рейтинг: 0 / 0
Задачка про остров
    #39932826
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это ... просто шикарный остров. Вавилонская башня еще и острые пики.



По сабжу - понятия не имею как такой эффект может произойти.
...
Рейтинг: 0 / 0
Задачка про остров
    #39932829
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дай мне формулу твоей спирали. Похоже это архимедова. Коэффициенты и прочее.
...
Рейтинг: 0 / 0
Задачка про остров
    #39932960
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так и есть. А дорожка - это уже эклектика нахрапная, голимая.
Обычная формула спирали, запись только в векторном виде:
Код: plaintext
1.
2.
3.
4.
5.
k= 5; n= 200; dk= 10;     n - это размерность матрицы,
     т.е. в спирали (k*60*dk) точек, 5 витков, 1/10 - дополнительное дробление шага радиан
ag= [0 : 1/60/dk : k]; fig=2*pi*ag;     где Pi== ПИ,  fig - угол Фи
R= n/k*ag;        это радиус
xf= R * cos(fig); 
yf= R * sin(fig);

Спираль на рисунке я по центру дорожки поместил и подсветил, чтоб видеть её.
В матрице потом её центрирую. Потом ещё матрицу перевернуть надо, чтобы оси направить как у людей, а не как у прогеров.
...
Рейтинг: 0 / 0
Задачка про остров
    #39932970
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98, ок спасибо. Вечером попробую сделать. Для начала хоть начертить ее корректно.
Заполнять думаю надо трапециями. Ступеньками башни по сути.
...
Рейтинг: 0 / 0
Задачка про остров
    #39932981
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да я вообще брутально щас считаю. Для каждой непустой точки матрицы (т.е. не на спирали) вычисляю, к какому углу (из дискретных fig() ) она ближе, затем -- ближе к какой именно точке на найденном луче.
Так получается, что сами витки посередь дорожки. А думал всё время, что притягиваю дорожку к краю бордюра (башка думала одно, руки делали другое). Это тоже надо будет фиксить. Затем ещё углы матрицы тоже не трогать.
Собсно и весь алгоритм. Трапеции замучаешься считать.
...
Рейтинг: 0 / 0
Задачка про остров
    #39933072
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Трапеция - это просто 4 точки по твоему алгоритму. Не?

Хотя да. Закраска трапеции это нудоство еще то. Надо поискать коробочные алгоритмы.

А там я еще закраску Гуро хотел свою. Для треугольников.
...
Рейтинг: 0 / 0
Задачка про остров
    #39933153
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот и я о том же. И я вначале так же думал. Но суровая дискретность матрицы ...
Подводный камень в том, что R у меня хоть и растет линейно углу, но при завёртывании, чем дальше, тем чаще дыры. Поэтому дополнительное дробление в виде множителя dk не лишнее. С ростом dk дыр на периферии станет меньше, а в центральной области будет сильная избыточность точек R.

Ещё камень в том, что при dk= 6*t получим шаг=t*360 град. Очеь заманчиво для формирования лучей. Но снова вмешивается суровая дискретность, и там выходит точность плюс-минус.

Пока решил додавливать подход как есть.
...
Рейтинг: 0 / 0
Задачка про остров
    #39933196
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот, главный косяк ликвидировал, получилось такое зрелище (со сдвигом пока и не перевёрнутое). Ошибка была не там ,где предполагал - забыл центрировать в одном месте.

n=400 dk=18 готовилось 5 минут

Вопрос теперь: продолжать дальше или уже не нужно?
И кстати, ступеньки там сами по себе присутствуют, их видно при большом зуме.
...
Рейтинг: 0 / 0
Задачка про остров
    #39933208
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще шикарно.
...
Рейтинг: 0 / 0
Задачка про остров
    #39933219
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь смотри. Я тут ещё оставил не крашенными углы квадрата. Но для простоты сделал это ВНЕ ОКРУЖНОСТИ, к-рая описана вокруг спирали. Иначе надо на каждом луче сравнивать и т.д. или другие хитрости.
Центр спирали немного динамичен в зависиомти от размерности. Неожиданно оказалось, что самый большой радиус от центра - вертик вверх, а не гориз вправо, как мне хотелось верить.
Придётся разбираться. То ли смещение при преобразовании коорд-т, то ли не знаю что.
...
Рейтинг: 0 / 0
Задачка про остров
    #39933239
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот вам вариант центрированный со спиралью, вписанный в окружность, + бордюр вокруг рисунка 400х400.
n=400 dk=12
Пока могу выдохнуть.
...
Рейтинг: 0 / 0
Задачка про остров
    #39933241
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо бы ещё ширину дорожки сделать поменьше.

Чтоб вода затекла не так быстро.
...
Рейтинг: 0 / 0
Задачка про остров
    #39933326
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как понять Уже? могу больше витков задать, они и станут уже.
Кстати заочно понял, в матрице масштаб разный по вертикали и горизонтали. Можно поправить, можно нет, картинка слегка видоизменится, особенно в части "описанной" окружности.
Это ещё один довод к тому, что нельзя прогать навалом - лишние проблемы потом вычищать. И функции/методы для преобразования координат - тогда не забудется центровка. Вот только набитая техника выполнения здесь и выручала.
...
Рейтинг: 0 / 0
Задачка про остров
    #39933370
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм.. 1-я картинка была более правильной. Вавилонская башня. Правильная такая.



То вторая картинка это скорее - Ад - Сандро Ботичелли Либо башня построенная в яме. Смотря как мапить
цвета на высоты.
...
Рейтинг: 0 / 0
Задачка про остров
    #39933414
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Речь о 2-х последних?
Задуман был как раз 2-й вариант, 1-й случился по ошибке. Если в 1-м тоже не красить углы будет тот же Ботичелли. И вообще, оба - Вавилонская яма.
Может такой адок нужен?
...
Рейтинг: 0 / 0
Задачка про остров
    #39933418
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...или такой?
...
Рейтинг: 0 / 0
Задачка про остров
    #39933422
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Причём во 2-м всё по ТЗ: дорожка внутри спирали, забор по краям.
В 1-м спираль-забор как разделительная линия, при этом с одно краю дороги пропасть, с другого стена.

Вы начальник, вам виднее(цэ)
Готовьте ТЗ.
...
Рейтинг: 0 / 0
Задачка про остров
    #39933429
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Базовое ТЗ было в 1 посту.

Я предложил - уйти от хексагональной сетки и подойти к квадратной.
Расширить объем исходных данных. По сути процессить растровые картинки высот.
Изучить возможности параллелизма.
Сделать дополнительное условие. Океан затапливает остров на высоту X а потом оступает на высоту Y.
Я также предложил ввести тестовый сет данных.
Я почему-то предполагаю что среди алгоритмов не будет абсолютных
победителей а будут локальные победы на определенных типах карт.
Например имеющие плато. Александр кажется тоже писал об этом.
...
Рейтинг: 0 / 0
Задачка про остров
    #39933499
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Э, нет, то другое ТЗ, вопрос был лишь про Вавилонскую башню (в расширенной трактовке и про дыру). Ничего более я и не задумывал, речь шла об изготовлении картинки. И вопрос прежний, годится в таком духе, что и как изменить/подправить? Нет - так нет, я прекращу.
Кол-во образцов (да даже 2 только) немало, чтобы выдвинуть продуманные требования.

Эти образцы, имхо, следует подправить:
а) масштабирование сделать одинаковое по Х и У;
б) наконец уже, перевернуть матрицы, чтобы спираль крутилась из центра против солнца в нашем полушарии.

Да, и плато здесь не предусматривалось, они кое-где имеются в виде ступенек благодаря тому, что спираль в матрице не гладкая, а ступенчатая. Если дискредитировать палитру грубее, то ступеньки станут длиннее и выше.

Здесь и ниже утренние варианты с исправленным п. (а)
...
Рейтинг: 0 / 0
25 сообщений из 421, страница 13 из 17
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Задачка про остров
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]