任何人都可以帮我创建一个算法,IComparer,或一些排序数组或PointF元素列表的方法.可以说我PointF在我的数组中有以下元素:
我想要实现的是:
所以这个排序的数组看起来像这样:
含义,即在年底,如果我用绘制这些点,Graphics.DrawPolygon()我会得到不带线相互交叉一个封闭的多边形(在这种情况下矩形).
感谢您的时间
你想要的算法是格雷厄姆扫描.你可以在这里读到它:
http://en.wikipedia.org/wiki/Graham_scan
juharr的评论是正确的; 你无法做到这一点,IComparable因为这不是一个比较排序问题.要使比较排序起作用,您需要能够比较任何两个元素的相对大小.
一种更简单但更慢的算法是礼品包装算法:
http://en.wikipedia.org/wiki/Gift_wrapping_algorithm
仅供参考,您正在寻找的形状称为凸壳.这将有助于您搜索算法.