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