我有一个由点表示的凸多边形。点由 x坐标数组和 y坐标数组表示。
例如:
X = {6, 1, 5, 0, 3}
Y = {4, 0, 0, 4, 6}
如何通过顺时针 排序此点?点数并不总是相同,但多边形仍然是凸的。
是否有解决方案未使用 atan2或 math.h 中的其他功能?
答案 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]);
获得相应的角度后,您可以使用它们对点进行排序。