---
name: Vec2
lang: cpp
domain: core
version: "0.1.0"
algebraic: product
definition: "struct Vec2 { float x, y; }"
description: "Vector 2D inmutable de floats con operadores aritmeticos, length/normalize/dot/cross. Tipo base del stack gamedev (issue 0072b)."
tags: [gamedev, math, 2d, primitive]
uses_types: []
file_path: "cpp/functions/core/math2d.h"
examples: |
  Vec2 a{1.0f, 2.0f};
  Vec2 b{3.0f, 4.0f};
  Vec2 sum = a + b;
  float d = Vec2::dot(a, b);
  Vec2 n = a.normalized();
notes: |
  - Definido en namespace `fn::math2d` junto a Rect y Color.
  - Trivial-copy, constexpr donde aplica.
  - Sin SIMD intencionado — para hot paths usar buffers planos float[2].
---

# Vec2

Vector 2D usado por el stack gamedev: posiciones, velocidades, tamaños UV. Operadores `+ - * /` por componente, `dot`, `cross` (escalar 2D), `length`, `normalized`.

Vive en `cpp/functions/core/math2d.h` junto a `Rect` y `Color` para reducir overhead de includes.
