Files
egutierrez d0bce11a40 feat(viz): voronoi diagram via raster brute-force (MVP)
Para cada tile 4x4 px del rect de render: encontrar seed mas cercano
(distancia Euclidea) y rellenar con su color. Suficiente para N<=200
seeds en region <=600x400.

voronoi_layout deja polygon vacio en MVP — solo rellena seed/color.
Para extraer poligonos analiticos seria necesario half-plane
intersections (Fortune) — diferido a otro issue.
2026-04-25 21:52:52 +02:00

27 lines
977 B
C++

#pragma once
// Diagrama de Voronoi via raster brute-force (MVP).
// Para cada pixel, encontrar el seed mas cercano (Euclidea). Suficiente para
// N <= 200 seeds y region <= 500x500.
#include "imgui.h"
#include <vector>
struct VoronoiCell {
std::vector<ImVec2> polygon; // En MVP raster queda vacio. Lo dejamos por API future-proof.
ImVec2 seed;
ImU32 color;
};
// Layout puro. En MVP raster no devuelve poligonos analiticos: el polygon
// queda vacio y solo se rellenan seed/color. El render usa raster directo.
std::vector<VoronoiCell> voronoi_layout(const ImVec2* seeds, int n, ImVec2 region);
// Render brute-force: muestrea region en celdas de px_size pixeles, para cada
// celda escribe un AddRectFilled con el color del seed mas cercano.
void voronoi(const char* id,
const ImVec2* seeds,
int n,
const ImU32* colors,
ImVec2 size = ImVec2(-1.0f, 300.0f));