{"id":24401657,"url":"https://github.com/vihlancevk/fractalflame","last_synced_at":"2026-04-14T06:32:00.467Z","repository":{"id":273221119,"uuid":"919026083","full_name":"vihlancevk/FractalFlame","owner":"vihlancevk","description":"T-Bank Backend Academy 2024 ","archived":false,"fork":false,"pushed_at":"2025-01-19T14:37:21.000Z","size":2727,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-19T15:32:47.964Z","etag":null,"topics":["java22","lombok","maven","yaml"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vihlancevk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-19T14:21:46.000Z","updated_at":"2025-01-19T14:37:22.000Z","dependencies_parsed_at":"2025-01-19T15:33:06.033Z","dependency_job_id":"6767b982-6ecd-4d1c-ae46-218a0fe791a6","html_url":"https://github.com/vihlancevk/FractalFlame","commit_stats":null,"previous_names":["vihlancevk/fractalflame"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vihlancevk%2FFractalFlame","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vihlancevk%2FFractalFlame/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vihlancevk%2FFractalFlame/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vihlancevk%2FFractalFlame/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vihlancevk","download_url":"https://codeload.github.com/vihlancevk/FractalFlame/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243358211,"owners_count":20277989,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java22","lombok","maven","yaml"],"created_at":"2025-01-20T00:33:07.420Z","updated_at":"2025-12-28T08:06:47.237Z","avatar_url":"https://github.com/vihlancevk.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FractalFlame\n\n## Установка и запуск\n\n### Требования\n\nДля запуска игры необходима установка следующих зависимостей:\n- Java 22+\n- Maven (для сборки проекта)\n\n### Установка\n\n1. Склонируйте репозиторий:\n    ```bash\n    git clone https://github.com/vihlancevk/FractalFlame.git\n    ```\n2. Перейдите в директорию проекта:\n    ```bash\n    cd FractalFlame\n    ```\n3. Соберите проект с помощью Maven:\n    ```bash\n    mvn clean install\n\tmvn dependency:copy-dependencies\n    ```\n4. Запустите:\n   ```bash\n   java -cp target/java-1.0.0.jar:target/dependency/* backend.academy.Main\n   ```\n\n## Отчёт\n\nРеализованно приложение для генерации изображений фрактального пламени.\n\n### Конфигурация\n\nДля быстрой конфигурации приложения нужно использовать файл `config.yml`.\nВ нём представлены следующие поля:\n- **width** - ширина изображения, диапазон допустимых значений от `64` до `2048`, значение по умолчанию `1024`.\n- **height** - высота изображения, диапазон допустимых значений от `64` до `2048`, значение по умолчанию `1024`.\n- **affines** - список аффинных преобразований в формате `[a, b, c, d, e, f, r, g, b]`,\nгде `-1.5 \u003c= a, b, c, d, e, f \u003c= 1.5` и `0.0 \u003c= r, g, b \u003c= 1.0`. Значение по умолчанию:\n```\n - [1.005, 0.0, 0.0, 0.0, 1.005, 0.0, 0.498, 0.0, 1.0]\n - [0.0, 1.005, 0.0, 0.0, 0.0, 1.005, 0.498, 0.0, 1.0]\n - [-0.995, 1.002, 0.0, -1.002, 0.995, 0.0, 1.0, 0.4, 0.698]\n```\n- **variations** - список трансформаций. Сейчас доступны следующие: \n`Linear`, `Sinusoidal`, `Spherical`, `Swirl` и `Horseshoe`.\nПо умолчанию список трансформаций включает в себя только линейную, то есть `Linear`.\n- **samples** - диапазон допустимых значений от `128` до `Integer.MAX_VALUE`,\nзначение по умолчанию `512`.\n- **iter-per-sample** - диапазон допустимых значений от `128` до `Short.MAX_VALUE`, \nзначение по умолчанию `512`. \n- **seed** - значение по умолчанию `0`. \n- **symmetry** - параметр симметрии изображения, диапазон допустимых значений от `1` до `16`,\n  значение по умолчанию `1`. \n- **is-relative-symmetry** - включает локальную симметрию, имеет смысл только при многопоточном исполнении. \nЗначение по умолчанию `false`.\n- **number-of-threads** - количество потоков для исполнения программы. Диапазон допустимых значений от `1` до `32767`,\n  значение по умолчанию `1` (однопоточный режим).\n\n### Результаты измерения производительности\n\nПри генерации изображения использовалась следующая конфигурация (`config.yml`):\n```\nwidth: 512\nheight: 512\n\naffines:\n - [1.005, 0.0, 0.0, 0.0, 1.005, 0.0, 0.498, 0.0, 1.0]\n - [0.0, 1.005, 0.0, 0.0, 0.0, 1.005, 0.498, 0.0, 1.0]\n - [-0.995, 1.002, 0.0, -1.002, 0.995, 0.0, 1.0, 0.4, 0.698]\n\nvariations:\n - Linear\n - Sinusoidal\n - Spherical\n - Swirl\n - Horseshoe\n\nsamples: 4096\niter-per-sample: 8192\n\nseed: 2\n\nsymmetry: 16\nis-relative-symmetry: false\n\nnumber-of-threads: ...\n\n```\n\nИзмерения производились на операционной системе `Ubuntu 22.04.5 LTS x86_64` \nс использованием процессора `Intel i5-8300H (8) @ 4.000GHz` (4 ядра, 8 потоков).\n\n| number-of-threads | time (sec) | Ускорение | Загруженность (%) |\n|-------------------|------------|-----------|-------------------|\n| 1                 | 72.01      | -         | -                 |\n| 2                 | 31.15      | 2.31      | 116               |\n| 3                 | 24.49      | 2.94      | 98                |\n| 4                 | 22.45      | 3.21      | 80                |\n| 5                 | 22.51      | 3.20      | 64                |\n| 6                 | 23.75      | 3.03      | 51                |\n| 7                 | 24.06      | 2.99      | 43                |\n| 8                 | 22.83      | 3.15      | 39                |\n| 9                 | 21.59      | 3.34      | 37                |\n| 10                | 22.94      | 3.14      | 31                |\n\nКак видно из таблицы наиболее целесообразно использовать 2 потока.\n\n### Примеры\n\n![Первые попытки](1.png)\n\n![Пример относительной симметрии](2.png)\n\n![Итоговое изображение из отчёта](3.png)\n\n![Лайки](4.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvihlancevk%2Ffractalflame","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvihlancevk%2Ffractalflame","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvihlancevk%2Ffractalflame/lists"}