
Security News
Feross on TBPN: How North Korea Hijacked Axios
Socket CEO Feross Aboukhadijeh breaks down how North Korea hijacked Axios and what it means for the future of software supply chain security.
@prachwal/mandelbrot-generator
Advanced tools
Professional Mandelbrot fractal generator with TypeScript support, interactive web interface, and multiple output formats
Professional fractal generator with TypeScript support, interactive web interface, and multiple output formats. Supports Mandelbrot Sets, Julia Sets, and Burning Ship fractals.
# Instaluj pakiet globalnie
npm install -g @prachwal/mandelbrot-generator
# Lub dodaj do swojego projektu
npm install @prachwal/mandelbrot-generator
git clone https://github.com/prachwal/mandelbrot-generator.git
cd mandelbrot-generator
npm install
# Zainstaluj pakiet
npm install @prachwal/mandelbrot-generator
# Użyj w swoim projekcie
import { generateMandelbrotSVG, defaultConfig } from '@prachwal/mandelbrot-generator';
const svg = generateMandelbrotSVG({
...defaultConfig,
width: 800,
height: 600,
colorPalette: 'fire'
});
console.log('Generated SVG:', svg.length, 'characters');
# Instaluj globalnie
npm install -g @prachwal/mandelbrot-generator
# Generuj fractal
mandelbrot-generator --width 1920 --height 1080 --iterations 256
import {
generateMandelbrotSVG,
saveImageAsSVG,
defaultConfig,
interestingPoints,
type MandelbrotConfig
} from '@prachwal/mandelbrot-generator';
// Szybkie generowanie Mandelbrota
const svg = generateMandelbrotSVG(defaultConfig);
// Z customową konfiguracją
const config: MandelbrotConfig = {
width: 1200,
height: 800,
maxIterations: 256,
centerX: -0.7269,
centerY: 0.1889,
zoom: 100,
colorPalette: 'fire'
};
const customSvg = generateMandelbrotSVG(config);
// Zapisz do pliku
const outputPath = saveImageAsSVG(config, 'my-fractal.svg');
console.log(`Saved to: ${outputPath}`);
// Użyj predefiniowanych lokacji
const elephantSvg = generateMandelbrotSVG({
...defaultConfig,
...interestingPoints.elephant,
maxIterations: 512
});
import {
MandelbrotFractal,
JuliaFractal,
BurningShipFractal,
fractalEngine
} from '@prachwal/mandelbrot-generator';
// Użyj konkretnego algorytmu
const mandelbrot = new MandelbrotFractal();
const julia = new JuliaFractal();
const burningShip = new BurningShipFractal();
// Lub użyj FractalEngine do zarządzania algorytmami
const availableAlgorithms = fractalEngine.getAllAlgorithms();
const juliaAlgorithm = fractalEngine.getAlgorithm('julia');
// Generuj z dowolnym algorytmem
const config = julia.defaultConfig;
config.juliaC = JuliaFractal.getPresets().dragon;
const imageData = julia.generateData(config);
npm start
Wygeneruje plik mandelbrot.svg w folderze output/.
Uwaga: 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.
cd test_web
npm install
npm run serve
Otwórz http://localhost:8080 - czyste środowisko testowe używające biblioteki jako zależności npm.
npm run serve # uruchamia z głównego folderu
Następnie otwórz http://localhost:8081 w przeglądarce.
Różnice:
test_web/ - Czyste środowisko używające opublikowanej bibliotekiweb/ - Development interface z mieszanym kodem biblioteki/aplikacjiPełna dokumentacja API jest dostępna w formacie TypeDoc:
# Wygeneruj dokumentację HTML
npm run docs
# Wygeneruj dokumentację Markdown
npm run docs:update-md
# Uruchom serwer dokumentacji HTML
npm run docs:serve
Dokumentacja obejmuje:
📖 Zobacz dokumentację Markdown | 🌐 Zobacz dokumentację HTML
# Uruchom wszystkie testy
npm test
# Uruchom testy z pokryciem kodu
npm run test:coverage
# Wygeneruj raport HTML pokrycia
npm run test:coverage-report
Projekt ma 100% pokrycie kodu dla głównego modułu mandelbrot.js.
Możesz dostosować parametry generowania z pełnym typowaniem TypeScript:
import { MandelbrotConfig } from './src/types.js';
import { defaultConfig } from './src/config.js';
const config: MandelbrotConfig = {
...defaultConfig,
width: 1920, // Rozdzielczość X
height: 1080, // Rozdzielczość Y
maxIterations: 256, // Maksymalne iteracje
zoom: 100, // Poziom powiększenia
centerX: -0.7269, // Centrum X (rzeczywiste)
centerY: 0.1889, // Centrum Y (urojone)
colorPalette: 'fire' // Paleta kolorów
};
rainbow - 🌈 Kolorowa tęcza (domyślna)fire - 🔥 Ogień (czerwień, pomarańcz, żółć)cool - ❄️ Chłodne (niebieskie, zielone)classic - ⚫ Klasyczne (czarno-białe)hot - 🌋 Gorące (intensywne czerwienie)electric - ⚡ Elektryczne (neonowe)ocean - 🌊 Ocean (głębokie niebieskie)sunset - 🌅 Zachód słońca (ciepłe kolory)Klasyczny zbiór Mandelbrota z formułą z_{n+1} = z_n² + c, gdzie z_0 = 0.
import { MandelbrotFractal } from '@prachwal/mandelbrot-generator';
const mandelbrot = new MandelbrotFractal();
const config = mandelbrot.defaultConfig;
const imageData = mandelbrot.generateData(config);
Zbiory Julii z formułą z_{n+1} = z_n² + c, gdzie z_0 = point i c jest stałą.
import { JuliaFractal } from '@prachwal/mandelbrot-generator';
const julia = new JuliaFractal();
// Użyj predefiniowanego presetu
const presets = JuliaFractal.getPresets();
const config = {
...julia.defaultConfig,
juliaC: presets.dragon // { real: -0.7269, imag: 0.1889 }
};
const imageData = julia.generateData(config);
Dostępne presety Julia Sets:
dragon - Smok Julia (-0.7269, 0.1889)airplane - Samolot (-0.75, 0.11)spiral - Spirala (-0.4, 0.6)dendrite - Dendryt (0, 1)rabbit - Królik (-0.123, 0.745)Fraktal "płonący statek" z formułą z_{n+1} = (abs(z.real) + i*abs(z.imag))² + c.
import { BurningShipFractal } from '@prachwal/mandelbrot-generator';
const burningShip = new BurningShipFractal();
const config = {
...burningShip.defaultConfig,
centerX: -0.5,
centerY: -0.6,
colorPalette: 'fire'
};
const imageData = burningShip.generateData(config);
import { generateMandelbrotData } from './src/mandelbrot.js';
const config: MandelbrotConfig = {
width: 800,
height: 600,
maxIterations: 100,
escapeRadius: 2,
zoom: 1,
centerX: -0.5,
centerY: 0,
colorPalette: 'rainbow'
};
const imageData = generateMandelbrotData(config);
import { JuliaFractal } from '@prachwal/mandelbrot-generator';
const julia = new JuliaFractal();
const presets = JuliaFractal.getPresets();
// Smok Julia
const dragonConfig = {
...julia.defaultConfig,
juliaC: presets.dragon,
maxIterations: 256,
colorPalette: 'fire'
};
// Samolot Julia
const airplaneConfig = {
...julia.defaultConfig,
juliaC: presets.airplane,
maxIterations: 512,
colorPalette: 'cool'
};
const dragonData = julia.generateData(dragonConfig);
const airplaneData = julia.generateData(airplaneConfig);
import { BurningShipFractal } from '@prachwal/mandelbrot-generator';
const burningShip = new BurningShipFractal();
const config = {
...burningShip.defaultConfig,
width: 1200,
height: 800,
centerX: -0.5,
centerY: -0.6,
zoom: 2,
maxIterations: 200,
colorPalette: 'fire'
};
const imageData = burningShip.generateData(config);
import { fractalEngine } from '@prachwal/mandelbrot-generator';
const algorithms = fractalEngine.getAllAlgorithms();
const baseConfig = {
width: 400,
height: 400,
maxIterations: 100,
colorPalette: 'rainbow'
};
// Generuj ten sam obszar różnymi algorytmami
algorithms.forEach(algo => {
const config = { ...algo.defaultConfig, ...baseConfig };
const imageData = algo.generateData(config);
console.log(`Generated ${algo.name} fractal`);
});
import { interestingPoints } from './src/config.js';
// Dolina słoni - słynne miejsce w zbiorze Mandelbrota
const elephantConfig: MandelbrotConfig = {
...defaultConfig,
...interestingPoints.elephant,
maxIterations: 256,
colorPalette: 'fire'
};
// Wzory koników morskich
const seahorseConfig: MandelbrotConfig = {
...defaultConfig,
...interestingPoints.seahorse,
maxIterations: 512,
colorPalette: 'ocean'
};
import { generateMandelbrotDataOptimized } from './src/mandelbrot.js';
const hiResConfig: MandelbrotConfig = {
width: 3840,
height: 2160,
maxIterations: 1000,
zoom: 1000,
centerX: -0.7269,
centerY: 0.1889,
colorPalette: 'electric'
};
// Użyj wersji zoptymalizowanej dla dużych obrazów
const imageData = await generateMandelbrotDataOptimized(hiResConfig, 8);
mandelbrot-generator/
├── src/ # Kod źródłowy TypeScript
│ ├── index.ts # Główny plik dla Node.js
│ ├── mandelbrot.ts # Algorytmy Mandelbrota
│ ├── config.ts # Konfiguracja i ciekawe punkty
│ ├── colors.ts # Palety kolorów
│ └── types.ts # Definicje typów TypeScript
├── web/ # Interfejs webowy
│ ├── docs/ # Dokumentacja TypeDoc
│ ├── index.html # Strona główna
│ ├── main.js # Kod JavaScript dla przeglądarki
│ └── style.css # Stylowanie
├── tests/ # Testy jednostkowe
│ └── mandelbrot.test.ts
├── dist/ # Skompilowany kod TypeScript
├── coverage/ # Raporty pokrycia testów
├── output/ # Wygenerowane fraktale (SVG)
├── package.json # Konfiguracja NPM
├── tsconfig.json # Konfiguracja TypeScript
├── vite.config.js # Konfiguracja Vite
├── typedoc.json # Konfiguracja dokumentacji
└── README.md # Ten plik
# Budowanie
npm run build # Kompiluj TypeScript
npm run build:watch # Kompiluj z obserwowaniem
npm run build:web # Buduj dla web
# Rozwój
npm run dev # Serwer dev Vite
npm run dev:watch # TypeScript + Vite równolegle
# Testowanie
npm run test # Uruchom testy
npm run test:watch # Testy z obserwowaniem
npm run test:coverage # Pokrycie kodu
# Dokumentacja
npm run docs # Wygeneruj dokumentację
npm run docs:serve # Serwuj dokumentację
npm run docs:watch # Dokumentacja z obserwowaniem
# Inne
npm run clean # Wyczyść wszystkie pliki build
npm run examples # Uruchom przykłady
npm run publish:npm # 🚀 Opublikuj do NPM (jedno polecenie!)
Jedno polecenie do publikacji:
npm run publish:npm
To polecenie automatycznie:
npm run clean)npm run build)npm test)npm run docs)npm publish --access public)Wymagania przed publikacją:
npm loginpackage.json zaktualizowanaTen projekt wykorzystuje nowoczesny stack technologiczny:
| Funkcja | Opis | Moduł |
|---|---|---|
generateMandelbrotData() | Generuje dane obrazu fraktala | mandelbrot.ts |
mandelbrotIteration() | Oblicza iteracje dla punktu | mandelbrot.ts |
getColor() | Mapuje iteracje na kolor | colors.ts |
calculateBounds() | Oblicza granice płaszczyzny | config.ts |
| Typ | Opis | Plik |
|---|---|---|
MandelbrotConfig | Konfiguracja generowania | types.ts |
RGBColor | Kolor RGB jako tupla | types.ts |
PaletteType | Typ palety kolorów | types.ts |
FractalBounds | Granice płaszczyzny zespolonej | types.ts |
📖 Pełna dokumentacja API (Markdown) | 🌐 Dokumentacja HTML
Zainstaluj: npm install @prachwal/mandelbrot-generator
// Główne funkcje generowania (legacy API - tylko Mandelbrot)
import {
generateMandelbrotSVG, // Generuj SVG jako string
saveImageAsSVG, // Zapisz SVG do pliku
generateMandelbrotData, // Generuj raw data
mandelbrotIteration // Oblicz iteracje dla punktu
} from '@prachwal/mandelbrot-generator';
// Nowoczesne algorytmy fraktali (zalecane)
import {
MandelbrotFractal, // Klasa algorytmu Mandelbrota
JuliaFractal, // Klasa algorytmu Julia Sets
BurningShipFractal, // Klasa algorytmu Burning Ship
fractalEngine // Engine do zarządzania algorytmami
} from '@prachwal/mandelbrot-generator';
// Konfiguracja i kolory
import {
defaultConfig, // Domyślna konfiguracja
interestingPoints, // Predefiniowane lokacje
colorPalettes, // Dostępne palety
calculateBounds // Oblicz granice płaszczyzny
} from '@prachwal/mandelbrot-generator';
// Funkcje kolorów
import {
getColor, // RGB dla iteracji
rgbToHex, // RGB → Hex
getColorHex // Hex dla iteracji
} from '@prachwal/mandelbrot-generator';
// Typy TypeScript
import type {
MandelbrotConfig, // Legacy config (używaj FractalConfig)
FractalConfig, // Nowa uniwersalna konfiguracja
PaletteType, // Typ palety
RGBColor, // Kolor RGB
Complex, // Liczba zespolona
FractalResult // Wynik iteracji fraktala
} from '@prachwal/mandelbrot-generator';
MIT License - Zobacz LICENSE dla szczegółów.
Stworzony przez Prachwal - Generator fraktala Mandelbrota w TypeScript.
FAQs
Professional Mandelbrot fractal generator with TypeScript support, interactive web interface, and multiple output formats
We found that @prachwal/mandelbrot-generator demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Socket CEO Feross Aboukhadijeh breaks down how North Korea hijacked Axios and what it means for the future of software supply chain security.

Security News
OpenSSF has issued a high-severity advisory warning open source developers of an active Slack-based campaign using impersonation to deliver malware.

Research
/Security News
Malicious packages published to npm, PyPI, Go Modules, crates.io, and Packagist impersonate developer tooling to fetch staged malware, steal credentials and wallets, and enable remote access.