我的问题与这个有关:c++ Sorting 2D Points 顺时针,但不知何故,该解决方案对我不起作用。我正在尝试逆时针排序 4 个 2d 点。
这是我的代码:
typedef struct p {
float x,y;
} Point;
double getClockwiseAngle(Point p) {
double angle = 0.0;
angle = atan2(p.x, -p.y);
return angle;
}
bool comparePoints(Point p1, Point p2) {
return getClockwiseAngle(p1) < getClockwiseAngle(p2);
}
int main() {
...
sort(givenPoints.begin(), givenPoints.end(), comparePoints);
...
}
示例:输入 (-4, 2), (1, 4), (0,1), (-1, 4)
输出 (-4, 2), (-1, 4), (1, 4), (0,1)