UNPKG

@prachwal/mandelbrot-generator

Version:

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

261 lines 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">&#39;electric&#39;</span><br/><span class="hl-2">};</span><br/><br/><span class="hl-0">// Użyj wersji zoptymalizowanej dla dużych obrazów</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-6">await</span><span class="hl-2"> </span><span class="hl-1">generateMandelbrotDataOptimized</span><span class="hl-2">(</span><span class="hl-7">hiResConfig</span><span class="hl-2">, </span><span class="hl-5">8</span><span class="hl-2">);</span>
</code><button type="button">Copy</button></pre>

<h2 id="struktura-projektu" class="tsd-anchor-link">Struktura projektu<a href="#struktura-projektu" 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><pre><code><span class="hl-7">mandelbrot</span><span class="hl-2">-</span><span class="hl-7">generator</span><span class="hl-2">/</span><br/><span class="hl-2">├── </span><span class="hl-7">src</span><span class="hl-2">/                  # </span><span class="hl-7">Kod</span><span class="hl-2"> </span><span class="hl-7">źródłowy</span><span class="hl-2"> </span><span class="hl-7">TypeScript</span><br/><span class="hl-2">│   ├── </span><span class="hl-7">index</span><span class="hl-2">.</span><span class="hl-7">ts</span><span class="hl-2">          # </span><span class="hl-7">Główny</span><span class="hl-2"> </span><span class="hl-7">plik</span><span class="hl-2"> </span><span class="hl-7">dla</span><span class="hl-2"> </span><span class="hl-7">Node</span><span class="hl-2">.</span><span class="hl-7">js</span><br/><span class="hl-2">│   ├── </span><span class="hl-7">mandelbrot</span><span class="hl-2">.</span><span class="hl-7">ts</span><span class="hl-2">     # </span><span class="hl-7">Algorytmy</span><span class="hl-2"> </span><span class="hl-7">Mandelbrota</span><br/><span class="hl-2">│   ├── </span><span class="hl-7">config</span><span class="hl-2">.</span><span class="hl-7">ts</span><span class="hl-2">         # </span><span class="hl-7">Konfiguracja</span><span class="hl-2"> </span><span class="hl-7">i</span><span class="hl-2"> </span><span class="hl-7">ciekawe</span><span class="hl-2"> </span><span class="hl-7">punkty</span><br/><span class="hl-2">│   ├── </span><span class="hl-7">colors</span><span class="hl-2">.</span><span class="hl-7">ts</span><span class="hl-2">         # </span><span class="hl-7">Palety</span><span class="hl-2"> </span><span class="hl-7">kolorów</span><br/><span class="hl-2">│   └── </span><span class="hl-7">types</span><span class="hl-2">.</span><span class="hl-7">ts</span><span class="hl-2">          # </span><span class="hl-7">Definicje</span><span class="hl-2"> </span><span class="hl-7">typów</span><span class="hl-2"> </span><span class="hl-7">TypeScript</span><br/><span class="hl-2">├── </span><span class="hl-7">web</span><span class="hl-2">/                  # </span><span class="hl-7">Interfejs</span><span class="hl-2"> </span><span class="hl-7">webowy</span><br/><span class="hl-2">│   ├── </span><span class="hl-7">docs</span><span class="hl-2">/             # </span><span class="hl-7">Dokumentacja</span><span class="hl-2"> </span><span class="hl-7">TypeDoc</span><br/><span class="hl-2">│   ├── </span><span class="hl-7">index</span><span class="hl-2">.</span><span class="hl-7">html</span><span class="hl-2">        # </span><span class="hl-7">Strona</span><span class="hl-2"> </span><span class="hl-7">główna</span><br/><span class="hl-2">│   ├── </span><span class="hl-7">main</span><span class="hl-2">.</span><span class="hl-7">js</span><span class="hl-2">           # </span><span class="hl-7">Kod</span><span class="hl-2"> </span><span class="hl-7">JavaScript</span><span class="hl-2"> </span><span class="hl-7">dla</span><span class="hl-2"> </span><span class="hl-7">przeglądarki</span><br/><span class="hl-2">│   └── </span><span class="hl-7">style</span><span class="hl-2">.</span><span class="hl-7">css</span><span class="hl-2">         # </span><span class="hl-7">Stylowanie</span><br/><span class="hl-2">├── </span><span class="hl-7">tests</span><span class="hl-2">/                # </span><span class="hl-7">Testy</span><span class="hl-2"> </span><span class="hl-7">jednostkowe</span><br/><span class="hl-2">│   └── </span><span class="hl-7">mandelbrot</span><span class="hl-2">.</span><span class="hl-7">test</span><span class="hl-2">.</span><span class="hl-7">ts</span><br/><span class="hl-2">├── </span><span class="hl-7">dist</span><span class="hl-2">/                 # </span><span class="hl-7">Skompilowany</span><span class="hl-2"> </span><span class="hl-7">kod</span><span class="hl-2"> </span><span class="hl-7">TypeScript</span><br/><span class="hl-2">├── </span><span class="hl-7">coverage</span><span class="hl-2">/             # </span><span class="hl-7">Raporty</span><span class="hl-2"> </span><span class="hl-7">pokrycia</span><span class="hl-2"> </span><span class="hl-7">testów</span><br/><span class="hl-2">├── </span><span class="hl-7">output</span><span class="hl-2">/               # </span><span class="hl-7">Wygenerowane</span><span class="hl-2"> </span><span class="hl-1">fraktale</span><span class="hl-2"> (</span><span class="hl-8">SVG</span><span class="hl-2">)</span><br/><span class="hl-2">├── </span><span class="hl-7">package</span><span class="hl-2">.</span><span class="hl-7">json</span><span class="hl-2">          # </span><span class="hl-7">Konfiguracja</span><span class="hl-2"> </span><span class="hl-8">NPM</span><br/><span class="hl-2">├── </span><span class="hl-7">tsconfig</span><span class="hl-2">.</span><span class="hl-7">json</span><span class="hl-2">         # </span><span class="hl-7">Konfiguracja</span><span class="hl-2"> </span><span class="hl-7">TypeScript</span><br/><span class="hl-2">├── </span><span class="hl-7">vite</span><span class="hl-2">.</span><span class="hl-7">config</span><span class="hl-2">.</span><span class="hl-7">js</span><span class="hl-2">        # </span><span class="hl-7">Konfiguracja</span><span class="hl-2"> </span><span class="hl-7">Vite</span><br/><span class="hl-2">├── </span><span class="hl-7">typedoc</span><span class="hl-2">.</span><span class="hl-7">json</span><span class="hl-2">          # </span><span class="hl-7">Konfiguracja</span><span class="hl-2"> </span><span class="hl-7">dokumentacji</span><br/><span class="hl-2">└── </span><span class="hl-8">README</span><span class="hl-2">.</span><span class="hl-7">md</span><span class="hl-2">             # </span><span class="hl-7">Ten</span><span class="hl-2"> </span><span class="hl-7">plik</span>
</code><button>Copy</button></pre>

<h2 id="rozwój-projektu" class="tsd-anchor-link">Rozwój projektu<a href="#rozwój-projektu" 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="wymagania" class="tsd-anchor-link">Wymagania<a href="#wymagania" 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>Node.js 18+</li>
<li>TypeScript 5.2+</li>
<li>Vite 7.0+</li>
</ul>
<h3 id="skrypty-deweloperskie" class="tsd-anchor-link">Skrypty deweloperskie<a href="#skrypty-deweloperskie" 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"># Budowanie</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">build</span><span class="hl-2">              </span><span class="hl-0"># Kompiluj TypeScript</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">build:watch</span><span class="hl-2">        </span><span class="hl-0"># Kompiluj z obserwowaniem</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">build:web</span><span class="hl-2">          </span><span class="hl-0"># Buduj dla web</span><br/><br/><span class="hl-0"># Rozwój</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">dev</span><span class="hl-2">                </span><span class="hl-0"># Serwer dev Vite</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">dev:watch</span><span class="hl-2">          </span><span class="hl-0"># TypeScript + Vite równolegle</span><br/><br/><span class="hl-0"># Testowanie  </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</span><span class="hl-2">               </span><span class="hl-0"># Uruchom testy</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:watch</span><span class="hl-2">         </span><span class="hl-0"># Testy z obserwowaniem</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><span class="hl-2">      </span><span class="hl-0"># Pokrycie kodu</span><br/><br/><span class="hl-0"># Dokumentacja</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><span class="hl-2">               </span><span class="hl-0"># Wygeneruj dokumentację</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><span class="hl-2">         </span><span class="hl-0"># Serwuj dokumentację</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:watch</span><span class="hl-2">         </span><span class="hl-0"># Dokumentacja z obserwowaniem</span><br/><br/><span class="hl-0"># Inne</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">clean</span><span class="hl-2">              </span><span class="hl-0"># Wyczyść wszystkie pliki build</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">examples</span><span class="hl-2">           </span><span class="hl-0"># Uruchom przykłady</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">publish:npm</span><span class="hl-2">        </span><span class="hl-0"># 🚀 Opublikuj do NPM (jedno polecenie!)</span>
</code><button type="button">Copy</button></pre>

<h3 id="🚀-publikacja-do-npm" class="tsd-anchor-link">🚀 Publikacja do NPM<a href="#🚀-publikacja-do-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><p><strong>Jedno polecenie do publikacji:</strong></p>
<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">publish:npm</span>
</code><button type="button">Copy</button></pre>

<p>To polecenie automatycznie:</p>
<ol>
<li>✅ Czyści poprzednie buildy (<code>npm run clean</code>)</li>
<li>✅ Kompiluje TypeScript (<code>npm run build</code>)</li>
<li>✅ Uruchamia wszystkie testy (<code>npm test</code>)</li>
<li>✅ Generuje dokumentację (<code>npm run docs</code>)</li>
<li>✅ Publikuje pakiet (<code>npm publish --access public</code>)</li>
</ol>
<p><strong>Wymagania przed publikacją:</strong></p>
<ul>
<li>Zalogowany do NPM: <code>npm login</code></li>
<li>Uprawnienia do @prachwal scope</li>
<li>Wersja w <code>package.json</code> zaktualizowana</li>
</ul>
<h2 id="technologie" class="tsd-anchor-link">Technologie<a href="#technologie" 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>Ten projekt wykorzystuje nowoczesny stack technologiczny:</p>
<h3 id="core" class="tsd-anchor-link">Core<a href="#core" 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><strong><a href="https://www.typescriptlang.org/">TypeScript 5.2+</a></strong> - Typowanie statyczne i nowoczesny JavaScript</li>
<li><strong><a href="https://nodejs.org/">Node.js 18+</a></strong> - Runtime JavaScript po stronie serwera</li>
<li><strong><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules">ES Modules</a></strong> - Nowoczesny system modułów</li>
</ul>
<h3 id="development" class="tsd-anchor-link">Development<a href="#development" 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><strong><a href="https://vitejs.dev/">Vite 7.0+</a></strong> - Szybki bundler i dev server</li>
<li><strong><a href="https://jestjs.io/">Jest 29.7+</a></strong> - Framework testowy</li>
<li><strong><a href="https://github.com/bcoe/c8">c8</a></strong> - Pokrycie kodu dla Node.js</li>
<li><strong><a href="https://npm.im/concurrently">Concurrently</a></strong> - Równoległe uruchamianie skryptów</li>
</ul>
<h3 id="documentation" class="tsd-anchor-link">Documentation<a href="#documentation" 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><strong><a href="https://typedoc.org/">TypeDoc</a></strong> - Generator dokumentacji z TypeScript/JSDoc</li>
<li><strong><a href="https://jsdoc.app/">JSDoc</a></strong> - Komentarze dokumentacyjne</li>
</ul>
<h3 id="quality" class="tsd-anchor-link">Quality<a href="#quality" 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><strong>100% Test Coverage</strong> - Kompletne pokrycie testami</li>
<li><strong>Strict TypeScript</strong> - Ścisłe typowanie</li>
<li><strong>ESLint Ready</strong> - Gotowe do lintingu kodu</li>
</ul>
<h2 id="api-reference" class="tsd-anchor-link">API Reference<a href="#api-reference" 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="główne-funkcje" class="tsd-anchor-link">Główne funkcje<a href="#główne-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></h3><table>
<thead>
<tr>
<th>Funkcja</th>
<th>Opis</th>
<th>Moduł</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>generateMandelbrotData()</code></td>
<td>Generuje dane obrazu fraktala</td>
<td><code>mandelbrot.ts</code></td>
</tr>
<tr>
<td><code>mandelbrotIteration()</code></td>
<td>Oblicza iteracje dla punktu</td>
<td><code>mandelbrot.ts</code></td>
</tr>
<tr>
<td><code>getColor()</code></td>
<td>Mapuje iteracje na kolor</td>
<td><code>colors.ts</code></td>
</tr>
<tr>
<td><code>calculateBounds()</code></td>
<td>Oblicza granice płaszczyzny</td>
<td><code>config.ts</code></td>
</tr>
</tbody>
</table>
<h3 id="typy-typescript" class="tsd-anchor-link">Typy TypeScript<a href="#typy-typescript" 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><table>
<thead>
<tr>
<th>Typ</th>
<th>Opis</th>
<th>Plik</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>MandelbrotConfig</code></td>
<td>Konfiguracja generowania</td>
<td><code>types.ts</code></td>
</tr>
<tr>
<td><code>RGBColor</code></td>
<td>Kolor RGB jako tupla</td>
<td><code>types.ts</code></td>
</tr>
<tr>
<td><code>PaletteType</code></td>
<td>Typ palety kolorów</td>
<td><code>types.ts</code></td>
</tr>
<tr>
<td><code>FractalBounds</code></td>
<td>Granice płaszczyzny zespolonej</td>
<td><code>types.ts</code></td>
</tr>
</tbody>
</table>
<p><strong>📖 <a href="media/API.md">Pełna dokumentacja API (Markdown)</a></strong> | <strong>🌐 <a href="media/index.html">Dokumentacja HTML</a></strong></p>
<h2 id="📦-npm-package" class="tsd-anchor-link">📦 NPM Package<a href="#📦-npm-package" 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><strong>Zainstaluj:</strong> <code>npm install @prachwal/mandelbrot-generator</code></p>
<ul>
<li>📋 <strong><a href="https://www.npmjs.com/package/@prachwal/mandelbrot-generator">NPM Registry</a></strong> - Oficjalna strona pakietu</li>
<li>📚 <strong><a href="media/API.md">API Docs (Markdown)</a></strong> - Dokumentacja w formacie Markdown</li>
<li>📊 <strong><a href="https://bundlephobia.com/package/@prachwal/mandelbrot-generator">Bundle Size</a></strong> - Analiza rozmiaru pakietu</li>
<li>🔍 <strong><a href="https://npm.graph.cool/@prachwal/mandelbrot-generator">Dependencies</a></strong> - Graf zależności</li>
<li>📈 <strong><a href="https://npm-stat.com/charts.html?package=@prachwal/mandelbrot-generator">Downloads</a></strong> - Statystyki pobrań</li>
</ul>
<h3 id="dostępne-eksporty" class="tsd-anchor-link">Dostępne eksporty<a href="#dostępne-eksporty" 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-0">// Główne funkcje generowania (legacy API - tylko Mandelbrot)</span><br/><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><span class="hl-0">// Generuj SVG jako string</span><br/><span class="hl-2">  </span><span class="hl-7">saveImageAsSVG</span><span class="hl-2">,            </span><span class="hl-0">// Zapisz SVG do pliku</span><br/><span class="hl-2">  </span><span class="hl-7">generateMandelbrotData</span><span class="hl-2">,    </span><span class="hl-0">// Generuj raw data</span><br/><span class="hl-2">  </span><span class="hl-7">mandelbrotIteration</span><span class="hl-2">        </span><span class="hl-0">// Oblicz iteracje dla punktu</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">// Nowoczesne algorytmy fraktali (zalecane)</span><br/><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><span class="hl-0">// Klasa algorytmu Mandelbrota</span><br/><span class="hl-2">  </span><span class="hl-7">JuliaFractal</span><span class="hl-2">,              </span><span class="hl-0">// Klasa algorytmu Julia Sets</span><br/><span class="hl-2">  </span><span class="hl-7">BurningShipFractal</span><span class="hl-2">,        </span><span class="hl-0">// Klasa algorytmu Burning Ship</span><br/><span class="hl-2">  </span><span class="hl-7">fractalEngine</span><span class="hl-2">              </span><span class="hl-0">// Engine do zarządzania algorytmami</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">// Konfiguracja i kolory  </span><br/><span class="hl-6">import</span><span class="hl-2"> { </span><br/><span class="hl-2">  </span><span class="hl-7">defaultConfig</span><span class="hl-2">,             </span><span class="hl-0">// Domyślna konfiguracja</span><br/><span class="hl-2">  </span><span class="hl-7">interestingPoints</span><span class="hl-2">,         </span><span class="hl-0">// Predefiniowane lokacje</span><br/><span class="hl-2">  </span><span class="hl-7">colorPalettes</span><span class="hl-2">,             </span><span class="hl-0">// Dostępne palety</span><br/><span class="hl-2">  </span><span class="hl-7">calculateBounds</span><span class="hl-2">            </span><span class="hl-0">// Oblicz granice płaszczyzny</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">// Funkcje kolorów</span><br/><span class="hl-6">import</span><span class="hl-2"> { </span><br/><span class="hl-2">  </span><span class="hl-7">getColor</span><span class="hl-2">,                  </span><span class="hl-0">// RGB dla iteracji</span><br/><span class="hl-2">  </span><span class="hl-7">rgbToHex</span><span class="hl-2">,                  </span><span class="hl-0">// RGB → Hex</span><br/><span class="hl-2">  </span><span class="hl-7">getColorHex</span><span class="hl-2">                </span><span class="hl-0">// Hex dla iteracji</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">// Typy TypeScript</span><br/><span class="hl-6">import</span><span class="hl-2"> </span><span class="hl-6">type</span><span class="hl-2"> { </span><br/><span class="hl-2">  </span><span class="hl-7">MandelbrotConfig</span><span class="hl-2">,          </span><span class="hl-0">// Legacy config (używaj FractalConfig)</span><br/><span class="hl-2">  </span><span class="hl-7">FractalConfig</span><span class="hl-2">,             </span><span class="hl-0">// Nowa uniwersalna konfiguracja</span><br/><span class="hl-2">  </span><span class="hl-7">PaletteType</span><span class="hl-2">,               </span><span class="hl-0">// Typ palety  </span><br/><span class="hl-2">  </span><span class="hl-7">RGBColor</span><span class="hl-2">,                  </span><span class="hl-0">// Kolor RGB</span><br/><span class="hl-2">  </span><span class="hl-7">Complex</span><span class="hl-2">,                   </span><span class="hl-0">// Liczba zespolona</span><br/><span class="hl-2">  </span><span class="hl-7">FractalResult</span><span class="hl-2">              </span><span class="hl-0">// Wynik iteracji fraktala</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>
</code><button type="button">Copy</button></pre>

<h2 id="licencja" class="tsd-anchor-link">Licencja<a href="#licencja" 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>MIT License - Zobacz <a href="media/LICENSE">LICENSE</a> dla szczegółów.</p>
<h2 id="autor" class="tsd-anchor-link">Autor<a href="#autor" 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>Stworzony przez <strong>Prachwal</strong> - Generator fraktala Mandelbrota w TypeScript.</p>
<hr>
<p><strong><a href="#mandelbrot-generator">⬆️ Na górę</a></strong> | <strong><a href="media/index.html">📖 Dokumentacja</a></strong> | <strong><a href="#testy">🧪 Testy</a></strong> | <strong><a href="#konfiguracja">⚙️ Konfiguracja</a></strong></p>
</div></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><a href="#mandelbrot-generator"><span>Mandelbrot <wbr/>Generator</span></a><ul><li><a href="#📦-instalacja"><span>📦 <wbr/>Instalacja</span></a></li><li><ul><li><a href="#jako-pakiet-npm-zalecane"><span>Jako pakiet <wbr/>NPM (zalecane)</span></a></li><li><a href="#lokalne-uruchomienie"><span>Lokalne uruchomienie</span></a></li></ul></li><li><a href="#✨-funkcje"><span>✨ <wbr/>Funkcje</span></a></li><li><a href="#🚀-szybki-start"><span>🚀 <wbr/>Szybki start</span></a></li><li><ul><li><a href="#użyj-jako-pakiet-npm"><span>Użyj jako pakiet <wbr/>NPM</span></a></li><li><a href="#cli-po-instalacji-globalnej"><span>CLI (po instalacji globalnej)</span></a></li></ul></li><li><a href="#💻-użycie"><span>💻 <wbr/>Użycie</span></a></li><li><ul><li><a href="#npm-package-api"><span>NPM <wbr/>Package <wbr/>API</span></a></li><li><a href="#bezpośrednie-użycie-algorytmów"><span>Bezpośrednie użycie algorytmów</span></a></li><li><a href="#nodejs-cli-lokalne-uruchomienie"><span>Node.js <wbr/>CLI (lokalne uruchomienie)</span></a></li><li><a href="#web-interface"><span>Web <wbr/>Interface</span></a></li><li><ul><li><a href="#production-test-environment-zalecane"><span>Production <wbr/>Test <wbr/>Environment (zalecane)</span></a></li><li><a href="#development-interface-lokalne-uruchomienie"><span>Development <wbr/>Interface (lokalne uruchomienie)</span></a></li></ul></li><li><a href="#dokumentacja"><span>Dokumentacja</span></a></li><li><a href="#testy"><span>Testy</span></a></li></ul></li><li><a href="#konfiguracja"><span>Konfiguracja</span></a></li><li><ul><li><a href="#dostępne-palety-kolorów"><span>Dostępne palety kolorów</span></a></li></ul></li><li><a href="#🧮-dostępne-algorytmy-fraktali"><span>🧮 <wbr/>Dostępne algorytmy fraktali</span></a></li><li><ul><li><a href="#🌀-mandelbrot-set"><span>🌀 <wbr/>Mandelbrot <wbr/>Set</span></a></li><li><a href="#🌸-julia-sets"><span>🌸 <wbr/>Julia <wbr/>Sets</span></a></li><li><a href="#🔥-burning-ship"><span>🔥 <wbr/>Burning <wbr/>Ship</span></a></li></ul></li><li><a href="#przykłady"><span>Przykłady</span></a></li><li><ul><li><a href="#klasyczny-widok-mandelbrota"><span>Klasyczny widok <wbr/>Mandelbrota</span></a></li><li><a href="#julia-sets-z-predefiniowanymi-presetami"><span>Julia <wbr/>Sets z predefiniowanymi presetami</span></a></li><li><a href="#burning-ship-fractal"><span>Burning <wbr/>Ship fractal</span></a></li><li><a href="#porównanie-wszystkich-algorytmów"><span>Porównanie wszystkich algorytmów</span></a></li><li><a href="#eksploracja-interesujących-miejsc"><span>Eksploracja interesujących miejsc</span></a></li><li><a href="#wysoka-rozdzielczość-z-optymalizacją"><span>Wysoka rozdzielczość z optymalizacją</span></a></li></ul></li><li><a href="#struktura-projektu"><span>Struktura projektu</span></a></li><li><a href="#rozwój-projektu"><span>Rozwój projektu</span></a></li><li><ul><li><a href="#wymagania"><span>Wymagania</span></a></li><li><a href="#skrypty-deweloperskie"><span>Skrypty deweloperskie</span></a></li><li><a href="#🚀-publikacja-do-npm"><span>🚀 <wbr/>Publikacja do <wbr/>NPM</span></a></li></ul></li><li><a href="#technologie"><span>Technologie</span></a></li><li><ul><li><a href="#core"><span>Core</span></a></li><li><a href="#development"><span>Development</span></a></li><li><a href="#documentation"><span>Documentation</span></a></li><li><a href="#quality"><span>Quality</span></a></li></ul></li><li><a href="#api-reference"><span>API <wbr/>Reference</span></a></li><li><ul><li><a href="#główne-funkcje"><span>Główne funkcje</span></a></li><li><a href="#typy-typescript"><span>Typy <wbr/>Type<wbr/>Script</span></a></li></ul></li><li><a href="#📦-npm-package"><span>📦 <wbr/>NPM <wbr/>Package</span></a></li><li><ul><li><a href="#dostępne-eksporty"><span>Dostępne eksporty</span></a></li></ul></li><li><a href="#licencja"><span>Licencja</span></a></li><li><a href="#autor"><span>Autor</span></a></li></ul></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="modules.html">@prachwal/mandelbrot-generator - v1.1.1</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>