0

我有一个凸多边形(多边形 A)和一个凹多边形(多边形 B)。我想弄清楚给定凸多边形的旋转角度的凸多边形是否适合凹多边形,因为凸多边形可以在凹多边形内旋转 360 度。

幼稚的计算方式。

以 Polygon B 的中点为 origin 初始化多边形 A。对于凸多边形的每个旋转角度,计算以下

步骤 1:计算点对应于具有旋转角的凸多边形。将旋转的凸多边形和凹多边形的所有点放在一个集合中
第 2 步:使用 grahamscan (Convex Hull) 和新的一组点找到凸多边形。
第 3 步:现在你有一个包含两个多边形的大凸多边形。这意味着你有新创建的多边形的顶点。我们称之为多边形 C
第 4 步:现在检查多边形 C 和多边形 B 是否具有相同的顶点集,如果是,则意味着多边形 B 包含多边形 A

一种潜在的优化可能是利用旋转对称角,但我不确定我们是否可以使用它。由于我们正在处理凸多边形,我们一定会在 (360/n) 度找到第一个对称。其中 n 是顶点数。

正方形示例的旋转对称性

在上述示例的情况下,我们能否将旋转角度映射为 1 度旋转对应于 91 度旋转,并在旋转对称角之前完成该过程?

无需遍历所有旋转角度即可解决此问题的任何其他有效方法。任何指针将不胜感激。

4

0 回答 0