检测 tkinter 模式是否在重复自身
Detect whether a tkinter pattern is repeating itself
我有一个绘制图案的程序(更具体地说是一个螺旋计)。一定时间后,它将不可避免地开始重演。我需要一种方法来检测这种情况何时发生。
有几种方法可以解决这个问题。
- 检测绘制线条的位置是否在黑色像素之上。重复几次后停止
- 以某种方式预先计算完成一个模式所需的迭代次数
- 测试新线与旧线相交
- 存储所有绘制的点,然后在生成的新点与旧点相同时停止。
哪种方法最好?
方法一已经过时,随着研究的进行,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 次。为此,制图师必须以不同的顺序在相同的点上以不同的方向移动。这可以通过计算点出现的顺序来解决。但是,这种情况反复发生的可能性极小,我找不到导致此问题的模式。
我有一个绘制图案的程序(更具体地说是一个螺旋计)。一定时间后,它将不可避免地开始重演。我需要一种方法来检测这种情况何时发生。
有几种方法可以解决这个问题。
- 检测绘制线条的位置是否在黑色像素之上。重复几次后停止
- 以某种方式预先计算完成一个模式所需的迭代次数
- 测试新线与旧线相交
- 存储所有绘制的点,然后在生成的新点与旧点相同时停止。
哪种方法最好?
方法一已经过时,随着研究的进行,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 次。为此,制图师必须以不同的顺序在相同的点上以不同的方向移动。这可以通过计算点出现的顺序来解决。但是,这种情况反复发生的可能性极小,我找不到导致此问题的模式。