C - 凸多边形 - 排序点(顺时针)

时间:2011-11-06 10:39:52

标签: c sorting polygon convex

我有一个由点表示的凸多边形。点由 x坐标数组 y坐标数组表示。

例如:

X = {6, 1, 5, 0, 3}
Y = {4, 0, 0, 4, 6}

如何通过顺时针 排序此点?点数并不总是相同,但多边形仍然是凸的。


是否有解决方案未使用 atan2或 math.h 中的其他功能?

2 个答案:

答案 0 :(得分:3)

我建议你按极角对它们进行排序,但最好是将凸多边形内的一个点作为原点来做到这一点。为了得到这样一个点,你可以使用你的poligon的任何对角线的中点,例如((x [0] + x [2])/ 2,(y [0] + y [2])/ 2 )。

答案 1 :(得分:2)

我认为你可以通过converting them to polar coordinates逃脱。 C有atan2所以你可以逃脱:

atan2(y[0], x[0]);

获得相应的角度后,您可以使用它们对点进行排序。