-
Notifications
You must be signed in to change notification settings - Fork 0
/
spiral2.py
107 lines (97 loc) · 2.82 KB
/
spiral2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
import tkinter
import math
from random import randint
tick = 1
MS = 1
WIDTH = 600
HEIGHT = 600
XMOD = 0
YMOD = 0
X, Y = 0, 0
C = 0
#prime ratio 2538/22700
def is_prime(num):
return 2538 > randint(0,22700)
def hexify(x:int,y:int,z:int) -> "HEXCODE":
returnstring = (hex(x)[-2:]).upper() + (hex(y)[-2:]).upper() + (hex(z)[-2:]).upper()
returnstring = returnstring.replace("X", "0")
return "#" + returnstring
def colorSweep(num:int) -> "HEXCODE":
"Takes an integer and returns a hexcode color"
frac = (num//256) % 6
over = num%256
anti = 255-over
if frac == 0:
return hexify(255, over, 0)
if frac == 1:
return hexify(anti, 255, 0)
if frac == 2:
return hexify(0, 255, over)
if frac == 3:
return hexify(0, anti, 255)
if frac == 4:
return hexify(over, 0, 255)
if frac == 5:
return hexify(255, 0, anti)
class Animation:
def __init__(self):
global MS
self._window = tkinter.Tk()
self._canvas = tkinter.Canvas(
master = self._window, width = WIDTH, height = HEIGHT,
background = "#000000")
self._canvas.grid(row = 0, column = 0)
self._window.after(MS, self._next)
self._window.mainloop()
def _next(self):
global MS, tick, WIDTH, HEIGHT, XMOD, YMOD, X, Y, C
#X = math.cos(tick*math.pi/2)*tick
#Y = math.sin(tick*math.pi/2)*tick
if (tick == 1):
X, Y = 0, 0
elif(tick == 2):
X, Y = 1, 0
YMOD = 1
C = YMOD
elif (XMOD > 0):
X = X + 1
C = C-1
if (C == 0):
YMOD = XMOD
XMOD = 0
C = YMOD
elif (YMOD > 0):
Y = Y + 1
C = C-1
if (C == 0):
XMOD = -YMOD -1
YMOD = 0
C = XMOD
elif (XMOD < 0):
X = X - 1
C = C+1
if (C == 0):
YMOD = XMOD
XMOD = 0
C = YMOD
elif (YMOD < 0):
Y = Y - 1
C = C+1
if (C == 0):
XMOD = -YMOD + 1
YMOD = 0
C = XMOD
if (is_prime(tick)):
self._canvas.create_rectangle(WIDTH/2 - 2+X*4, HEIGHT/2 - 2+Y*4,
WIDTH/2 + 2+X*4, HEIGHT/2 + 2+Y*4,
fill = "white")
if (tick == 1):
self._canvas.create_rectangle(WIDTH/2 - 2+X*4, HEIGHT/2 - 2+Y*4,
WIDTH/2 + 2+X*4, HEIGHT/2 + 2+Y*4,
fill = "red")
tick += 1
if tick < 22700:
self._window.after(MS, self._next)
else:
print("Done!")
Animation()