Python - 互补齿轮形状

时间:2018-03-18 22:55:58

标签: python matplotlib edge-detection concave-hull

我试图找到互补的旋转"齿轮"形状到任何输入多边形形状。例如,该多边形旋转,使得互补齿轮变得明显。两种形状都能够无干扰地旋转。

我在定义第二个多边形时遇到了问题,第二个多边形是白色内部区域的边缘。我能想到的一种方法是"采样"沿其圆周的输入形状,并像之前一样旋转以生成pointcloud。可以使用凹壳算法(Alpha形状)来获得边缘。

虽然这样可行,但我觉得必须有一个更优雅的解决方案来解决这个问题。

由于

gears 多边形及其旋转图像

sampled shapes 采样多边形和生成的pointcloud

zoom edge 关闭边缘

2 个答案:

答案 0 :(得分:0)

我明白了。解决方案是跟踪每个边的所有顶点和特殊点。然后,可以通过对所有获得的曲线进行交叉来提取内齿轮形状。

边缘上的接触点是该边缘上最接近齿轮瞬时旋转中心的点,这是两个基圆接触的点。

我正在整形地使用十字路口。

我尝试上传gif但是没有用,所以这里有一个链接:

https://photos.app.goo.gl/nuYUv03ZWTYpFJrq2

test

答案 1 :(得分:0)

谢谢你们,我解决了。解决方案是跟踪每个边缘上的每个顶点和接触点。接触点是最靠近瞬时旋转中心的那条边,这是两个基圆接触的点。

然后我用形状来找到所有获得的形状的交集,它代表内齿轮。

我尝试上传一个gif,但这不起作用,所以在这里它是:

https://photos.app.goo.gl/nuYUv03ZWTYpFJrq2

test