algorithm - 检查多边形是否对称

标签 algorithm geometry polygon computational-geometry symmetric

给定一个笛卡尔坐标下的多边形(不一定是凸的),我想知道是否有任何方法可以检查该多边形的对称性?

我可以想到一个复杂度为 O(N) 的解决方案:使用旋转卡尺检查每对对边是否平行且大小相等。但是,我无法证明该算法的正确性。您能提出更好的解决方案吗?

最佳答案

  • 您计算多边形的重心。
  • 你将它平移到原点,这样你的重心就以 (0,0) 为坐标。
  • 然后对于坐标为 (i, j) 的每个顶点,检查是否存在坐标为 (-i, -j) 的顶点。

这将证明您的多边形确实是对称的。

复杂度:N,假设您可以直接从坐标访问顶点。

关于algorithm - 检查多边形是否对称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5881009/

相关文章:

javascript - Three.js:无法使用 THREE.ExtrudeGeometry 打洞(切割)线形状

algorithm - 计算严格递增的序列

python - 2道数学题

algorithm - 随机选择枢轴的优点

java - 3D游戏几何

c++ - General_polygon_2 中的顶点坐标

c++ - 如何获得 voronoi 细胞周围的点?

java - anchor 不遵循多边形 - JavaFX

c++ - OpenCV/C++ 中的 MATLAB sub2ind/ind2sub

python - 在正整数的有序列表中找到最大的正增量