#ifndef DEBUG_EXPORT_HPP #define DEBUG_EXPORT_HPP #include "busbar_segment.hpp" #include #include #include #include #include class DebugExporter { public: // 导出路径占用的所有体素为OBJ文件(立方体形式) static void exportPathToOBJ( const std::vector>& segments, const std::string& filename); // 导出体素点云为OBJ文件(每个体素一个小立方体) static void exportVoxelsToOBJ( const std::vector& voxels, const std::string& filename, float voxel_size = 1.0f); // 导出多组体素,用不同的组名区分(可在3D软件中分别显示/隐藏) static void exportMultipleVoxelGroupsToOBJ( const std::vector>>& groups, const std::string& filename); // 导出障碍物地图为OBJ static void exportObstaclesToOBJ( const std::vector& obstacles, uint64_t xsize, uint64_t ysize, uint64_t zsize, const std::string& filename, int64_t x_min = -1, int64_t x_max = -1, // -1表示全部 int64_t y_min = -1, int64_t y_max = -1, int64_t z_min = -1, int64_t z_max = -1); // 导出路径为OBJ,相邻段用交替颜色区分(用于调试原始路径) static void exportPathToOBJ_alternating( const std::vector>& segments, const std::string& filename); // 导出障碍物和间隙体素为OBJ(用不同颜色区分) // obstacles: 实体障碍物(红色) // collision_voxels: 间隙碰撞体素(蓝色) static void exportObstaclesWithCollisionToOBJ( const std::vector& obstacles, const std::vector& collision_voxels, uint64_t xsize, uint64_t ysize, uint64_t zsize, const std::string& filename, int64_t x_min = -1, int64_t x_max = -1, int64_t y_min = -1, int64_t y_max = -1, int64_t z_min = -1, int64_t z_max = -1); }; #endif