0042fe3f1f
Fase F: quinto stub de pineal cerrado. - layout — pipeline Sankey: columnas por longest-path en el DAG (back-edges detectadas por DFS y descartadas para romper ciclos), valor de nodo = max(entrante, saliente), apilado vertical por columna escalado a la altura, una pasada de barycenter para reducir cruces, anclas de cada banda en los bordes de sus nodos. - ribbon — teselado de bandas como triangle-strip con curva S (x lineal, y por smoothstep → tangentes horizontales). paint_ribbon + paint_sankey (ribbons al fondo, nodos encima). Painters agnósticos (trait Canvas). 6 tests verdes (columnas, ciclos sin loop infinito, proporcionalidad, conteo de draw calls). Pineal: 5/6 stubs cerrados. Resta mesh (viz de grafos: force-directed + Sugiyama + tree layout — módulo, no stub). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
19 lines
653 B
Rust
19 lines
653 B
Rust
//! `pineal-flow` — diagramas Sankey.
|
|
//!
|
|
//! Pipeline:
|
|
//! 1. Columnas por longest-path en el DAG (back-edges descartadas).
|
|
//! 2. Valor de nodo = max(caudal entrante, caudal saliente).
|
|
//! 3. Apilado vertical por columna + una pasada de barycenter.
|
|
//! 4. Bandas (ribbons) como triangle-strips con curva S (`smoothstep`).
|
|
//!
|
|
//! - [`layout`] — cómputo del layout (agnóstico).
|
|
//! - [`ribbon`] — teselado + painters contra `Canvas`.
|
|
|
|
#![forbid(unsafe_code)]
|
|
|
|
pub mod layout;
|
|
pub mod ribbon;
|
|
|
|
pub use layout::{compute_layout, LinkBand, NodeBox, SankeyLayout, SankeyLink, SankeyNode};
|
|
pub use ribbon::{paint_ribbon, paint_sankey, ribbon_strip};
|