算法:几何形状可能包含其他形状

时间:2018-12-21 09:06:18

标签: algorithm geometry

我们有一个算法,可以创建矩形和第二个形状,其侧面的数字不确定,并且可以具有内部形状(例如,甜甜圈样式),目标是创建一个算法,该算法将查看是否可以包含矩形几何形状。

该程序在python中使用,它整形使用。首先我们测试这些区域,如果矩形的区域可以包含在形状中,我们只需将其放在中心并进行测试。如果没有输入,我们将旋转一度(例如)并继续测试。 180度后,我们停止旋转,并以1厘米(例如)的原始形状将其移动(以使所有位置围绕几何形状的重心)。

该程序运行良好,但对于某种形式来说,它相对较慢(需要数分钟的计算时间),不是三角学的专业人士,我要求您提供帮助以加快治疗速度。

您有什么建议吗?

谢谢。

例如要慢:

http://image.noelshack.com/fichiers/2018/51/5/1545390818-3dadvwcbpzmewfdbzrm7.png

http://image.noelshack.com/fichiers/2018/51/5/1545390818-htadvwcbpzmewfdbzrq7.png

http://image.noelshack.com/fichiers/2018/51/5/1545390818-ojadvwcbpzmewfdbzqg6.png

http://image.noelshack.com/fichiers/2018/51/5/1545390818-3dadvwcbpzmewfdbzrm7.png

1 个答案:

答案 0 :(得分:0)

我们可以找到旋转的矩形是否适合滑点逼近的多边形。

在某个多边形顶点中放置矩形的一个角(let A),并将另一个角B放置在该顶点的右侧(如果矩形边缘太长,则在下一个边缘)。向右滑动A直到A或B遇到多边形顶点。检查C和D的轨迹是否与多边形边缘相交。这些轨迹可能是笔直的,也可能是类似旋环的(如果B在A以外的另一个edgr上滑动)。当A或B遇到下一个顶点时,重复下一个。如果失败,还检查其他放置-B-C边缘。

遗憾的是,这种方法不适用于凹面多边形。