I am searching a solution for following problem:
I planned to solve this with sort of vectors but It isn't a solution for all of my case.
I write before this post about, how to sort vector of points with (x, y, z).
I will explain here what the problem is.
I have this vector:
Point [0] = [X: 3.00;Y: 0.00;Z: 0.00]
Point [1] = [X: 3.00;Y: 0.00;Z: 3.00]
Point [2] = [X: 3.00;Y: 5.00;Z: 0.00]
Point [3] = [X: 3.00;Y: 5.00;Z: 3.00]
Point [4] = [X: 0.00;Y: 5.00;Z: 0.00]
Point [5] = [X: 0.00;Y: 5.00;Z: 3.00]
Point [6] = [X: 0.00;Y: 0.00;Z: 0.00]
Point [7] = [X: 0.00;Y: 0.00;Z: 3.00]
First step sort by z: Then
std::sort(std::begin(vector_points), std::end(vector_points),
[](auto const& a, auto const& b) {return (a.z < b.z); });
Point [0] = [X: 3.00;Y: 0.00;Z: 0.00]
Point [1] = [X: 3.00;Y: 5.00;Z: 0.00]
Point [2] = [X: 0.00;Y: 5.00;Z: 0.00]
Point [3] = [X: 0.00;Y: 0.00;Z: 0.00]
Point [4] = [X: 3.00;Y: 0.00;Z: 3.00]
Point [5] = [X: 3.00;Y: 5.00;Z: 3.00]
Point [6] = [X: 0.00;Y: 5.00;Z: 3.00]
Point [7] = [X: 0.00;Y: 0.00;Z: 3.00]
Second step sort by y: Then
auto yComp = [](const auto& p1, const auto& p2){return p1.y < p2.y;};
std::sort(vector_points.begin(), vector_points.begin() + 4, yComp);
std::sort(vector_points.begin() + 4, vector_points.begin() + 8, yComp);
Point [0] = [X: 3.00;Y: 0.00;Z: 0.00]
Point [1] = [X: 0.00;Y: 0.00;Z: 0.00]
Point [2] = [X: 3.00;Y: 5.00;Z: 0.00]
Point [3] = [X: 0.00;Y: 5.00;Z: 0.00]
Point [4] = [X: 3.00;Y: 0.00;Z: 3.00]
Point [5] = [X: 0.00;Y: 0.00;Z: 3.00]
Point [6] = [X: 3.00;Y: 5.00;Z: 3.00]
Point [7] = [X: 0.00;Y: 5.00;Z: 3.00]
Third step sort by x: Then
std::sort(vector_points.begin(), vector_points.begin() + 2, xComp);
std::sort(vector_points.begin() + 2, vector_points.begin() + 4, xComp);
std::sort(vector_points.begin() + 4, vector_points.begin() + 6, xComp);
std::sort(vector_points.begin() + 6, vector_points.begin() + 8, xComp);
Point [0] = [X: 0.00;Y: 0.00;Z: 0.00]
Point [1] = [X: 3.00;Y: 0.00;Z: 0.00]
Point [2] = [X: 0.00;Y: 5.00;Z: 0.00]
Point [3] = [X: 3.00;Y: 5.00;Z: 0.00]
Point [4] = [X: 0.00;Y: 0.00;Z: 3.00]
Point [5] = [X: 3.00;Y: 0.00;Z: 3.00]
Point [6] = [X: 0.00;Y: 5.00;Z: 3.00]
Point [7] = [X: 3.00;Y: 5.00;Z: 3.00]
I would like a vector with the first half of the points sorted in a counterclockwise direction.
Would anyone help me?