У меня есть векторные линии, и я создал структуру для сортировки по осям X и Y:
struct linesSort {
bool operator() (Vec4i l1, Vec4i l2) {
int x1 = l1[0];
int y1 = l1[1];
int x2 = l2[0];
int y2 = l2[1];
if (x1 == x2) return (y1 < y2);
else return (x1 < x2);
}
};
А потом я звоню: sort(lines.begin(), lines.end(), linesSort());
Результат очень хороший, за исключением некоторого случая, когда положение двух ребер линии изменилось друг на друга. такие как:
[0, 328, 639, 272]
[0, 329, 1, 297]
[0, 347, 639, 291]
[0, 367, 639, 311]
[639, 311, 0, 368]
[0, 368, 639, 310]
[639, 310, 0, 369]
[639, 310, 0, 369]
[0, 387, 639, 331]
Где я не прав? пожалуйста, помогите!