rotating_calipers
Rotating calipers 1.0
旋转卡尺是Python模块,该模块实现了具有相同名称的算法。
算法是由Michalel Shamos于1978年首次发明的,并获得了“旋转卡钳”的名字,这要归功于Godfried Toussant在1983年在他的论文中介绍了它。
该方法之所以如此命名,是因为该想法类似于将弹簧加载的游标卡钳围绕凸多边形的外部旋转。每当卡尺的一个刀片都平放在多边形的边缘时,它会形成一个抗双相或边缘,触摸相反的刀片。围绕多边形的卡尺的完整“旋转”检测到所有抗虫对;所有对被视为图形的对组的集合形成了一个索。旋转卡尺的方法可以解释为扫描线算法的投影偶,其中扫描横跨线的斜率而不是跨点或y颜色的点。
上面的描述从Wikipedia页面进行了改编:https://en.wikipedia.org/wiki/rotating_calipers
我为大学项目实施了“旋转卡钳”算法。令人惊讶的是,我在Python中找到了有效的解决方案遇到了很多麻烦。这就是为什么我想与需要快速“旋转卡钳”实现的每个人分享的原因。
由于旋转卡尺在线性时间内运行,因此在此处使用Graham的算法在此计算输入WIHCH上的凸面船体,该算法在O(nlogn)中运行。总而言之
Linux:
使用的示例可以在此处找到