fractal-react
Version:
React components for rendering fractal patterns like Mandelbrot, Julia, Koch, Sierpinski, and L-Systems
125 lines (97 loc) • 3.18 kB
Markdown
# Fractal React Components
A React component library for rendering beautiful fractal patterns including Mandelbrot sets, Julia sets, Koch curves, Sierpinski triangles, L-Systems, and Barnsley ferns.
## Installation
```bash
npm install fractal-react
```
## Usage
```tsx
import { MandelbrotSet, JuliaSet, KochCurve, SierpinskiTriangle, LSystem, BarnsleyFern } from 'fractal-react';
function App() {
return (
<div>
<MandelbrotSet width={400} height={400} maxIterations={100} />
<JuliaSet width={400} height={400} c={{ real: -0.7, imaginary: 0.27015 }} />
<KochCurve width={400} height={200} iterations={4} />
<SierpinskiTriangle width={400} height={400} iterations={6} />
<LSystem
width={400}
height={400}
axiom="F"
rules={{ F: "F+F-F-F+F" }}
iterations={4}
angle={90}
/>
<BarnsleyFern width={400} height={400} points={50000} />
</div>
);
}
```
## Components
### MandelbrotSet
Renders the famous Mandelbrot set fractal.
**Props:**
- `width: number` - Canvas width
- `height: number` - Canvas height
- `maxIterations?: number` - Maximum iterations (default: 100)
- `zoom?: number` - Zoom level (default: 1)
- `centerX?: number` - Center X coordinate (default: -0.5)
- `centerY?: number` - Center Y coordinate (default: 0)
- `colorScheme?: string` - Color scheme ('default', 'rainbow', 'grayscale')
### JuliaSet
Renders Julia set fractals.
**Props:**
- `width: number` - Canvas width
- `height: number` - Canvas height
- `c: { real: number, imaginary: number }` - Complex constant
- `maxIterations?: number` - Maximum iterations (default: 100)
- `zoom?: number` - Zoom level (default: 1)
- `colorScheme?: string` - Color scheme
### KochCurve
Renders Koch snowflake curves.
**Props:**
- `width: number` - Canvas width
- `height: number` - Canvas height
- `iterations?: number` - Number of iterations (default: 4)
- `strokeColor?: string` - Line color (default: '#000000')
- `strokeWidth?: number` - Line width (default: 1)
### SierpinskiTriangle
Renders Sierpinski triangle fractals.
**Props:**
- `width: number` - Canvas width
- `height: number` - Canvas height
- `iterations?: number` - Number of iterations (default: 6)
- `fillColor?: string` - Fill color (default: '#000000')
### LSystem
Renders L-System fractals.
**Props:**
- `width: number` - Canvas width
- `height: number` - Canvas height
- `axiom: string` - Starting axiom
- `rules: Record<string, string>` - Production rules
- `iterations?: number` - Number of iterations (default: 4)
- `angle?: number` - Turn angle in degrees (default: 90)
- `strokeColor?: string` - Line color
- `strokeWidth?: number` - Line width
### BarnsleyFern
Renders Barnsley fern fractals.
**Props:**
- `width: number` - Canvas width
- `height: number` - Canvas height
- `points?: number` - Number of points to plot (default: 50000)
- `color?: string` - Point color (default: '#008000')
## Development
```bash
# Install dependencies
npm install
# Start development mode
npm run dev
# Run tests
npm test
# Start Storybook
npm run storybook
# Build for production
npm run build
```
## License
MIT © Bhavy Khatri