feat(pineal): cierra stub treemap — squarified

Fase F: cuarto stub de pineal cerrado.

- squarify — algoritmo de Bruls, Huizing & van Wijk (2000): asigna a
  cada peso un rect de área proporcional minimizando el peor aspect
  ratio (rects lo más cuadrados posible). Pre-escala pesos al área del
  rect; ordena descendente; tiende filas sobre el lado corto cerrándolas
  cuando agregar un item empeora el ratio. Pesos <=0 → rect vacío.
- paint — painter agnóstico: tiles → fill_rect con gap configurable.

7 tests verdes (proporcionalidad, bounds, edge cases). cargo check
--workspace verde.

Pineal: 4/6 stubs cerrados (export, heatmap, polar, treemap).
Restan flow (sankey) y mesh (graph layout: force-directed/Sugiyama) —
ambos requieren algoritmos de layout sustantivos, foco dedicado.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-20 14:16:31 +00:00
parent 370a593ad8
commit 590572b5bb
3 changed files with 240 additions and 7 deletions
+9 -7
View File
@@ -1,12 +1,14 @@
//! `pineal-treemap` — treemap squarified.
//!
//! Algoritmo en `pineal_core::squarify` (placeholder); el `Element`
//! sólo se encarga de iterar las tiles resultantes y dibujarlas.
//! Pre-scaling de valores al area total del rect es clave para
//! estabilidad numérica con rangos amplios.
//! - [`squarify`] — algoritmo de Bruls, Huizing & van Wijk (2000):
//! asigna a cada peso un rect de área proporcional minimizando el
//! peor aspect ratio. Pre-escala los pesos al área del rect destino.
//! - [`paint`] — painter agnóstico: tiles → `fill_rect` contra `Canvas`.
#![forbid(unsafe_code)]
#![allow(dead_code)]
pub mod tile {}
pub mod element {}
pub mod squarify;
pub mod paint;
pub use paint::{paint_treemap, Tile};
pub use squarify::squarify;