Interactive 3D visualization of chaotic systems and strange attractors using Three.js.
- 8 Strange Attractors: Lorenz, Thomas, Dadras, Rössler, Aizawa, Chen, Halvorsen, Sprott
- Real-time 3D Rendering: GPU-accelerated particle system with trails
- Interactive Controls: Rotate, zoom, pan with OrbitControls
- Live Parameter Tuning: Adjust attractor parameters in real-time
- LaTeX Equations: Beautiful mathematical equations rendered with KaTeX
- Customizable Visuals: Colors, particle count, trail length, speed
strange-attractors/
├── index.html # Entry HTML with KaTeX CDN
├── package.json # Dependencies and scripts
├── tsconfig.json # TypeScript configuration
├── vite.config.ts # Vite dev server config
└── src/
├── main.ts # App entry, Three.js scene, UI controls
├── attractors.ts # 8 attractor definitions with equations
├── particleSystem.ts # GPU particle renderer with trails
├── style.css # Dark theme with glassmorphism
└── vite-env.d.ts # Type declarations
- Node.js 18+ (recommended: 20.x)
- npm or pnpm
# Clone the repository
git clone <repo url>
cd strange-attractors
# Install dependencies
npm install
# Start development server
npm run devOpen http://localhost:xxxx in your browser.
npm run build
npm run preview| Action | Control |
|---|---|
| Rotate | Left-click + drag |
| Zoom | Scroll wheel |
| Pan | Right-click + drag |
| Select attractor | Type dropdown |
| Adjust parameters | Sliders |
| Attractor | Year | Description |
|---|---|---|
| Lorenz | 1963 | The classic butterfly - atmospheric convection |
| Thomas | 1999 | Cyclically symmetric biological system |
| Dadras | 2010 | Multi-scroll chaotic system |
| Rössler | 1976 | Simplest continuous chaotic system |
| Aizawa | - | Toroidal spiral vortex |
| Chen | 1999 | Double-scroll pattern |
| Halvorsen | - | Three intertwined spirals |
| Sprott | 1994 | Auto-discovered minimal system |
- Three.js - 3D rendering and WebGL
- Vite - Fast development server and bundler
- TypeScript - Type-safe JavaScript
- lil-gui - Lightweight GUI controls
- KaTeX - Fast LaTeX rendering
MIT License - feel free to use this project for learning and experimentation.