cebf87cb4e
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.
30 lines
878 B
C++
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
|