UNPKG

@prachwal/mandelbrot-generator

Version:

Professional Mandelbrot fractal generator with TypeScript support, interactive web interface, and multiple output formats

129 lines (109 loc) 81 kB
<!DOCTYPE html><html class="default" lang="en" data-base="./"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>@prachwal/mandelbrot-generator - v1.1.1</title><meta name="description" content="Documentation for @prachwal/mandelbrot-generator"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="assets/style.css"/><link rel="stylesheet" href="assets/highlight.css"/><script defer src="assets/main.js"></script><script async src="assets/icons.js" id="tsd-icons-script"></script><script async src="assets/search.js" id="tsd-search-script"></script><script async src="assets/navigation.js" id="tsd-nav-script"></script><script async src="assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="index.html" class="title">@prachwal/mandelbrot-generator - v1.1.1</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><h1>@prachwal/mandelbrot-generator - v1.1.1</h1></div><div class="tsd-panel tsd-typography"><h1 id="mandelbrot-generator" class="tsd-anchor-link">Mandelbrot Generator<a href="#mandelbrot-generator" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h1><p>Professional fractal generator with TypeScript support, interactive web interface, and multiple output formats. Supports <strong>Mandelbrot Sets</strong>, <strong>Julia Sets</strong>, and <strong>Burning Ship</strong> fractals.</p> <p><a href="https://www.npmjs.com/package/@prachwal/mandelbrot-generator"><img src="https://img.shields.io/npm/v/@prachwal/mandelbrot-generator" alt="NPM Version"></a> <a href="https://www.npmjs.com/package/@prachwal/mandelbrot-generator"><img src="https://img.shields.io/npm/dm/@prachwal/mandelbrot-generator" alt="NPM Downloads"></a> <a href="https://www.typescriptlang.org/"><img src="https://img.shields.io/badge/TypeScript-5.2.2-blue" alt="TypeScript"></a> <a href="https://jestjs.io/"><img src="https://img.shields.io/badge/Jest-29.7.0-green" alt="Jest"></a> <a href="#testy"><img src="https://img.shields.io/badge/Coverage-100%25-brightgreen" alt="Coverage"></a> <a href="./web/docs/index.html"><img src="https://img.shields.io/badge/Docs-TypeDoc-blue" alt="Documentation"></a> <a href="https://vitejs.dev/"><img src="https://img.shields.io/badge/Vite-7.0.4-646CFF" alt="Vite"></a></p> <h2 id="📦-instalacja" class="tsd-anchor-link">📦 Instalacja<a href="#📦-instalacja" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><h3 id="jako-pakiet-npm-zalecane" class="tsd-anchor-link">Jako pakiet NPM (zalecane)<a href="#jako-pakiet-npm-zalecane" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><pre><code class="bash"><span class="hl-0"># Instaluj pakiet globalnie</span><br/><span class="hl-1">npm</span><span class="hl-2"> </span><span class="hl-3">install</span><span class="hl-2"> </span><span class="hl-4">-g</span><span class="hl-2"> </span><span class="hl-3">@prachwal/mandelbrot-generator</span><br/><br/><span class="hl-0"># Lub dodaj do swojego projektu</span><br/><span class="hl-1">npm</span><span class="hl-2"> </span><span class="hl-3">install</span><span class="hl-2"> </span><span class="hl-3">@prachwal/mandelbrot-generator</span> </code><button type="button">Copy</button></pre> <h3 id="lokalne-uruchomienie" class="tsd-anchor-link">Lokalne uruchomienie<a href="#lokalne-uruchomienie" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><pre><code class="bash"><span class="hl-1">git</span><span class="hl-2"> </span><span class="hl-3">clone</span><span class="hl-2"> </span><span class="hl-3">https://github.com/prachwal/mandelbrot-generator.git</span><br/><span class="hl-1">cd</span><span class="hl-2"> </span><span class="hl-3">mandelbrot-generator</span><br/><span class="hl-1">npm</span><span class="hl-2"> </span><span class="hl-3">install</span> </code><button type="button">Copy</button></pre> <h2 id="✨-funkcje" class="tsd-anchor-link">✨ Funkcje<a href="#✨-funkcje" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><ul> <li>🎨 <strong>Wieloalgorytmowe generowanie fraktali</strong>: <ul> <li>🌀 <strong>Mandelbrot Set</strong> - Klasyczny zbiór Mandelbrota z konfigurowalnymi parametrami</li> <li>🌸 <strong>Julia Sets</strong> - Zbiory Julii z predefiniowanymi presetami (smok, samolot, spirala, etc.)</li> <li>🔥 <strong>Burning Ship</strong> - Fraktal &quot;płonący statek&quot; z unikalną formułą abs(z)² + c</li> </ul> </li> <li>🔍 Konfigurowalne parametry (rozdzielczość, zakres, iteracje)</li> <li>🌈 Wielokolorowe palety dla wizualizacji</li> <li>💻 Wersja dla Node.js (zapisuje do pliku SVG)</li> <li>🌐 Wersja dla przeglądarki z interaktywnym interfejsem</li> <li>⚡ Optymalizowane obliczenia</li> <li>📚 Pełna dokumentacja TypeScript z JSDoc</li> <li>🏗️ Nowoczesny stack: TypeScript + Vite + Jest</li> <li>📦 <strong>Dostępny jako pakiet NPM</strong></li> <li>🔧 <strong>Kompletne TypeScript API</strong></li> </ul> <h2 id="🚀-szybki-start" class="tsd-anchor-link">🚀 Szybki start<a href="#🚀-szybki-start" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><h3 id="użyj-jako-pakiet-npm" class="tsd-anchor-link">Użyj jako pakiet NPM<a href="#użyj-jako-pakiet-npm" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><pre><code class="bash"><span class="hl-0"># Zainstaluj pakiet</span><br/><span class="hl-1">npm</span><span class="hl-2"> </span><span class="hl-3">install</span><span class="hl-2"> </span><span class="hl-3">@prachwal/mandelbrot-generator</span><br/><br/><span class="hl-0"># Użyj w swoim projekcie</span><br/><span class="hl-1">import</span><span class="hl-2"> </span><span class="hl-3">{</span><span class="hl-2"> </span><span class="hl-3">generateMandelbrotSVG,</span><span class="hl-2"> </span><span class="hl-3">defaultConfig</span><span class="hl-2"> </span><span class="hl-3">}</span><span class="hl-2"> </span><span class="hl-3">from</span><span class="hl-2"> </span><span class="hl-3">&#39;@prachwal/mandelbrot-generator&#39;</span><span class="hl-2">;</span><br/><br/><span class="hl-1">const</span><span class="hl-2"> </span><span class="hl-3">svg</span><span class="hl-2"> </span><span class="hl-3">=</span><span class="hl-2"> </span><span class="hl-3">generateMandelbrotSVG</span><span class="hl-2">({</span><br/><span class="hl-2"> </span><span class="hl-1">..</span><span class="hl-3">.defaultConfig,</span><br/><span class="hl-2"> </span><span class="hl-1">width:</span><span class="hl-2"> </span><span class="hl-3">800,</span><br/><span class="hl-2"> </span><span class="hl-1">height:</span><span class="hl-2"> </span><span class="hl-3">600,</span><br/><span class="hl-2"> </span><span class="hl-1">colorPalette:</span><span class="hl-2"> </span><span class="hl-3">&#39;fire&#39;</span><br/><span class="hl-2">});</span><br/><br/><span class="hl-1">console.log(</span><span class="hl-1">&#39;Generated SVG:&#39;</span><span class="hl-1">,</span><span class="hl-2"> </span><span class="hl-3">svg.length,</span><span class="hl-2"> </span><span class="hl-3">&#39;characters&#39;</span><span class="hl-2">);</span> </code><button type="button">Copy</button></pre> <h3 id="cli-po-instalacji-globalnej" class="tsd-anchor-link">CLI (po instalacji globalnej)<a href="#cli-po-instalacji-globalnej" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><pre><code class="bash"><span class="hl-0"># Instaluj globalnie</span><br/><span class="hl-1">npm</span><span class="hl-2"> </span><span class="hl-3">install</span><span class="hl-2"> </span><span class="hl-4">-g</span><span class="hl-2"> </span><span class="hl-3">@prachwal/mandelbrot-generator</span><br/><br/><span class="hl-0"># Generuj fractal</span><br/><span class="hl-1">mandelbrot-generator</span><span class="hl-2"> </span><span class="hl-4">--width</span><span class="hl-2"> </span><span class="hl-5">1920</span><span class="hl-2"> </span><span class="hl-4">--height</span><span class="hl-2"> </span><span class="hl-5">1080</span><span class="hl-2"> </span><span class="hl-4">--iterations</span><span class="hl-2"> </span><span class="hl-5">256</span> </code><button type="button">Copy</button></pre> <h2 id="💻-użycie" class="tsd-anchor-link">💻 Użycie<a href="#💻-użycie" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><h3 id="npm-package-api" class="tsd-anchor-link">NPM Package API<a href="#npm-package-api" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><pre><code class="typescript"><span class="hl-6">import</span><span class="hl-2"> { </span><br/><span class="hl-2"> </span><span class="hl-7">generateMandelbrotSVG</span><span class="hl-2">, </span><br/><span class="hl-2"> </span><span class="hl-7">saveImageAsSVG</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">defaultConfig</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">interestingPoints</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-6">type</span><span class="hl-2"> </span><span class="hl-7">MandelbrotConfig</span><span class="hl-2"> </span><br/><span class="hl-2">} </span><span class="hl-6">from</span><span class="hl-2"> </span><span class="hl-3">&#39;@prachwal/mandelbrot-generator&#39;</span><span class="hl-2">;</span><br/><br/><span class="hl-0">// Szybkie generowanie Mandelbrota</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">svg</span><span class="hl-2"> = </span><span class="hl-1">generateMandelbrotSVG</span><span class="hl-2">(</span><span class="hl-7">defaultConfig</span><span class="hl-2">);</span><br/><br/><span class="hl-0">// Z customową konfiguracją</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">config</span><span class="hl-2">: </span><span class="hl-9">MandelbrotConfig</span><span class="hl-2"> = {</span><br/><span class="hl-2"> </span><span class="hl-7">width:</span><span class="hl-2"> </span><span class="hl-5">1200</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">height:</span><span class="hl-2"> </span><span class="hl-5">800</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">maxIterations:</span><span class="hl-2"> </span><span class="hl-5">256</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">centerX:</span><span class="hl-2"> -</span><span class="hl-5">0.7269</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">centerY:</span><span class="hl-2"> </span><span class="hl-5">0.1889</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">zoom:</span><span class="hl-2"> </span><span class="hl-5">100</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">colorPalette:</span><span class="hl-2"> </span><span class="hl-3">&#39;fire&#39;</span><br/><span class="hl-2">};</span><br/><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">customSvg</span><span class="hl-2"> = </span><span class="hl-1">generateMandelbrotSVG</span><span class="hl-2">(</span><span class="hl-7">config</span><span class="hl-2">);</span><br/><br/><span class="hl-0">// Zapisz do pliku</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">outputPath</span><span class="hl-2"> = </span><span class="hl-1">saveImageAsSVG</span><span class="hl-2">(</span><span class="hl-7">config</span><span class="hl-2">, </span><span class="hl-3">&#39;my-fractal.svg&#39;</span><span class="hl-2">);</span><br/><span class="hl-7">console</span><span class="hl-2">.</span><span class="hl-1">log</span><span class="hl-2">(</span><span class="hl-3">`Saved to: </span><span class="hl-4">${</span><span class="hl-7">outputPath</span><span class="hl-4">}</span><span class="hl-3">`</span><span class="hl-2">);</span><br/><br/><span class="hl-0">// Użyj predefiniowanych lokacji</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">elephantSvg</span><span class="hl-2"> = </span><span class="hl-1">generateMandelbrotSVG</span><span class="hl-2">({</span><br/><span class="hl-2"> ...</span><span class="hl-7">defaultConfig</span><span class="hl-2">,</span><br/><span class="hl-2"> ...</span><span class="hl-7">interestingPoints</span><span class="hl-2">.</span><span class="hl-7">elephant</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">maxIterations:</span><span class="hl-2"> </span><span class="hl-5">512</span><br/><span class="hl-2">});</span> </code><button type="button">Copy</button></pre> <h3 id="bezpośrednie-użycie-algorytmów" class="tsd-anchor-link">Bezpośrednie użycie algorytmów<a href="#bezpośrednie-użycie-algorytmów" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><pre><code class="typescript"><span class="hl-6">import</span><span class="hl-2"> { </span><br/><span class="hl-2"> </span><span class="hl-7">MandelbrotFractal</span><span class="hl-2">, </span><br/><span class="hl-2"> </span><span class="hl-7">JuliaFractal</span><span class="hl-2">, </span><br/><span class="hl-2"> </span><span class="hl-7">BurningShipFractal</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">fractalEngine</span><span class="hl-2"> </span><br/><span class="hl-2">} </span><span class="hl-6">from</span><span class="hl-2"> </span><span class="hl-3">&#39;@prachwal/mandelbrot-generator&#39;</span><span class="hl-2">;</span><br/><br/><span class="hl-0">// Użyj konkretnego algorytmu</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">mandelbrot</span><span class="hl-2"> = </span><span class="hl-4">new</span><span class="hl-2"> </span><span class="hl-1">MandelbrotFractal</span><span class="hl-2">();</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">julia</span><span class="hl-2"> = </span><span class="hl-4">new</span><span class="hl-2"> </span><span class="hl-1">JuliaFractal</span><span class="hl-2">();</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">burningShip</span><span class="hl-2"> = </span><span class="hl-4">new</span><span class="hl-2"> </span><span class="hl-1">BurningShipFractal</span><span class="hl-2">();</span><br/><br/><span class="hl-0">// Lub użyj FractalEngine do zarządzania algorytmami</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">availableAlgorithms</span><span class="hl-2"> = </span><span class="hl-7">fractalEngine</span><span class="hl-2">.</span><span class="hl-1">getAllAlgorithms</span><span class="hl-2">();</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">juliaAlgorithm</span><span class="hl-2"> = </span><span class="hl-7">fractalEngine</span><span class="hl-2">.</span><span class="hl-1">getAlgorithm</span><span class="hl-2">(</span><span class="hl-3">&#39;julia&#39;</span><span class="hl-2">);</span><br/><br/><span class="hl-0">// Generuj z dowolnym algorytmem</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">config</span><span class="hl-2"> = </span><span class="hl-7">julia</span><span class="hl-2">.</span><span class="hl-7">defaultConfig</span><span class="hl-2">;</span><br/><span class="hl-7">config</span><span class="hl-2">.</span><span class="hl-7">juliaC</span><span class="hl-2"> = </span><span class="hl-7">JuliaFractal</span><span class="hl-2">.</span><span class="hl-1">getPresets</span><span class="hl-2">().</span><span class="hl-7">dragon</span><span class="hl-2">;</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">imageData</span><span class="hl-2"> = </span><span class="hl-7">julia</span><span class="hl-2">.</span><span class="hl-1">generateData</span><span class="hl-2">(</span><span class="hl-7">config</span><span class="hl-2">);</span> </code><button type="button">Copy</button></pre> <h3 id="nodejs-cli-lokalne-uruchomienie" class="tsd-anchor-link">Node.js CLI (lokalne uruchomienie)<a href="#nodejs-cli-lokalne-uruchomienie" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><pre><code class="bash"><span class="hl-1">npm</span><span class="hl-2"> </span><span class="hl-3">start</span> </code><button type="button">Copy</button></pre> <p>Wygeneruje plik <code>mandelbrot.svg</code> w folderze <code>output/</code>.</p> <p><strong>Uwaga:</strong> Wersja Node.js generuje pliki SVG zamiast PNG aby uniknąć problemów z zależnościami systemowymi. SVG oferuje skalowalne grafiki wektorowe idealnie nadające się do wizualizacji fraktali.</p> <h3 id="web-interface" class="tsd-anchor-link">Web Interface<a href="#web-interface" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><h4 id="production-test-environment-zalecane" class="tsd-anchor-link">Production Test Environment (zalecane)<a href="#production-test-environment-zalecane" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="bash"><span class="hl-1">cd</span><span class="hl-2"> </span><span class="hl-3">test_web</span><br/><span class="hl-1">npm</span><span class="hl-2"> </span><span class="hl-3">install</span><br/><span class="hl-1">npm</span><span class="hl-2"> </span><span class="hl-3">run</span><span class="hl-2"> </span><span class="hl-3">serve</span> </code><button type="button">Copy</button></pre> <p>Otwórz <a href="http://localhost:8080">http://localhost:8080</a> - czyste środowisko testowe używające biblioteki jako zależności npm.</p> <h4 id="development-interface-lokalne-uruchomienie" class="tsd-anchor-link">Development Interface (lokalne uruchomienie)<a href="#development-interface-lokalne-uruchomienie" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="bash"><span class="hl-1">npm</span><span class="hl-2"> </span><span class="hl-3">run</span><span class="hl-2"> </span><span class="hl-3">serve</span><span class="hl-2"> </span><span class="hl-0"># uruchamia z głównego folderu</span> </code><button type="button">Copy</button></pre> <p>Następnie otwórz <a href="http://localhost:8081">http://localhost:8081</a> w przeglądarce.</p> <p><strong>Różnice:</strong></p> <ul> <li><code>test_web/</code> - Czyste środowisko używające opublikowanej biblioteki</li> <li><code>web/</code> - Development interface z mieszanym kodem biblioteki/aplikacji</li> </ul> <h3 id="dokumentacja" class="tsd-anchor-link">Dokumentacja<a href="#dokumentacja" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>Pełna dokumentacja API jest dostępna w formacie TypeDoc:</p> <pre><code class="bash"><span class="hl-0"># Wygeneruj dokumentację HTML</span><br/><span class="hl-1">npm</span><span class="hl-2"> </span><span class="hl-3">run</span><span class="hl-2"> </span><span class="hl-3">docs</span><br/><br/><span class="hl-0"># Wygeneruj dokumentację Markdown </span><br/><span class="hl-1">npm</span><span class="hl-2"> </span><span class="hl-3">run</span><span class="hl-2"> </span><span class="hl-3">docs:update-md</span><br/><br/><span class="hl-0"># Uruchom serwer dokumentacji HTML</span><br/><span class="hl-1">npm</span><span class="hl-2"> </span><span class="hl-3">run</span><span class="hl-2"> </span><span class="hl-3">docs:serve</span> </code><button type="button">Copy</button></pre> <p>Dokumentacja obejmuje:</p> <ul> <li><strong><a href="media/API.md">📚 API Reference (Markdown)</a></strong> - Dokumentacja w formacie Markdown</li> <li><strong><a href="media/index.html">🌐 API Reference (HTML)</a></strong> - Kompletne API z przykładami</li> <li><strong><a href="media/modules.html">📋 Moduły TypeScript</a></strong> - Szczegóły wszystkich modułów</li> <li><strong><a href="media/interfaces">🔧 Typy i interfejsy</a></strong> - Definicje typów TypeScript</li> <li><strong><a href="media/functions">⚡ Funkcje</a></strong> - Szczegółowe opisy funkcji z przykładami</li> </ul> <p><strong>📖 <a href="media/API.md">Zobacz dokumentację Markdown</a></strong> | <strong>🌐 <a href="media/index.html">Zobacz dokumentację HTML</a></strong></p> <h3 id="testy" class="tsd-anchor-link">Testy<a href="#testy" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><pre><code class="bash"><span class="hl-0"># Uruchom wszystkie testy</span><br/><span class="hl-1">npm</span><span class="hl-2"> </span><span class="hl-3">test</span><br/><br/><span class="hl-0"># Uruchom testy z pokryciem kodu</span><br/><span class="hl-1">npm</span><span class="hl-2"> </span><span class="hl-3">run</span><span class="hl-2"> </span><span class="hl-3">test:coverage</span><br/><br/><span class="hl-0"># Wygeneruj raport HTML pokrycia</span><br/><span class="hl-1">npm</span><span class="hl-2"> </span><span class="hl-3">run</span><span class="hl-2"> </span><span class="hl-3">test:coverage-report</span> </code><button type="button">Copy</button></pre> <p>Projekt ma <strong>100% pokrycie kodu</strong> dla głównego modułu <code>mandelbrot.js</code>.</p> <h2 id="konfiguracja" class="tsd-anchor-link">Konfiguracja<a href="#konfiguracja" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p>Możesz dostosować parametry generowania z pełnym typowaniem TypeScript:</p> <pre><code class="typescript"><span class="hl-6">import</span><span class="hl-2"> { </span><span class="hl-7">MandelbrotConfig</span><span class="hl-2"> } </span><span class="hl-6">from</span><span class="hl-2"> </span><span class="hl-3">&#39;./src/types.js&#39;</span><span class="hl-2">;</span><br/><span class="hl-6">import</span><span class="hl-2"> { </span><span class="hl-7">defaultConfig</span><span class="hl-2"> } </span><span class="hl-6">from</span><span class="hl-2"> </span><span class="hl-3">&#39;./src/config.js&#39;</span><span class="hl-2">;</span><br/><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">config</span><span class="hl-2">: </span><span class="hl-9">MandelbrotConfig</span><span class="hl-2"> = {</span><br/><span class="hl-2"> ...</span><span class="hl-7">defaultConfig</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">width:</span><span class="hl-2"> </span><span class="hl-5">1920</span><span class="hl-2">, </span><span class="hl-0">// Rozdzielczość X</span><br/><span class="hl-2"> </span><span class="hl-7">height:</span><span class="hl-2"> </span><span class="hl-5">1080</span><span class="hl-2">, </span><span class="hl-0">// Rozdzielczość Y</span><br/><span class="hl-2"> </span><span class="hl-7">maxIterations:</span><span class="hl-2"> </span><span class="hl-5">256</span><span class="hl-2">, </span><span class="hl-0">// Maksymalne iteracje</span><br/><span class="hl-2"> </span><span class="hl-7">zoom:</span><span class="hl-2"> </span><span class="hl-5">100</span><span class="hl-2">, </span><span class="hl-0">// Poziom powiększenia</span><br/><span class="hl-2"> </span><span class="hl-7">centerX:</span><span class="hl-2"> -</span><span class="hl-5">0.7269</span><span class="hl-2">, </span><span class="hl-0">// Centrum X (rzeczywiste)</span><br/><span class="hl-2"> </span><span class="hl-7">centerY:</span><span class="hl-2"> </span><span class="hl-5">0.1889</span><span class="hl-2">, </span><span class="hl-0">// Centrum Y (urojone)</span><br/><span class="hl-2"> </span><span class="hl-7">colorPalette:</span><span class="hl-2"> </span><span class="hl-3">&#39;fire&#39;</span><span class="hl-2"> </span><span class="hl-0">// Paleta kolorów</span><br/><span class="hl-2">};</span> </code><button type="button">Copy</button></pre> <h3 id="dostępne-palety-kolorów" class="tsd-anchor-link">Dostępne palety kolorów<a href="#dostępne-palety-kolorów" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><ul> <li><code>rainbow</code> - 🌈 Kolorowa tęcza (domyślna)</li> <li><code>fire</code> - 🔥 Ogień (czerwień, pomarańcz, żółć)</li> <li><code>cool</code> - ❄️ Chłodne (niebieskie, zielone)</li> <li><code>classic</code> - ⚫ Klasyczne (czarno-białe)</li> <li><code>hot</code> - 🌋 Gorące (intensywne czerwienie)</li> <li><code>electric</code> - ⚡ Elektryczne (neonowe)</li> <li><code>ocean</code> - 🌊 Ocean (głębokie niebieskie)</li> <li><code>sunset</code> - 🌅 Zachód słońca (ciepłe kolory)</li> </ul> <h2 id="🧮-dostępne-algorytmy-fraktali" class="tsd-anchor-link">🧮 Dostępne algorytmy fraktali<a href="#🧮-dostępne-algorytmy-fraktali" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><h3 id="🌀-mandelbrot-set" class="tsd-anchor-link">🌀 Mandelbrot Set<a href="#🌀-mandelbrot-set" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>Klasyczny zbiór Mandelbrota z formułą <code>z_{n+1} = z_n² + c</code>, gdzie <code>z_0 = 0</code>.</p> <pre><code class="typescript"><span class="hl-6">import</span><span class="hl-2"> { </span><span class="hl-7">MandelbrotFractal</span><span class="hl-2"> } </span><span class="hl-6">from</span><span class="hl-2"> </span><span class="hl-3">&#39;@prachwal/mandelbrot-generator&#39;</span><span class="hl-2">;</span><br/><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">mandelbrot</span><span class="hl-2"> = </span><span class="hl-4">new</span><span class="hl-2"> </span><span class="hl-1">MandelbrotFractal</span><span class="hl-2">();</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">config</span><span class="hl-2"> = </span><span class="hl-7">mandelbrot</span><span class="hl-2">.</span><span class="hl-7">defaultConfig</span><span class="hl-2">;</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">imageData</span><span class="hl-2"> = </span><span class="hl-7">mandelbrot</span><span class="hl-2">.</span><span class="hl-1">generateData</span><span class="hl-2">(</span><span class="hl-7">config</span><span class="hl-2">);</span> </code><button type="button">Copy</button></pre> <h3 id="🌸-julia-sets" class="tsd-anchor-link">🌸 Julia Sets<a href="#🌸-julia-sets" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>Zbiory Julii z formułą <code>z_{n+1} = z_n² + c</code>, gdzie <code>z_0 = point</code> i <code>c</code> jest stałą.</p> <pre><code class="typescript"><span class="hl-6">import</span><span class="hl-2"> { </span><span class="hl-7">JuliaFractal</span><span class="hl-2"> } </span><span class="hl-6">from</span><span class="hl-2"> </span><span class="hl-3">&#39;@prachwal/mandelbrot-generator&#39;</span><span class="hl-2">;</span><br/><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">julia</span><span class="hl-2"> = </span><span class="hl-4">new</span><span class="hl-2"> </span><span class="hl-1">JuliaFractal</span><span class="hl-2">();</span><br/><br/><span class="hl-0">// Użyj predefiniowanego presetu</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">presets</span><span class="hl-2"> = </span><span class="hl-7">JuliaFractal</span><span class="hl-2">.</span><span class="hl-1">getPresets</span><span class="hl-2">();</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">config</span><span class="hl-2"> = {</span><br/><span class="hl-2"> ...</span><span class="hl-7">julia</span><span class="hl-2">.</span><span class="hl-7">defaultConfig</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">juliaC:</span><span class="hl-2"> </span><span class="hl-7">presets</span><span class="hl-2">.</span><span class="hl-7">dragon</span><span class="hl-2"> </span><span class="hl-0">// { real: -0.7269, imag: 0.1889 }</span><br/><span class="hl-2">};</span><br/><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">imageData</span><span class="hl-2"> = </span><span class="hl-7">julia</span><span class="hl-2">.</span><span class="hl-1">generateData</span><span class="hl-2">(</span><span class="hl-7">config</span><span class="hl-2">);</span> </code><button type="button">Copy</button></pre> <p><strong>Dostępne presety Julia Sets:</strong></p> <ul> <li><code>dragon</code> - Smok Julia (-0.7269, 0.1889)</li> <li><code>airplane</code> - Samolot (-0.75, 0.11)</li> <li><code>spiral</code> - Spirala (-0.4, 0.6)</li> <li><code>dendrite</code> - Dendryt (0, 1)</li> <li><code>rabbit</code> - Królik (-0.123, 0.745)</li> </ul> <h3 id="🔥-burning-ship" class="tsd-anchor-link">🔥 Burning Ship<a href="#🔥-burning-ship" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>Fraktal &quot;płonący statek&quot; z formułą <code>z_{n+1} = (abs(z.real) + i*abs(z.imag))² + c</code>.</p> <pre><code class="typescript"><span class="hl-6">import</span><span class="hl-2"> { </span><span class="hl-7">BurningShipFractal</span><span class="hl-2"> } </span><span class="hl-6">from</span><span class="hl-2"> </span><span class="hl-3">&#39;@prachwal/mandelbrot-generator&#39;</span><span class="hl-2">;</span><br/><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">burningShip</span><span class="hl-2"> = </span><span class="hl-4">new</span><span class="hl-2"> </span><span class="hl-1">BurningShipFractal</span><span class="hl-2">();</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">config</span><span class="hl-2"> = {</span><br/><span class="hl-2"> ...</span><span class="hl-7">burningShip</span><span class="hl-2">.</span><span class="hl-7">defaultConfig</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">centerX:</span><span class="hl-2"> -</span><span class="hl-5">0.5</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">centerY:</span><span class="hl-2"> -</span><span class="hl-5">0.6</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">colorPalette:</span><span class="hl-2"> </span><span class="hl-3">&#39;fire&#39;</span><br/><span class="hl-2">};</span><br/><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">imageData</span><span class="hl-2"> = </span><span class="hl-7">burningShip</span><span class="hl-2">.</span><span class="hl-1">generateData</span><span class="hl-2">(</span><span class="hl-7">config</span><span class="hl-2">);</span> </code><button type="button">Copy</button></pre> <h2 id="przykłady" class="tsd-anchor-link">Przykłady<a href="#przykłady" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><h3 id="klasyczny-widok-mandelbrota" class="tsd-anchor-link">Klasyczny widok Mandelbrota<a href="#klasyczny-widok-mandelbrota" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><pre><code class="typescript"><span class="hl-6">import</span><span class="hl-2"> { </span><span class="hl-7">generateMandelbrotData</span><span class="hl-2"> } </span><span class="hl-6">from</span><span class="hl-2"> </span><span class="hl-3">&#39;./src/mandelbrot.js&#39;</span><span class="hl-2">;</span><br/><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">config</span><span class="hl-2">: </span><span class="hl-9">MandelbrotConfig</span><span class="hl-2"> = {</span><br/><span class="hl-2"> </span><span class="hl-7">width:</span><span class="hl-2"> </span><span class="hl-5">800</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">height:</span><span class="hl-2"> </span><span class="hl-5">600</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">maxIterations:</span><span class="hl-2"> </span><span class="hl-5">100</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">escapeRadius:</span><span class="hl-2"> </span><span class="hl-5">2</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">zoom:</span><span class="hl-2"> </span><span class="hl-5">1</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">centerX:</span><span class="hl-2"> -</span><span class="hl-5">0.5</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">centerY:</span><span class="hl-2"> </span><span class="hl-5">0</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">colorPalette:</span><span class="hl-2"> </span><span class="hl-3">&#39;rainbow&#39;</span><br/><span class="hl-2">};</span><br/><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">imageData</span><span class="hl-2"> = </span><span class="hl-1">generateMandelbrotData</span><span class="hl-2">(</span><span class="hl-7">config</span><span class="hl-2">);</span> </code><button type="button">Copy</button></pre> <h3 id="julia-sets-z-predefiniowanymi-presetami" class="tsd-anchor-link">Julia Sets z predefiniowanymi presetami<a href="#julia-sets-z-predefiniowanymi-presetami" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><pre><code class="typescript"><span class="hl-6">import</span><span class="hl-2"> { </span><span class="hl-7">JuliaFractal</span><span class="hl-2"> } </span><span class="hl-6">from</span><span class="hl-2"> </span><span class="hl-3">&#39;@prachwal/mandelbrot-generator&#39;</span><span class="hl-2">;</span><br/><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">julia</span><span class="hl-2"> = </span><span class="hl-4">new</span><span class="hl-2"> </span><span class="hl-1">JuliaFractal</span><span class="hl-2">();</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">presets</span><span class="hl-2"> = </span><span class="hl-7">JuliaFractal</span><span class="hl-2">.</span><span class="hl-1">getPresets</span><span class="hl-2">();</span><br/><br/><span class="hl-0">// Smok Julia</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">dragonConfig</span><span class="hl-2"> = {</span><br/><span class="hl-2"> ...</span><span class="hl-7">julia</span><span class="hl-2">.</span><span class="hl-7">defaultConfig</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">juliaC:</span><span class="hl-2"> </span><span class="hl-7">presets</span><span class="hl-2">.</span><span class="hl-7">dragon</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">maxIterations:</span><span class="hl-2"> </span><span class="hl-5">256</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">colorPalette:</span><span class="hl-2"> </span><span class="hl-3">&#39;fire&#39;</span><br/><span class="hl-2">};</span><br/><br/><span class="hl-0">// Samolot Julia</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">airplaneConfig</span><span class="hl-2"> = {</span><br/><span class="hl-2"> ...</span><span class="hl-7">julia</span><span class="hl-2">.</span><span class="hl-7">defaultConfig</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">juliaC:</span><span class="hl-2"> </span><span class="hl-7">presets</span><span class="hl-2">.</span><span class="hl-7">airplane</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">maxIterations:</span><span class="hl-2"> </span><span class="hl-5">512</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">colorPalette:</span><span class="hl-2"> </span><span class="hl-3">&#39;cool&#39;</span><br/><span class="hl-2">};</span><br/><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">dragonData</span><span class="hl-2"> = </span><span class="hl-7">julia</span><span class="hl-2">.</span><span class="hl-1">generateData</span><span class="hl-2">(</span><span class="hl-7">dragonConfig</span><span class="hl-2">);</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">airplaneData</span><span class="hl-2"> = </span><span class="hl-7">julia</span><span class="hl-2">.</span><span class="hl-1">generateData</span><span class="hl-2">(</span><span class="hl-7">airplaneConfig</span><span class="hl-2">);</span> </code><button type="button">Copy</button></pre> <h3 id="burning-ship-fractal" class="tsd-anchor-link">Burning Ship fractal<a href="#burning-ship-fractal" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><pre><code class="typescript"><span class="hl-6">import</span><span class="hl-2"> { </span><span class="hl-7">BurningShipFractal</span><span class="hl-2"> } </span><span class="hl-6">from</span><span class="hl-2"> </span><span class="hl-3">&#39;@prachwal/mandelbrot-generator&#39;</span><span class="hl-2">;</span><br/><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">burningShip</span><span class="hl-2"> = </span><span class="hl-4">new</span><span class="hl-2"> </span><span class="hl-1">BurningShipFractal</span><span class="hl-2">();</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">config</span><span class="hl-2"> = {</span><br/><span class="hl-2"> ...</span><span class="hl-7">burningShip</span><span class="hl-2">.</span><span class="hl-7">defaultConfig</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">width:</span><span class="hl-2"> </span><span class="hl-5">1200</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">height:</span><span class="hl-2"> </span><span class="hl-5">800</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">centerX:</span><span class="hl-2"> -</span><span class="hl-5">0.5</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">centerY:</span><span class="hl-2"> -</span><span class="hl-5">0.6</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">zoom:</span><span class="hl-2"> </span><span class="hl-5">2</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">maxIterations:</span><span class="hl-2"> </span><span class="hl-5">200</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">colorPalette:</span><span class="hl-2"> </span><span class="hl-3">&#39;fire&#39;</span><br/><span class="hl-2">};</span><br/><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">imageData</span><span class="hl-2"> = </span><span class="hl-7">burningShip</span><span class="hl-2">.</span><span class="hl-1">generateData</span><span class="hl-2">(</span><span class="hl-7">config</span><span class="hl-2">);</span> </code><button type="button">Copy</button></pre> <h3 id="porównanie-wszystkich-algorytmów" class="tsd-anchor-link">Porównanie wszystkich algorytmów<a href="#porównanie-wszystkich-algorytmów" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><pre><code class="typescript"><span class="hl-6">import</span><span class="hl-2"> { </span><span class="hl-7">fractalEngine</span><span class="hl-2"> } </span><span class="hl-6">from</span><span class="hl-2"> </span><span class="hl-3">&#39;@prachwal/mandelbrot-generator&#39;</span><span class="hl-2">;</span><br/><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">algorithms</span><span class="hl-2"> = </span><span class="hl-7">fractalEngine</span><span class="hl-2">.</span><span class="hl-1">getAllAlgorithms</span><span class="hl-2">();</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">baseConfig</span><span class="hl-2"> = {</span><br/><span class="hl-2"> </span><span class="hl-7">width:</span><span class="hl-2"> </span><span class="hl-5">400</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">height:</span><span class="hl-2"> </span><span class="hl-5">400</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">maxIterations:</span><span class="hl-2"> </span><span class="hl-5">100</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">colorPalette:</span><span class="hl-2"> </span><span class="hl-3">&#39;rainbow&#39;</span><br/><span class="hl-2">};</span><br/><br/><span class="hl-0">// Generuj ten sam obszar różnymi algorytmami</span><br/><span class="hl-7">algorithms</span><span class="hl-2">.</span><span class="hl-1">forEach</span><span class="hl-2">(</span><span class="hl-7">algo</span><span class="hl-2"> </span><span class="hl-4">=&gt;</span><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">config</span><span class="hl-2"> = { ...</span><span class="hl-7">algo</span><span class="hl-2">.</span><span class="hl-7">defaultConfig</span><span class="hl-2">, ...</span><span class="hl-7">baseConfig</span><span class="hl-2"> };</span><br/><span class="hl-2"> </span><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">imageData</span><span class="hl-2"> = </span><span class="hl-7">algo</span><span class="hl-2">.</span><span class="hl-1">generateData</span><span class="hl-2">(</span><span class="hl-7">config</span><span class="hl-2">);</span><br/><span class="hl-2"> </span><span class="hl-7">console</span><span class="hl-2">.</span><span class="hl-1">log</span><span class="hl-2">(</span><span class="hl-3">`Generated </span><span class="hl-4">${</span><span class="hl-7">algo</span><span class="hl-10">.</span><span class="hl-7">name</span><span class="hl-4">}</span><span class="hl-3"> fractal`</span><span class="hl-2">);</span><br/><span class="hl-2">});</span> </code><button type="button">Copy</button></pre> <h3 id="eksploracja-interesujących-miejsc" class="tsd-anchor-link">Eksploracja interesujących miejsc<a href="#eksploracja-interesujących-miejsc" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><pre><code class="typescript"><span class="hl-6">import</span><span class="hl-2"> { </span><span class="hl-7">interestingPoints</span><span class="hl-2"> } </span><span class="hl-6">from</span><span class="hl-2"> </span><span class="hl-3">&#39;./src/config.js&#39;</span><span class="hl-2">;</span><br/><br/><span class="hl-0">// Dolina słoni - słynne miejsce w zbiorze Mandelbrota</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">elephantConfig</span><span class="hl-2">: </span><span class="hl-9">MandelbrotConfig</span><span class="hl-2"> = {</span><br/><span class="hl-2"> ...</span><span class="hl-7">defaultConfig</span><span class="hl-2">,</span><br/><span class="hl-2"> ...</span><span class="hl-7">interestingPoints</span><span class="hl-2">.</span><span class="hl-7">elephant</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">maxIterations:</span><span class="hl-2"> </span><span class="hl-5">256</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">colorPalette:</span><span class="hl-2"> </span><span class="hl-3">&#39;fire&#39;</span><br/><span class="hl-2">};</span><br/><br/><span class="hl-0">// Wzory koników morskich</span><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">seahorseConfig</span><span class="hl-2">: </span><span class="hl-9">MandelbrotConfig</span><span class="hl-2"> = {</span><br/><span class="hl-2"> ...</span><span class="hl-7">defaultConfig</span><span class="hl-2">,</span><br/><span class="hl-2"> ...</span><span class="hl-7">interestingPoints</span><span class="hl-2">.</span><span class="hl-7">seahorse</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">maxIterations:</span><span class="hl-2"> </span><span class="hl-5">512</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">colorPalette:</span><span class="hl-2"> </span><span class="hl-3">&#39;ocean&#39;</span><br/><span class="hl-2">};</span> </code><button type="button">Copy</button></pre> <h3 id="wysoka-rozdzielczość-z-optymalizacją" class="tsd-anchor-link">Wysoka rozdzielczość z optymalizacją<a href="#wysoka-rozdzielczość-z-optymalizacją" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><pre><code class="typescript"><span class="hl-6">import</span><span class="hl-2"> { </span><span class="hl-7">generateMandelbrotDataOptimized</span><span class="hl-2"> } </span><span class="hl-6">from</span><span class="hl-2"> </span><span class="hl-3">&#39;./src/mandelbrot.js&#39;</span><span class="hl-2">;</span><br/><br/><span class="hl-4">const</span><span class="hl-2"> </span><span class="hl-8">hiResConfig</span><span class="hl-2">: </span><span class="hl-9">MandelbrotConfig</span><span class="hl-2"> = {</span><br/><span class="hl-2"> </span><span class="hl-7">width:</span><span class="hl-2"> </span><span class="hl-5">3840</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">height:</span><span class="hl-2"> </span><span class="hl-5">2160</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">maxIterations:</span><span class="hl-2"> </span><span class="hl-5">1000</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">zoom:</span><span class="hl-2"> </span><span class="hl-5">1000</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">centerX:</span><span class="hl-2"> -</span><span class="hl-5">0.7269</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">centerY:</span><span class="hl-2"> </span><span class="hl-5">0.1889</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">colorPalette:</span><span class="hl-2"> </span><span class="hl-3"