在 Python 中将多边形重置为其初始状态的程序

假设有一个多边形,有n个顶点、n个翻转轴和n个旋转点。以下情况适用于翻转轴和旋转点

  • 如果 n 是奇数,则每个翻转轴仅通过一个顶点和对边的中间。

  • 如果 n 是偶数,则一半的轴穿过一对相反的顶点,另一半穿过一对相反的边。

  • 两个跟随轴的角度为 360/2n。

现在,我们旋转提供的多边形。我们有 n 种不同类型的旋转器,k 旋转器将多边形在轴 k 处顺时针旋转 (360 xk)/n 度。有一个列表输入列表,其中包含几对整数。一对的第一个整数表示多边形是否要翻转或旋转。如果第一个整数为 1,则旋转多边形,如果为 2,则翻转多边形。第二个整数是 k,如果多边形被翻转,它会在轴 k 上翻转,否则,如果它被旋转,它会旋转 360/2n 的角度。然后在列表不为空时完成旋转和翻转。

我们的任务是向列表中添加另一个元素,以便可以将多边形重置为其初始位置。

图像指定了两种多边形的旋转轴。

所以,如果输入像 n = 6, input_list = [[1, 2], [1, 4], [2, 3], [2, 5], [1, 6]],那么输出将是(1, 4)

转换后,沿第 4 轴旋转会将多边形重置为其初始位置。

示例

让我们看看以下实现以更好地理解 -

def solve(n, input_list):
   decision_var = False
   position = 0

   for item in input_list:
      x = item[0]
      y = item[1]
      if x == 1:
         position += y
      else:
         position = y - position
         decision_var = not decision_var
   position = position % n

   if decision_var:
      return (2, position)
   else:
      return (1, n - position)

print(solve(6, [[1, 2], [1, 4], [2, 3], [2, 5], [1, 6]]))

输入

6, [[1, 2], [1, 4], [2, 3], [2, 5], [1, 6]]
输出结果
(1, 4)