--- name: surface_plot_3d kind: component lang: cpp domain: viz version: "1.0.0" purity: pure signature: "void surface_plot_3d(const char* title, const float* values, int rows, int cols, float z_min, float z_max)" description: "[STUB] Renderiza una superficie 3D — requiere ImPlot3D (no vendoreado aun)" tags: [implot3d, chart, visualization, gpu, surface, 3d, stub] uses_functions: [] uses_types: [] returns: [] returns_optional: false error_type: "" imports: [imgui] tested: false tests: [] test_file_path: "" file_path: "cpp/functions/viz/surface_plot_3d.cpp" framework: imgui params: - name: title desc: "Titulo de la superficie, se muestra como header del plot" - name: values desc: "Array row-major de alturas Z con dimension rows*cols" - name: rows desc: "Numero de filas de la grilla de la superficie" - name: cols desc: "Numero de columnas de la grilla de la superficie" - name: z_min desc: "Valor minimo del eje Z para escalar el colormap" - name: z_max desc: "Valor maximo del eje Z para escalar el colormap" output: "Renderiza un placeholder informativo en el frame ImGui actual; cuando ImPlot3D este disponible, renderizara la superficie 3D" --- # surface_plot_3d **STUB** — la implementacion real requiere [ImPlot3D](https://github.com/brenocq/implot3d), que todavia no esta vendoreado en `cpp/vendor/implot3d/`. Mientras tanto la funcion renderiza un grupo ImGui con un mensaje informativo que muestra el titulo, las dimensiones de la grilla y el rango Z. La firma es definitiva y no cambiara cuando se integre ImPlot3D. ## Dependencia pendiente Para activar la implementacion real: 1. Clonar o copiar ImPlot3D en `cpp/vendor/implot3d/` 2. Anadir `implot3d.cpp` al build system (CMake / Makefile) 3. Reemplazar el cuerpo de `surface_plot_3d` por la llamada a `ImPlot3D::BeginPlot3D` / `ImPlot3D::PlotSurface` / `ImPlot3D::EndPlot3D` 4. Actualizar `imports` del .md a `[imgui, implot3d]` y quitar el tag `stub` ## Uso ```cpp // values es un array row-major de rows*cols floats float grid[4 * 4] = { ... }; surface_plot_3d("Mi Superficie", grid, 4, 4, -1.0f, 1.0f); ``` Debe llamarse dentro del render callback de `fn::run_app` (o cualquier contexto con un frame ImGui activo).