-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathHello_2_ Spirographs.py
53 lines (48 loc) · 1.68 KB
/
Hello_2_ Spirographs.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
notice = """
Hello 2 Spirographs Demo
-----------------------------------
| Copyright 2022 by Joel C. Alcarez |
| [joelalcarez1975@gmail.com] |
|-----------------------------------|
| We make absolutely no warranty |
| of any kind, expressed or implied |
|-----------------------------------|
| This graphics library outputs |
| to a bitmap file. |
-----------------------------------
"""
from pythonbmp.BITMAPlib import(
newBMP,
pi,
centercoord,
plotlines,
spirographvert as f,
getfuncmetastr as meta,
saveBMP
)
import subprocess as proc
from os import path
def main():
print(f'{notice}\n{meta(f)}')
imgedt = 'mspaint' # replace with another editor if Unix
rootdir = path.dirname(__file__) # get path of this script
mx = my = 512 # bitmap size
bmp = newBMP(mx, my, 4) # 16 color
(x, y) = centercoord(bmp) # How to get center of the bitmap
file = f'Hello{f.__name__}2.bmp' # file name
d = 1/60 # angle increment
lim = pi * 60 + d # angle limit
r = 250
for c in range(1, 3):
plotlines(bmp, f(x, y, # control spirograph location
r , # control spirograph size
1, .2 + c / 16, # controls spirograph shape
d, lim), # angle step and limit
c) # connect the dots with lines
r -= 20
saveBMP(file, bmp) # save file
print('Saved to %s in %s\nAll done close %s to finish' % \
(file, rootdir, imgedt)) # tell user we are done
ret = proc.call([imgedt, file])
if __name__=="__main__":
main()