Fix: PNG_SHAPE distribución adaptativa corregida completamente
PROBLEMAS RESUELTOS: 1. getPoint3D() ignoraba optimización → usaba edge_points_ siempre 2. extractAlternateRows() era destructiva → filtraba sobre filtrado 3. Con 10,000 pelotas mostraba bordes → ahora muestra RELLENO 4. Con 100 pelotas solo primera fila → ahora muestra todo el texto CAMBIOS IMPLEMENTADOS: - Añadido optimized_points_ (vector resultado final) - extractAlternateRows() ahora es función pura (devuelve nuevo vector) - extractCornerVertices() ahora es función pura - Cada nivel recalcula desde original (no desde filtrado previo) - getPoint3D() usa optimized_points_ exclusivamente FLUJO CORRECTO: - 10,000 pelotas: RELLENO completo (capas reducidas) - 500 pelotas: RELLENO + filas alternas (texto completo visible) - 100 pelotas: BORDES completos (todo el texto visible) - 10 pelotas: VÉRTICES (esqueleto visible) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -17,8 +17,9 @@ private:
|
||||
struct Point2D {
|
||||
float x, y;
|
||||
};
|
||||
std::vector<Point2D> edge_points_; // Contorno (solo bordes)
|
||||
std::vector<Point2D> filled_points_; // Relleno completo (para Enfoque B)
|
||||
std::vector<Point2D> edge_points_; // Contorno (solo bordes) - ORIGINAL sin optimizar
|
||||
std::vector<Point2D> filled_points_; // Relleno completo - ORIGINAL sin optimizar
|
||||
std::vector<Point2D> optimized_points_; // Puntos finales optimizados (usado por getPoint3D)
|
||||
|
||||
// Parámetros de extrusión
|
||||
float extrusion_depth_ = 0.0f; // Profundidad de extrusión en Z
|
||||
@@ -46,6 +47,10 @@ private:
|
||||
void floodFill(); // Rellenar interior (Enfoque B - futuro)
|
||||
void generateExtrudedPoints(); // Generar puntos con extrusión 2D
|
||||
|
||||
// Métodos de distribución adaptativa (funciones puras, no modifican parámetros)
|
||||
std::vector<Point2D> extractAlternateRows(const std::vector<Point2D>& source, int row_skip); // Extraer filas alternas
|
||||
std::vector<Point2D> extractCornerVertices(const std::vector<Point2D>& source); // Extraer vértices/esquinas
|
||||
|
||||
public:
|
||||
// Constructor: recibe path relativo al PNG
|
||||
PNGShape(const char* png_path = "data/shapes/jailgames.png");
|
||||
|
||||
Reference in New Issue
Block a user