Реализация как однопоточного, так и многопоточного алгоритма генерации фрактального пламени. В нем поддерживаются различные нелинейные преобразования и дополнительные функции, такие как гамма-коррекция и симметрия.
-
Нелинейные преобразования: В проекте реализованы следующие преобразования:
- Spherical (Сферическое)
- Sinusoidal (Синусоидальное)
- Handkerchief (Платок)
- Swirl (Вихрь)
- Horseshoe (Подкова)
- Polar (Полярное)
- Disc (Диск)
- Heart (Сердце)
- Linear (Линейное)
- EyeFish (Рыба-глаз)
-
Гамма-коррекция: Применяется для улучшения визуального качества генерируемых фракталов.
-
Симметрия: Проект поддерживает симметрию по осям X и Y для более интересных фрактальных узоров.
Конфигурация проекта осуществляется через файл config.json, в котором можно настроить параметры генерации фрактала и включить или отключить различные линейные преобразования. Ниже представлен пример конфигурационного файла:
{
"Application": {
"width": 1920,
"height": 1080,
"startingPoints": 100,
"singleThread": false,
"iterations": 100000,
"gamma": true,
"horizontalSymmetry": false,
"verticalSymmetry": false,
"format": "PNG"
},
"LinearTransformations": {
"Spherical": true,
"Sinusoidal": true,
"Handkerchief": true,
"Swirl": true,
"Horseshoe": true,
"Polar": true,
"Disc": true,
"Heart": true,
"Linear": true,
"EyeFish": true
}
}Поддерживаются два формата для сохранения результатов генерации фрактала:
1.PNG — изображение будет сохранено в формате PNG. 2. JPEG — изображение будет сохранено в формате JPG.
Результат генерации будет сохранен под именем FractalFlame. В зависимости от выбранного формата, файл будет иметь соответствующее расширение, например:
FractalFlame.pngдля формата PNG.FractalFlame.jpgдля формата JPG.
Ниже приведены результаты тестирования производительности для однопоточного и многопоточного рендеринга фрактального пламени.
- Операционная система: Linux
- Архитектура: AMD64
- Процессор: 11-е поколение Intel(R) Core(TM) i7-11800H @ 2.30GHz
| Разрешение | Начальные точки | Время (нс/операция) |
|---|---|---|
| 1980x1080 | 100 | 1,449,227,170 |
| 1980x1080 | 150 | 2,332,185,897 |
| 1980x1080 | 200 | 2,798,556,454 |
| 2560x1440 | 100 | 1,835,697,220 |
| 2560x1440 | 150 | 3,242,304,475 |
| 2560x1440 | 200 | 3,186,335,708 |
| Разрешение | Начальные точки | Время (нс/операция) |
|---|---|---|
| 1980x1080 | 100 | 267,605,513 |
| 1980x1080 | 150 | 363,783,648 |
| 1980x1080 | 200 | 563,224,390 |
| 2560x1440 | 100 | 257,659,781 |
| 2560x1440 | 150 | 393,870,887 |
| 2560x1440 | 200 | 596,110,542 |
| Разрешение | Начальные точки | Время (нс/операция) |
|---|---|---|
| 1980x1080 | 100 | 186,639,452 |
| 1980x1080 | 150 | 295,196,018 |
| 1980x1080 | 200 | 399,623,369 |
| 2560x1440 | 100 | 227,323,765 |
| 2560x1440 | 150 | 285,035,736 |
| 2560x1440 | 200 | 438,077,185 |
| Разрешение | Начальные точки | Время (нс/операция) |
|---|---|---|
| 1980x1080 | 100 | 212,044,188 |
| 1980x1080 | 150 | 316,771,878 |
| 1980x1080 | 200 | 402,349,632 |
| 2560x1440 | 100 | 190,885,581 |
| 2560x1440 | 150 | 329,414,104 |
| 2560x1440 | 200 | 397,396,392 |





