Files
fn_registry/cpp/functions/viz/scatter_3d.h
T
egutierrez cebf87cb4e feat(viz): surface_plot_3d real (ImPlot3D) + scatter_3d nuevo
surface_plot_3d (v2.0.0): quita el STUB. API basada en
SurfacePlot3DConfig (z[nx*ny] row-major + ranges X/Y) que delega en
ImPlot3D::PlotSurface. Las coordenadas X/Y por vertice se generan
internamente desde [x_min, x_max] x [y_min, y_max].

scatter_3d (v1.0.0): nuevo primitivo. Scatter 3D con tamano y color
opcionales por punto via ImPlot3DSpec::MarkerSizes / MarkerFillColors.
Util para PCA / clustering / nubes de puntos sinteticas.

Ambos namespace fn::, kind component, purity pure. Orbit / zoom / pan
los aporta ImPlot3D nativo.

Issue 0028.
2026-04-25 21:48:43 +02:00

30 lines
878 B
C++

#pragma once
#include "imgui.h"
namespace fn {
// Configuracion para scatter_3d.
//
// `xs`, `ys`, `zs` son arrays de tamano `n`. `sizes` y `colors` son
// opcionales: si se pasan, se usan por punto (size en pixeles, color como
// ImU32 RGBA). Si son nullptr, ImPlot3D usa los valores por defecto del
// estilo activo.
struct Scatter3DConfig {
const float* xs = nullptr;
const float* ys = nullptr;
const float* zs = nullptr;
const float* sizes = nullptr; // opcional, length = n
const ImU32* colors = nullptr; // opcional, length = n
int n = 0;
ImVec2 size = ImVec2(-1.f, 400.f);
};
// Renderiza un scatter 3D usando ImPlot3D::PlotScatter.
//
// Llamar dentro de un frame ImGui activo. Si xs / ys / zs son nullptr o
// n < 1, renderiza un mensaje informativo.
void scatter_3d(const char* title, const Scatter3DConfig& cfg);
} // namespace fn