26 for (
auto a :
mAxes) {
36 mAxes.push_back(axis);
52 std::string fullPath, blank =
"_";
54 for (
auto a : paths) {
55 if (a.length() > maxLength) {
56 maxLength = a.length();
59 for (
int iPathLevel = 0; iPathLevel < maxLength; iPathLevel++) {
60 for (
int iPathAxis = 0; iPathAxis < paths.size(); iPathAxis++) {
61 paths.at(iPathAxis).resize(maxLength);
62 if (!paths.at(iPathAxis).at(iPathLevel)) {
66 fullPath += paths.at(iPathAxis).at(iPathLevel);
67 if (iPathAxis == (
mAxes.size() - 1)) fullPath +=
"/";
69 if (fullPath.back() !=
'/') fullPath +=
"/";
71 return std::move(fullPath);
74 void Space::points(std::vector<int> levels, std::vector<NDM::Point> & point,
int idAxis)
80 if (idAxis >=
mAxes.size()) {
81 spdlog::error(
"idAxis cannot be more than total number of axes in space!!!");
84 if (idAxis == 0 &&
mTmpMins.size() == 0) {
85 spdlog::trace(
"Space::points -> Init");
89 if (levels.size() !=
mAxes.size()) {
90 spdlog::error(
"Total number of levels must be equal to total number of axes!!!");
94 for (
int iAxes = 0; iAxes <
mAxes.size(); iAxes++) {
106 c =
mTmpPoint.mutable_coordinates(idAxis);
107 mAxes[idAxis].find(m, min, max, path, levels.at(idAxis));
108 spdlog::trace(
"v[{}][{}] size[{}] min[{}], max[{}], path[{}]", idAxis, m,
mTmpMins[idAxis].size(), min, max,
114 c->set_isbin(
mAxes[idAxis].is_bin());
115 c->set_info(
mAxes[idAxis].info());
117 if (idAxis < (
mAxes.size() - 1)) {
118 points(levels, point, idAxis + 1);
120 else if (idAxis == (
mAxes.size() - 1)) {
128 spdlog::error(
"Space::points -> idAxis[{}] is higher then number of axis '{}' !!!", idAxis,
mAxes.size());
133 void Space::find_point(std::vector<int> & coordinates, std::vector<int> & levels, NDM::Point & point)
139 if (
mTmpPaths.size() != coordinates.size()) {
141 mTmpMins.resize(coordinates.size());
147 for (
int iCoord = 0; iCoord < coordinates.size(); iCoord++) {
150 if (point.coordinates_size() < coordinates.size()) {
151 c = point.add_coordinates();
153 c = point.mutable_coordinates(iCoord);
155 mAxes[iCoord].find(
mTmpMins[iCoord][coordinates[iCoord] - 1], min, max, path, levels.at(iCoord));
156 spdlog::trace(
"v[{}][{}] size[{}] min[{}], max[{}], path[{}]", iCoord,
157 mTmpMins[iCoord][coordinates[iCoord] - 1],
mTmpMins[iCoord].size(), min, max, path);
161 c->set_info(
mAxes[iCoord].info());
void split(std::vector< double > &mins, int level)
void points(std::vector< int > levels, std::vector< NDM::Point > &point, int idAxis=0)
Axis object in n-dimensional space.
std::vector< std::string > mTmpPaths
Temporary vector storing generated paths for points.
virtual ~Space()
Default Destructor.
Point mTmpPoint
Temporary Point Object.
void find_point(std::vector< int > &coordinates, std::vector< int > &levels, NDM::Point &point)
std::string get_full_path(std::vector< std::string > &paths)
std::vector< std::vector< double > > mTmpMins
Temporary vector storing value of minimums of axes.
Space()
Default Constructor.
std::vector< NDM::Axis > mAxes
Vector of axis to be used for space.