# manugira/coordinatus architecture

> Architecture diagram of the GitHub repository manugira/coordinatus, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/manugira/coordinatus
- Repository: https://github.com/manugira/coordinatus

## Overview

Coordinatus is a Python library for hierarchical coordinate systems and affine transformations, currently focused on 2D Cartesian coordinates. A user creates frames and points or vectors through the package API, then converts coordinates between frames; optional plotting renders frames and points from a chosen reference frame. Transform utilities provide translation, rotation, scaling, shear, and dimension projection matrices. The graph covers the sampled runtime modules and README capabilities; individual conversion and frame internals are summarized at their implementation modules.

Main entry points: [`src/coordinatus/transforms/__init__.py`](https://github.com/manugira/coordinatus/blob/main/src/coordinatus/transforms/__init__.py) (Transform utilities), [`src/coordinatus/__init__.py`](https://github.com/manugira/coordinatus/blob/main/src/coordinatus/__init__.py) (Package API), [`src/coordinatus/visualization.py`](https://github.com/manugira/coordinatus/blob/main/src/coordinatus/visualization.py) (Frame and point drawing), [`src/coordinatus/coordinate.py`](https://github.com/manugira/coordinatus/blob/main/src/coordinatus/coordinate.py) (Points and vectors)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_model["Coordinate model"]
  node_api["Package API<br/>[__init__.py]"]
  node_frame["Hierarchical frames<br/>[frame.py]"]
  node_coordinate["Points and vectors<br/>[coordinate.py]"]
  node_kind["Coordinate kinds<br/>[types.py]"]
end

subgraph group_matrices["Transform matrices"]
  node_transform_api["Transform utilities<br/>[__init__.py]"]
  node_translation["Translation matrices<br/>[translate.py]"]
  node_rotation["Rotation matrices<br/>[rotate.py]"]
  node_scaling["Scale and shear<br/>[scale.py]"]
  node_dimension["Dimension projection<br/>[dimension.py]"]
end

subgraph group_plotting["Optional visualization"]
  node_visualization["Frame and point drawing<br/>[visualization.py]"]
end

node_user(("Library user"))
node_matplotlib["Matplotlib"]

node_user -->|"uses"| node_api
node_api -->|"exports"| node_frame
node_api -->|"exports"| node_coordinate
node_api -->|"exposes"| node_transform_api
node_api -->|"optionally exposes"| node_visualization
node_coordinate -->|"converts through"| node_frame
node_coordinate -->|"uses"| node_kind
node_frame -->|"builds TRS"| node_transform_api
node_transform_api -->|"combines"| node_translation
node_transform_api -->|"combines"| node_rotation
node_transform_api -->|"combines"| node_scaling
node_transform_api -->|"re-exports"| node_dimension
node_visualization -->|"converts points"| node_coordinate
node_visualization -->|"uses frames"| node_frame
node_visualization -->|"optionally plots with"| node_matplotlib

click node_api "https://github.com/manugira/coordinatus/blob/main/src/coordinatus/__init__.py"
click node_frame "https://github.com/manugira/coordinatus/blob/main/src/coordinatus/frame.py"
click node_coordinate "https://github.com/manugira/coordinatus/blob/main/src/coordinatus/coordinate.py"
click node_kind "https://github.com/manugira/coordinatus/blob/main/src/coordinatus/types.py"
click node_transform_api "https://github.com/manugira/coordinatus/blob/main/src/coordinatus/transforms/__init__.py"
click node_translation "https://github.com/manugira/coordinatus/blob/main/src/coordinatus/transforms/translate.py"
click node_rotation "https://github.com/manugira/coordinatus/blob/main/src/coordinatus/transforms/rotate.py"
click node_scaling "https://github.com/manugira/coordinatus/blob/main/src/coordinatus/transforms/scale.py"
click node_dimension "https://github.com/manugira/coordinatus/blob/main/src/coordinatus/transforms/dimension.py"
click node_visualization "https://github.com/manugira/coordinatus/blob/main/src/coordinatus/visualization.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_api,node_frame,node_coordinate,node_kind,node_user toneBlue
class node_transform_api,node_translation,node_rotation,node_scaling,node_dimension toneAmber
class node_visualization toneMint
class node_matplotlib toneIndigo
```

## Components

### Coordinate model

- [Package API](https://github.com/manugira/coordinatus/blob/main/src/coordinatus/__init__.py): `src/coordinatus/__init__.py`
- [Hierarchical frames](https://github.com/manugira/coordinatus/blob/main/src/coordinatus/frame.py): `src/coordinatus/frame.py`
- [Points and vectors](https://github.com/manugira/coordinatus/blob/main/src/coordinatus/coordinate.py): `src/coordinatus/coordinate.py`
- [Coordinate kinds](https://github.com/manugira/coordinatus/blob/main/src/coordinatus/types.py): `src/coordinatus/types.py`

### Transform matrices

- [Transform utilities](https://github.com/manugira/coordinatus/blob/main/src/coordinatus/transforms/__init__.py): `src/coordinatus/transforms/__init__.py`
- [Translation matrices](https://github.com/manugira/coordinatus/blob/main/src/coordinatus/transforms/translate.py): `src/coordinatus/transforms/translate.py`
- [Rotation matrices](https://github.com/manugira/coordinatus/blob/main/src/coordinatus/transforms/rotate.py): `src/coordinatus/transforms/rotate.py`
- [Scale and shear](https://github.com/manugira/coordinatus/blob/main/src/coordinatus/transforms/scale.py): `src/coordinatus/transforms/scale.py`
- [Dimension projection](https://github.com/manugira/coordinatus/blob/main/src/coordinatus/transforms/dimension.py): `src/coordinatus/transforms/dimension.py`

### Optional visualization

- [Frame and point drawing](https://github.com/manugira/coordinatus/blob/main/src/coordinatus/visualization.py): `src/coordinatus/visualization.py`

### Other components

- **Library user**
- **Matplotlib**

## Connections

- Library user → Package API: uses (evidence: `README.md`)
- Package API → Hierarchical frames: exports (evidence: `src/coordinatus/__init__.py`)
- Package API → Points and vectors: exports (evidence: `src/coordinatus/__init__.py`)
- Package API → Transform utilities: exposes (evidence: `src/coordinatus/__init__.py`)
- Package API → Frame and point drawing: optionally exposes (evidence: `src/coordinatus/__init__.py`)
- Points and vectors → Hierarchical frames: converts through (evidence: `src/coordinatus/coordinate.py`)
- Points and vectors → Coordinate kinds: uses (evidence: `src/coordinatus/coordinate.py`)
- Hierarchical frames → Transform utilities: builds TRS (evidence: `src/coordinatus/frame.py`)
- Transform utilities → Translation matrices: combines (evidence: `src/coordinatus/transforms/__init__.py`)
- Transform utilities → Rotation matrices: combines (evidence: `src/coordinatus/transforms/__init__.py`)
- Transform utilities → Scale and shear: combines (evidence: `src/coordinatus/transforms/__init__.py`)
- Transform utilities → Dimension projection: re-exports (evidence: `src/coordinatus/transforms/__init__.py`)
- Frame and point drawing → Points and vectors: converts points (evidence: `src/coordinatus/visualization.py`)
- Frame and point drawing → Hierarchical frames: uses frames (evidence: `src/coordinatus/visualization.py`)
- Frame and point drawing → Matplotlib: optionally plots with (evidence: `src/coordinatus/visualization.py`)
