【发布时间】:2012-06-28 10:35:12
【问题描述】:
我写了一个格雷厄姆扫描凸包算法的实现,对于测试数据我使用了点
[(2.0,2.0),(4.0,2.0),(0.5,2.5),(3.0,3.5),(1.0,4.0),(0.0,4.0),(1.0,1.0),(3.0,2.5),(4.0,4.0),(3.5,1.5),(0.5,1.0)]
根据我的程序,凸包是
[(0.0,4.0),(1.0,4.0),(4.0,4.0),(3.0,2.5),(4.0,2.0),(3.5,1.5),(1.0,1.0),(0.5,1.0)]
但是,我希望凸包是
[(0.0,4.0),(1.0,4.0),(4.0,4.0),(4.0,2.0),(3.5,1.5),(1.0,1.0),(0.5,1.0)]
我也用https://github.com/shadwstalkr/GrahamScanDemo/ 尝试了我的一组点,这也给出了相同的解决方案。经过多次抱怨和抱怨后,我在维基百科上读到“如果对象内的每一对点,连接它们的直线段上的每个点也在对象内,则该对象是凸的。”
在画出我的观点和船体之后。看来我的程序在该定义内生成了一个对象,但这是否意味着仅按角度排序就会得到一个凸包,而凸包中没有任何点?
我是不是不明白凸包实际上是什么,我想解决一个不同的问题,还是我的实现和 shadwstalkr 都不正确?
【问题讨论】:
-
你的期望值是从哪里得到的?
-
这就是我的直觉和“橡皮筋”隐喻产生的结果。
标签: algorithm convex-hull grahams-scan