# roofy

Simple and lightweight math library for game-engine development and graphics.

Uses `f32` as the primary numeric type for perfromance and GPU alignment.

Provides degree-based APIs alongside radian-based ones for most angle-related functions.

## What's included

- `f32` types
    - **Vectors** `Vec2`, `Vec3`, `Vec4`
    - **Quaternion** `Quat`
    - **Matrices** `Mat2`, `Mat3`, `Mat4`
    - **Affines** `Affine2`, `Affine3`

## Features


| Feature | Description |
|---------|-------------|
| `serde` | `Serialize`/`Deserialize` for all vector, quaternion, matrix, and affine types |
| `bytemuck` | `Pod`/`Zeroable` for all vector, quaternion, matrix, and affine types |

Enable it in your `Cargo.toml`:

```toml
[dependencies]
roofy = { version = "0.3", features = ["serde", "bytemuck"] }
```

## Usage

Add to your `Cargo.toml` (replace `*` with the latest version on [crates.io](https://crates.io/crates/roofy)):

```toml
[dependencies]
roofy = "0.3"
```

## Design notes

- **No required dependencies:** Zero runtime dependencies by default, just `std`.
- **`#[repr(C)]` layout:** All types use `#[repr(C)]` for predictable memory layout.
## License

[MIT](LICENSE-MIT) OR [Apache-2.0](LICENSE-APACHE)