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.
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
#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
|
||||
Reference in New Issue
Block a user