[英]sorting PointF array
任何人都可以帮助我创建算法,IComparer或某种对PointF
元素的数组或列表进行排序的方法。 可以说我在数组中跟随了PointF
元素:
我想要实现的是:
所以这个排序的数组看起来像这样:
意思是,最后,如果我要使用Graphics.DrawPolygon()
绘制这些点,我会得到一个闭合的多边形(在这种情况下是一个矩形),没有相互交叉的线。
感谢您的时间
您想要的算法是Graham Scan。 你可以在这里读到它:
http://en.wikipedia.org/wiki/Graham_scan
juharr的评论是正确的; 你无法用IComparable
做到这一点,因为这不是一个比较排序问题 。 要使比较排序起作用,您需要能够比较任何两个元素的相对大小。
较容易但较慢的算法是礼物包装算法:
http://en.wikipedia.org/wiki/Gift_wrapping_algorithm
仅供参考,您正在寻找的形状称为凸壳 。 这将在搜索算法时为您提供帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.