# Creagen

A general purpose library meant for creative coding.

This library tailors more to experienced programmers with a focus on good function semantics and reuse of code and concepts.

> [!CAUTION]
> This is a highly experimental library and is very sensitive to future changes
> I implemented some of algorithms here myself as a learning experience so don't expect
> the smoothest of performance.

## Features

### Geometric Operations
- **Vector operations** - 2D and 3D vector math
- **Point clouds** - Processing and analysis of point sets

### Graphics & Rendering
- **Bitmap manipulation** - Pixel-level image operations
- **Color handling** - Color space conversions and operations
- **Image Processing** - Wrapping opencv.js with an easy to use interface for image processing
- **Canvas operations** - Drawing primitives and path manipulation

### Data & Analysis
- **Audio processing** - Generation and analysis capabilities

## Philosophy

Creagen embraces:
- **Experimentation** - A sandbox for trying new ideas and techniques
- **Education** - Learning through implementation
- **Reusability** - Clean consistent abstractions that compose well
- **Creative Expression** - Tools that empower artists and designers

# Build

```sh
npm install
npm run build
```

## Documentation

See [creagen.dev/docs/creagen](https://creagen.dev/docs/creagen)