{"id":44261219,"url":"https://github.com/divetoxx/mandelbrot-2","last_synced_at":"2026-04-12T01:03:26.232Z","repository":{"id":337236423,"uuid":"411390376","full_name":"Divetoxx/Mandelbrot-2","owner":"Divetoxx","description":"Mandelbrot set. 60 FPS and palette rotation. Palette Rotation Logic 0 is Green cos, 1 is Blue sin, and 2 is Red Random. 256 colors. Synchronization with DwmFlush. Controls \u0026 Hotkeys. F1 - F8 Keys: Instantly jump to 8 predefined iconic locations within the Mandelbrot set. OpenMP. ","archived":false,"fork":false,"pushed_at":"2026-02-10T19:47:41.000Z","size":175083,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-10T19:48:03.850Z","etag":null,"topics":["cpp","fractal","fractals","gdi","generative-art","generative-arts","graphics","high-precision","mandelbrot-set","multithreading","openmp","palette-rotation","visualization","visualizations","winapi"],"latest_commit_sha":null,"homepage":"https://github.com/Divetoxx/Mandelbrot-2","language":"C++","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/Divetoxx.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-09-28T18:08:09.000Z","updated_at":"2026-02-10T19:47:45.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Divetoxx/Mandelbrot-2","commit_stats":null,"previous_names":["divetoxx/divetoxx"],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/Divetoxx/Mandelbrot-2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Divetoxx%2FMandelbrot-2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Divetoxx%2FMandelbrot-2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Divetoxx%2FMandelbrot-2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Divetoxx%2FMandelbrot-2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Divetoxx","download_url":"https://codeload.github.com/Divetoxx/Mandelbrot-2/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Divetoxx%2FMandelbrot-2/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29558100,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-17T20:52:40.164Z","status":"ssl_error","status_checked_at":"2026-02-17T20:48:10.325Z","response_time":100,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["cpp","fractal","fractals","gdi","generative-art","generative-arts","graphics","high-precision","mandelbrot-set","multithreading","openmp","palette-rotation","visualization","visualizations","winapi"],"created_at":"2026-02-10T17:10:51.629Z","updated_at":"2026-04-12T01:03:26.214Z","avatar_url":"https://github.com/Divetoxx.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Mandelbrot set. 60 FPS. 80-bit long double. OpenMP. Supersampling 2x2 (4 passes). Color rotation\n\n[![Language](https://img.shields.io/badge/Language-English-blue)](#english)\n[![Язык](https://img.shields.io/badge/Язык-Русский-red)](#russian)\n\n![Platform](https://img.shields.io/badge/Platform-Windows-0078D4)\n![Language](https://img.shields.io/badge/Language-CPP-blue)\n![Precision](https://img.shields.io/badge/Precision-80--bit-red)\n![Engine](https://img.shields.io/badge/Engine-OpenMP-orange)\n![Graphics](https://img.shields.io/badge/Graphics-SSAA-brightgreen)\n\n[![Download](https://img.shields.io/badge/Download-Windows-brightgreen?logo=windows)](https://github.com/Divetoxx/Mandelbrot-2/releases/latest/download/Mandelbrot-2.exe)\n[![Source Code](https://img.shields.io/badge/Source_Code-ZIP-orange?logo=github)](https://github.com/Divetoxx/Mandelbrot-2/archive/refs/heads/main.zip)\n[![Source Code](https://img.shields.io/badge/Source_Code-TAR.GZ-lightgrey?logo=github)](https://github.com/Divetoxx/Mandelbrot-2/archive/refs/heads/main.tar.gz)\n\n\n\u003ca name=\"english\"\u003e\u003c/a\u003e\n\n## 🇺🇸 English Version\n## Purpose \u0026 Core Features of the GUI\nThis application is a specialized tool for the interactive exploration of the infinite complexity within the Mandelbrot set. \nIt is designed for those who appreciate the perfect synergy of mathematical precision, high performance, and visual aesthetics.\n\n### Deep Exploration of the Fractal Micro-world\n\nThe program allows you to dive into \"depths\" far beyond the reach of standard 32-bit or 64-bit calculations. By utilizing 80-bit \nprecision (`long double`), you can zoom in billions of times to discover unique structures: Mandelbrot \"mini-copies,\" \nintricate spirals, and fractal \"stars\" like the one shown in the screenshot.\n\n### Uncompromising Image Quality\n\nUnlike basic visualizers, this project implements True SSAA 2x2 (Super Sampling Anti-Aliasing). Each final pixel is the result \nof averaging four virtual sub-pixels. This technique completely eliminates \"jaggies\" (aliasing) and visual noise on the thin \nboundaries of the set, delivering a crisp, cinematic image.\n\n### Dynamic Aesthetics and Animation\n\nThe app features a Color Cycling (palette rotation) technique. While the heavy mathematical lifting is done once, the color \nscheme \"rotates\" continuously in a dedicated background thread. This creates a \"living\" fractal effect, allowing for endless \nobservation of shifting colors without additional CPU load.\n\n### A Tool for Fractal Art\n\nWith built-in coordinate saving and loading (ENTER / BACKSPACE) and a set of presets, the program serves as a powerful \nenvironment for finding and capturing the most beautiful fractal locations. It is a ready-to-use tool for generating high-quality \nfractal wallpapers and real-time psychedelic video art.\n\n**[Download Latest Version Windows](https://github.com/Divetoxx/Mandelbrot-2/releases)**\n\n## Controls \u0026 Hotkeys\nThe application provides intuitive mouse and keyboard controls for exploring the fractal:\n\n### Mouse Controls\n*   **Left Click (WM_LBUTTONDOWN):** Zoom in (2x) and center the view around the clicked point.\n*   **Right Click (WM_RBUTTONDOWN):** Zoom out (2x) from the current view.\n\n### Keyboard Navigation\n*   **LEFT / RIGHT Arrows:** Fine-tuned zoom in/out by a factor of **1.1x**.\n*   **1 - 9 Keys:** Instantly jump to 9 predefined iconic locations within the Mandelbrot set.\n\n```C++\nconst long double PRESETS[9][3] = {\n    {-1.749949182103598356L, -0.000000005697456381L, 0.0000000000000082L},\n    {-0.1544283964364377L, -1.03085800754665175L, 0.000000000000027L},\n    {-1.749675773048651182L, -0.000001140170813768L, 0.0000000000000021L},\n    {-1.74907816150389628L, 0.00000550988750089L, 0.0000000000000015L},\n    {-1.785772653736032933L, 0.000000500077787345L, 0.0000000000000077L},\n    {-1.26707805914812303L, -0.12378821520962631L, 0.000000000000001L},\n    {-1.78577278039667471L, -0.00000075696313293L, 0.0000000000000022L},\n    {-1.47907765132343401L, -0.01074925010269163L, 0.000000000000033L},\n    {-0.840953329790493429L, -0.230995969905604638L, 0.0000000000000019L}\n};\n```\n\n### Data Management Mandelbrot.txt and File Structure\n*   **ENTER (VK_RETURN):** Export current coordinates. The program saves the exact `absc`, `ordi`, and `size_val` to **Mandelbrot.txt**.\n*   **BACKSPACE (VK_BACK):** Import coordinates. Reads the three values from **Mandelbrot.txt** and instantly renders that location.\n\nTo load custom coordinates create a Mandelbrot.txt file in the application folder. \nThe file must contain three numbers separated by a newline:\n*    Abscissa (Center X coordinate)\n*    Ordinate (Center Y coordinate)\n*    Size (Zoom level/Area size)\n\n![Mandelbrot txt](Mandelbrot.png)\n\n### Controls \u0026 Hotkeys\n\n| Action | Input | Description |\n| :--- | :--- | :--- |\n| **Zoom In** | `L-Mouse Click` | Zooms **2x** into the point under cursor. |\n| **Zoom Out** | `R-Mouse Click` | Zooms **2x** out from the center. |\n| **Fine Zoom** | `LEFT / RIGHT` | Precision zoom by a factor of **1.1x**. |\n| **Presets** | `1` - `9` | Jump to 9 iconic fractal locations. |\n| **Save Loc** | `ENTER` | Exports coordinates to `Mandelbrot.txt`. |\n| **Load Loc** | `BACKSPACE` | Imports coordinates and renders. |\n\n\n## Synchronization with DwmFlush\nThe engine achieves perfect visual smoothness by synchronizing directly with the Windows Desktop Window Manager (DWM).\n*   **Adaptive Refresh Rate:** The application uses DwmFlush. This pauses code execution until the DWM has finished compositing the screen.\n*   **Monitor-Dependent FPS:** \n    - If your monitor is set to **60 Hz**, you get **60 FPS**.\n    - If you are using a gaming monitor at **144 Hz**, the function triggers 144 times per second, delivering **144 FPS**.\n    - On high-end **240 Hz** displays, you will see a buttery-smooth **240 FPS**.\n\n\n## High-Precision Rendering (80-bit)\nMost Mandelbrot explorers use standard **64-bit double precision**, which leads to \"pixelation\" at zoom levels around $10^{14}$. \nThis project leverages **80-bit Extended Precision Arithmetic** (`long double`) to push the boundaries of the fractal:\n*   **My Implementation (80-bit):** Provides **4 extra decimal digits** of precision, allowing you to explore **10,000x deeper** ($10^{18}$ range).\n*   **Hardware Optimized:** Directly utilizes the **x87 FPU registers** for maximum mathematical depth.\n\n\n## OpenMP\nOpenMP is a standard that tells the compiler, \"Take this loop and distribute the iterations among the different processor cores.\"\nYes, using OpenMP you are doing parallel programming at the Multithreading level.\nEverything is powered by **OpenMP** parallel loops for maximum performance.\nOpenMP - Scalability: Your code will run equally efficiently on a 4-core laptop and a 128-core server.\n\n\n## True SSAA 2x2 (4 independent samples per pixel) direct RGB-space integration\nImplemented 'true' 2x2 Supersampling Anti-Aliasing (SSAA). Each screen pixel is computed from four independent fractal coordinate points.\nHigh-fidelity per-channel RGB accumulation. The engine calculates the color for each sub-pixel first, then performs a weighted average of their intensities.\nUnlike standard renderers that average raw iteration counts (leading to 'chromatic noise' and loss of detail),\nthis engine performs direct RGB-space integration.\nAveraging iterations produces visual noise and artifacts. By accumulating 32-bit color values first, we eliminate this noise entirely.\nThe result is a clean, sharp image where high-frequency details are perfectly reconstructed, not blurred away.\nTrue SSAA 2x2 (4 independent samples per pixel) allows for the reconstruction of micro-filaments smaller than a single screen pixel.\nTechnical Note:\n*    Standard Way: Color( (iter1 + iter2 + iter3 + iter4) / 4 ) - Gives Noise/Artifacts.\n*    Your Way: (Color(iter1) + Color(iter2) + Color(iter3) + Color(iter4)) / 4 - Gives Pure Detail.\n\nAveraging iteration counts (indices) is mathematically incorrect because fractal palettes are non-linear.\nAveraging index A and B often points to a completely unrelated color C, creating high-frequency chromatic noise.\nOur solution performs integration in the RGB color space. By calculating the specific RGB components for each\nsub-pixel before downsampling, we ensure that the resulting color is a true optical blend.\nThis eliminates artifacts and reveals the true structural geometry of the Mandelbrot set that is otherwise masked by noise.\n\n\n## Why is there noise without Supersampling?\nIt is a great question! As it turns out, noise without supersampling isn't a CPU error - it is a fundamental phenomenon in digital graphics known as Aliasing.\nThe Mandelbrot set is infinitely complex. At its boundaries, there are \"filaments\" and details millions of times smaller than a single pixel on your monitor.\n*    Without Supersampling: The processor acts like a \"needle,\" sampling only one single point at the exact center of a pixel. If it hits a microscopic filament, the pixel turns red. If it misses by even a micron, the pixel stays black.\n*    The Result: Neighboring pixels \"grab\" random fragments of micro-details. This creates mathematical noise (aliasing artifacts), which looks like grain or dirt on the image.\n\nHow SSAA 2x2 \"Heals\" the Image?\n\nInstead of guessing what lies within a pixel, this engine takes 4 independent samples at different corners of the pixel area.\n*    True Color Computation: The engine calculates 4 real colors for each sample point.\n*    RGB Blending: These colors are blended together in a 32-bit color space.\n*    The Magic of Precision: If a thin filament falls within a pixel, it no longer \"screams\" with a single harsh color or disappears entirely. Instead, it becomes a clean, semi-transparent line that accurately represents the true fractal geometry.\n\n\n## Visual Aesthetics. Color rotation\nThe Red, Green, and Blue channels are calculated using sine and cosine waves to create smooth color transitions:\n127 + 127 * cos(2 * PI * a / 255) and 127 + 127 * sin(2 * PI * a / 255).\n\n\n## The videos - they show the program! \n\nhttps://github.com/user-attachments/assets/722fb111-9d33-419f-a2df-f29c48e20ca6\n\nhttps://github.com/user-attachments/assets/c53dd08e-ac79-4a45-837c-44ba9cba0fe8\n\nhttps://github.com/user-attachments/assets/4d89c50b-09b3-42c7-8678-7fb8de1eaf17\n\nhttps://github.com/user-attachments/assets/7f0f1a01-ba1a-4421-bd66-886a631287ba\n\nhttps://github.com/user-attachments/assets/c2df5756-5065-453b-aa95-154f7c347d09\n\nhttps://github.com/user-attachments/assets/6f537681-481b-4c17-b233-4d9ac8559f2f\n\nhttps://github.com/user-attachments/assets/bbb67bf7-1aa7-40fd-8a68-051db945844b\n\nhttps://github.com/user-attachments/assets/a601940a-82bb-463d-83f0-d79c57cc0c4a\n\nhttps://github.com/user-attachments/assets/0598bc2a-286b-441c-8cfa-32c365ee5437\n\nhttps://github.com/user-attachments/assets/9a4077e9-e492-4155-92b6-8016ce43e752\n\n\n\n## The Mandelbrot Set: A Mathematical Absolute\n\nThe Mandelbrot Set. It is perfect - an immaterial origin existing outside of space and time. \nNo matter who or where the observer is, even an alien a hundred million light-years away, the Mandelbrot Set remains the same. \nEven in a different century, in a different galaxy, and even with a completely different brain, the set is identical. \nIt transcends everything, bypassing billions of light-years.\n\nThis is not a human invention, but a mathematical discovery. It belongs to the category of \"eternal truths\" \nthat Plato referred to as the Realm of Ideas. This is why it remains constant for any observer in the universe:\n*   **Pure Logic**: It is generated by a simple formula. The rules of arithmetic are universal. Any intelligence would inevitably arrive at the exact same fractal boundaries.\n*   **Substrate Independence**: This set doesn't need a computer or a human brain to exist. It is an abstract structure woven into the very logic of the cosmos.\n*   **Fractal Constancy**: Even if physical constants were different in another galaxy, the mathematical topology of this object would remain unshakable.\n\nIt is truly one of the few objects that connects us to something absolutely objective and infinite, \ntranscending biology and history. Even if our entire universe and all its atoms were to vanish tomorrow, \nthe equation would remain true. It is not \"written\" on the stars; it is embedded in the structure of logic itself. \nThis makes the Mandelbrot Set a kind of absolute.\n\nThis is classic Mathematical Platonism: the idea that mathematical objects exist in reality, but in a non-material realm. \nIf all matter were to disappear, there would be no one to write down the formula or witness its visualization, \nbut the relationship between the numbers would remain true. Much like \"2 + 2 = 4\", this rule doesn't need apples \nor stones to be valid.\n\nIn this sense, truth is primary to the physical world.\n\nThe Mandelbrot Set is absolutely predetermined. Every single one of its points was already 'there' long before the Big Bang. \nYet, at the same time, it is entirely unpredictable-you cannot know what you will see in the next zoom until you perform the calculation.\n\nLooking at a fractal, we witness an incredible complexity that appears chaotic. But we know that at its core lies a formula \nof just three symbols. This makes one wonder: could all the chaos of our universe-the turbulence of water, the formation of clouds, \nthe structure of galaxies-be nothing more than the result of a very simple algorithm that we have yet to calculate?\n\n\n\n\n\u003ca name=\"russian\"\u003e\u003c/a\u003e\n## 🇷🇺 Русская версия\n# Множество Мандельброта. 60 FPS. 80-бит long double. OpenMP. Суперсэмплинг 2x2 (4 прохода). Смена цветов\n\n## Назначение и основные функции графического интерфейса пользователя (GUI)\nЭто приложение - специализированный инструмент для интерактивного исследования бесконечной сложности множества Мандельброта. \nОно разработано для тех, кто ценит идеальное сочетание математической точности, высокой производительности и визуальной эстетики.\n\n### Глубокое исследование фрактального микромира\n\nПрограмма позволяет погрузиться в \u003cглубины\u003e, недоступные для стандартных 32-битных или 64-битных вычислений. Используя 80-битную \nточность (`long double`), вы можете увеличивать масштаб в миллиарды раз, чтобы обнаружить уникальные структуры: \u003cмини-копии\u003e Мандельброта, \nзамысловатые спирали и фрактальные \u003cзвезды\u003e, подобные той, что показана на скриншоте.\n\n### Бескомпромиссное качество изображения\n\nВ отличие от базовых визуализаторов, этот проект использует истинное сглаживание SSAA 2x2 (Super Sampling Anti-Aliasing). \nКаждый конечный пиксель является результатом усреднения четырех виртуальных субпикселей. Эта техника полностью устраняет \u003cлесенки\u003e (сглаживание) \nи визуальный шум на тонких границах изображения, обеспечивая четкое, кинематографическое изображение.\n\n### Динамическая эстетика и анимация\n\nПриложение использует технику циклической смены цветов (вращение палитры). Хотя основная математическая обработка выполняется \nодин раз, цветовая схема непрерывно \u003cвращается\u003e в специальном фоновом потоке. Это создает \u003cживой\u003e фрактальный эффект, \nпозволяющий бесконечно наблюдать за изменением цветов без дополнительной нагрузки на процессор.\n\n### Инструмент для фрактального искусства\n\nБлагодаря встроенной функции сохранения и загрузки координат (ENTER / BACKSPACE) и набору предустановок, программа служит \nмощной средой для поиска и запечатления самых красивых фрактальных мест. Это готовый к использованию инструмент для создания \nвысококачественных фрактальных обоев и психоделического видеоарта в реальном времени.\n\n**[Скачать последнюю версию Windows](https://github.com/Divetoxx/Mandelbrot-2/releases)**\n\n## Горячие клавиши\n\n### Управление мышью\n*   WM_LBUTTONDOWN (Левая кнопка) - увеличиваем масштаб в 2 раза и центрируем новую область вокруг точки клика.\n*   WM_RBUTTONDOWN (Правая кнопка) - уменьшаем масштаб в 2 раза и центрируем новую область вокруг точки клика.\n\n### Навигация с помощью клавиатуры\n*   VK_LEFT (Стрелка ВЛЕВО) и VK_RIGHT (Стрелка ВПРАВО) - увеличиваем и уменьшаем в 1.1 раза но без точки клика. \n*   В 1 - 9 - девять мест Множество Мандельброта на экран.\n\n```C++\nconst long double PRESETS[9][3] = {\n    {-1.749949182103598356L, -0.000000005697456381L, 0.0000000000000082L},\n    {-0.1544283964364377L, -1.03085800754665175L, 0.000000000000027L},\n    {-1.749675773048651182L, -0.000001140170813768L, 0.0000000000000021L},\n    {-1.74907816150389628L, 0.00000550988750089L, 0.0000000000000015L},\n    {-1.785772653736032933L, 0.000000500077787345L, 0.0000000000000077L},\n    {-1.26707805914812303L, -0.12378821520962631L, 0.000000000000001L},\n    {-1.78577278039667471L, -0.00000075696313293L, 0.0000000000000022L},\n    {-1.47907765132343401L, -0.01074925010269163L, 0.000000000000033L},\n    {-0.840953329790493429L, -0.230995969905604638L, 0.0000000000000019L}\n};\n```\n\n### Управление данными и структура файла Mandelbrot.txt\n*   Очень важно VK_RETURN (Enter, Ввод) - у вас сейчас на экран какое-то Множество Мандельброта.\nИ сейчас оно запишется в файл! Mandelbrot.txt\n*   А VK_BACK (это та самая клавиша НАД Enter, Backspace) - читает Mandelbrot.txt (читаем три строки из файла) и запускает на экран.\n\nДля загрузки пользовательских координат создайте текстовый файл Mandelbrot.txt в папке с программой. \nФайл должен содержать три числа, разделенных переносом строки:\n*    Abscissa (Координата X центра)\n*    Ordinate (Координата Y центра)\n*    Size (Масштаб/Размер области)\n\n![Mandelbrot txt](Mandelbrot.png)\n\n### Горячие клавиши\n\n| Действие | Ввод | Описание |\n| :--- | :--- | :--- |\n| **Приблизить** | `ЛКМ` | Увеличение в **2 раза** в точке под курсором мыши. |\n| **Отдалить** | `ПКМ` | Уменьшение в **2 раза** от текущего центра. |\n| **Точный зум** | `Стрелки влево / вправо` | Плавное изменение масштаба с коэффициентом **1.1x**. |\n| **Пресеты** | Клавиши `1` - `9` | Мгновенный переход к 9 предустановленным локациям. |\n| **Сохранить** | `ENTER` | Экспорт текущих координат и масштаба в файл `Mandelbrot.txt`. |\n| **Загрузить** | `BACKSPACE` | Импорт координат из файла и мгновенный переход к месту. |\n\n\n## DwmFlush\nДвижок обеспечивает идеальную визуальную плавность за счет прямой синхронизации с диспетчером окон рабочего стола Windows (DWM). \n*   **Адаптивная частота обновления**: приложение использует DwmFlush. Это приостанавливает выполнение кода до тех пор, пока DWM не завершит композицию экрана. \n*   **Зависимый от монитора FPS**: \n    - Если ваш монитор настроен на 60 Гц, вы получите 60 кадров в секунду. \n    - Если вы используете игровой монитор с частотой 144 Гц, функция срабатывает 144 раза в секунду, обеспечивая 144 кадра в секунду. \n    - На высококачественных дисплеях с частотой 240 Гц вы увидите плавную картинку со скоростью 240 кадров в секунду.\n\n\n## Высокоточная отрисовка (80-бит)\nБольшинство исследователей фрактала Мандельброта используют стандартную **64-битную двойную точность**,\nчто приводит к \"пикселизации\" при масштабировании около $10^{14}$.\nВ этом проекте используется **80-битная арифметика с расширенной точностью** (`long double`) для расширения границ фрактала:\n*   **Моя реализация (80-бит):** Обеспечивает **4 дополнительных десятичных знака** точности, позволяя исследовать **в 10 000 раз глубже** (диапазон $10^{18}$).\n*   **Аппаратная оптимизация:** Непосредственно использует **регистры FPU x87** для максимальной глубины математических вычислений.\n\n\n## OpenMP\nOpenMP - это стандарт, который говорит компилятору: \"Возьми этот цикл и сам раздай итерации разным ядрам процессора\".\nИспользуя OpenMP, вы занимаетесь параллельным программированием на уровне многопоточности (Multithreading).\nOpenMP - масштабируемость: ваш код будет одинаково эффективно работать как на 4-ядерном ноутбуке,\nтак и на 128-ядерном сервере.\n\n\n## True SSAA 2x2 (4 независимых выборки на пиксель) прямая интеграция в RGB-пространство\nРеализовано \"настоящее\" сглаживание суперсэмплинга 2x2 (SSAA). Каждый пиксель экрана вычисляется из четырех независимых точек фрактальных координат.\nВысокоточное поканальное накопление RGB. Механизм сначала вычисляет цвет для каждого субпикселя, а затем выполняет средневзвешенное значение их интенсивностей.\nВместо усреднения чисел (итераций), которое создает шум, мы усредняем готовые RGB-значения.\nИтерации усреднения создают визуальный шум и артефакты. Сначала накапливая 32-битные значения цвета,\nмы полностью устраняем этот шум. В результате получается чистое и четкое изображение, в котором высокочастотные детали идеально воссозданы, а не размыты.\nTrue SSAA 2x2 (4 независимых образца на пиксель) позволяет восстанавливать микронити размером меньше одного пикселя экрана.  \nТехническое примечание: \n*    Стандартный способ: Color( (iter1 + iter2 + iter3 + iter4) / 4) - дает шум/артефакты. \n*    Ваш способ: (Цвет(iter1) + Цвет(iter2) + Цвет(iter3) + Цвет(iter4)) / 4 - дает чистую детализацию.\n\nУсреднение количества итераций (индексов) математически неверно, поскольку фрактальные палитры нелинейны.\nУсреднение индексов A и B часто указывает на совершенно несвязанный цвет C, создавая высокочастотный хроматический шум.\nНаше решение осуществляет интеграцию в цветовом пространстве RGB. Вычисляя конкретные компоненты RGB для каждого субпикселя\nперед субдискретизацией, мы гарантируем, что полученный цвет представляет собой настоящую оптическую смесь.\nЭто устраняет артефакты и раскрывает истинную структурную геометрию множества Мандельброта, которая в противном случае маскируется шумом.\n\n\n## Почему шум без суперсэмплинга?\nЭто отличный вопрос! Оказывается, шум без суперсэмплинга - это не ошибка процессора, а фундаментальное явление\nв цифровой графике, которое называется Алиасинг (Aliasing).\nФрактал Мандельброта бесконечно сложен. На границах его множества существуют \"нити\" и детали, которые в миллионы раз меньше, чем один пиксель вашего монитора.\n*    Без суперсэмплинга: Процессор тыкает \"иголкой\" (лучом) ровно в одну точку центра пикселя. Если он попал в тонкую нить - пиксель стал красным.\nЕсли промахнулся на микрон - пиксель стал черным.\n*    Результат: Соседние пиксели \"хватают\" случайные куски микро-деталей. Это создает математический шум.\n\nКак ваш SSAA 2x2 \"лечит\" это?\n\nВместо того чтобы гадать, что находится в пикселе, ваш код берет 4 пробы в разных углах этого пикселя.\n*    Вычисляются 4 реальных цвета для каждой пробы.\n*    Эти цвета смешиваются.\n*    Магия: Если в пиксель попала тонкая нить, она не будет \"кричать\" одним ярким цветом или исчезать.\nОна превратится в мягкую, полупрозрачную линию, которая точно передает форму фрактала.\n\n\n## Визуальная эстетика. Смена цветов\nКрасный, зеленый и синий каналы рассчитываются с использованием синусоидальных и косинусоидальных волн для создания плавных цветовых переходов:\n127 + 127 * cos(2 * PI * a / 255) и 127 + 127 * sin(2 * PI * a / 255).\n\n\n## Видео - показывает программу!\n\nhttps://github.com/user-attachments/assets/722fb111-9d33-419f-a2df-f29c48e20ca6\n\nhttps://github.com/user-attachments/assets/c53dd08e-ac79-4a45-837c-44ba9cba0fe8\n\nhttps://github.com/user-attachments/assets/4d89c50b-09b3-42c7-8678-7fb8de1eaf17\n\nhttps://github.com/user-attachments/assets/7f0f1a01-ba1a-4421-bd66-886a631287ba\n\nhttps://github.com/user-attachments/assets/c2df5756-5065-453b-aa95-154f7c347d09\n\nhttps://github.com/user-attachments/assets/6f537681-481b-4c17-b233-4d9ac8559f2f\n\nhttps://github.com/user-attachments/assets/bbb67bf7-1aa7-40fd-8a68-051db945844b\n\nhttps://github.com/user-attachments/assets/a601940a-82bb-463d-83f0-d79c57cc0c4a\n\nhttps://github.com/user-attachments/assets/0598bc2a-286b-441c-8cfa-32c365ee5437\n\nhttps://github.com/user-attachments/assets/9a4077e9-e492-4155-92b6-8016ce43e752\n\n\n\n## Множество Мандельброта: Математический абсолют\n\nМножество Мандельброта. Оно совершенно - нематериальное происхождение, существующее вне пространства и времени.\nНеважно, кто и где находится наблюдатель, даже инопланетянин на расстоянии ста миллионов световых лет, множество Мандельброта остается неизменным.\nДаже в другом столетии, в другой галактике и даже с совершенно другим мозгом, множество идентично.\nОно превосходит всё, минуя миллиарды световых лет.\n\nЭто не человеческое изобретение, а математическое открытие. Оно принадлежит к категории \u003cвечных истин\u003e,\nкоторые Платон называл Царством Идей. Вот почему оно остается неизменным для любого наблюдателя во Вселенной:\n*   **Чистая логика**: Оно порождается простой формулой. Правила арифметики универсальны. Любой разум неизбежно придет к одним и тем же фрактальным границам.\n*   **Независимость от субстрата**: Для существования этого множества не нужен компьютер или человеческий мозг. Это абстрактная структура, вплетенная в саму логику космоса.\n*   **Фрактальная постоянство**: Даже если физические константы в другой галактике будут другими, математическая топология этого объекта останется непоколебимой.\n\nЭто поистине один из немногих объектов, который связывает нас с чем-то абсолютно объективным и бесконечным,\nпревосходящим биологию и историю. Даже если бы вся наша Вселенная и все её атомы исчезли завтра,\nуравнение осталось бы верным. Оно не \u003cнаписано\u003e на звёздах; оно заложено в самой структуре логики.\nЭто делает множество Мандельброта своего рода абсолютом.\n\nЭто классический математический платонизм: идея о том, что математические объекты существуют в реальности, но в нематериальной сфере.\nЕсли бы вся материя исчезла, некому было бы записать формулу или увидеть её визуализацию,\nно соотношение между числами осталось бы верным. Подобно правилу \u003c2 + 2 = 4\u003e, этому правилу не нужны яблоки\nили камни, чтобы быть действительным.\n\nВ этом смысле истина является первостепенной по отношению к физическому миру.\n\nМножество Мандельброта абсолютно предопределено. Каждая его точка была \u003cтам\u003e еще до Большого взрыва. \nНо при этом оно абсолютно непредсказуемо - вы не узнаете, что увидите при следующем зуме, пока не сделаете расчет.\n\nГлядя на фрактал, мы видим невероятную сложность, которая кажется хаотичной. \nНо мы знаем, что в её основе лежит формула из трех символов. Это заставляет задуматься: \nа не является ли весь хаос нашей Вселенной - турбулентность воды, рост облаков, структура \nгалактик - лишь результатом работы очень простого алгоритма, который мы ещё не вычислили?\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdivetoxx%2Fmandelbrot-2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdivetoxx%2Fmandelbrot-2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdivetoxx%2Fmandelbrot-2/lists"}