检测 tkinter 模式是否在重复自身

Detect whether a tkinter pattern is repeating itself

我有一个绘制图案的程序(更具体地说是一个螺旋计)。一定时间后,它将不可避免地开始重演。我需要一种方法来检测这种情况何时发生。

有几种方法可以解决这个问题。

  1. 检测绘制线条的位置是否在黑色像素之上。重复几次后停止
  2. 以某种方式预先计算完成一个模式所需的迭代次数
  3. 测试新线与旧线相交
  4. 存储所有绘制的点,然后在生成的新点与旧点相同时停止。

哪种方法最好?

方法一已经过时,随着研究的进行,tkinter canvas 没有直接的方法来确定其上给定像素的颜色。方法 2 将非常复杂,超出我的能力范围。方法 3 不切实际,因为正常模式会定期自相交。但是方法 4 对我有用。这是我的做法:

#Detection of whether pattern is repeating itself
        if point2 not in previousPositions:
            previousPositions.append(point2)
            inarow = 0
        else:
            inarow += 1

        if inarow > 5:
            print "Pattern is detected to be repeating itself"
            run = 0

这是一个循环,其中将 run 设置为零会停止循环。一旦 5 个新点与先前绘制的点匹配,这将成功停止绘制模式

可能存在的缺陷

在图形结束之前,某些模式可能最终具有与其他点匹配的点。这种情况不可能发生超过 5 次。为此,制图师必须以不同的顺序在相同的点上以不同的方向移动。这可以通过计算点出现的顺序来解决。但是,这种情况反复发生的可能性极小,我找不到导致此问题的模式。