You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.6 KiB
Python
61 lines
1.6 KiB
Python
from os import getcwd
|
|
from os.path import join, dirname
|
|
from math import sqrt
|
|
|
|
MAX_RADIUS = 5
|
|
LINES = 321
|
|
COLS = 221
|
|
|
|
expansion_groups = dict()
|
|
CWD = join(getcwd(), dirname(__file__))
|
|
|
|
for l in range(MAX_RADIUS*10+1):
|
|
for c in range(MAX_RADIUS*10+1):
|
|
dist = sqrt(l*l+c*c)*0.1
|
|
if dist <= MAX_RADIUS:
|
|
if not dist in expansion_groups:
|
|
expansion_groups[dist] = []
|
|
expansion_groups[dist].append((l,c))
|
|
|
|
if c>0: expansion_groups[dist].append((l,-c))
|
|
if l>0: expansion_groups[dist].append((-l,c))
|
|
if c>0 and l>0: expansion_groups[dist].append((-l,-c))
|
|
|
|
ascending_dist = sorted(expansion_groups)
|
|
groups_no = len(expansion_groups)
|
|
|
|
#============================================= prepare text to file
|
|
|
|
no_of_pos = 0
|
|
for g in expansion_groups.values():
|
|
no_of_pos += len(g)
|
|
|
|
file = []
|
|
file.append(f"const int expansion_positions_no = {no_of_pos};\n")
|
|
file.append(f"const float expansion_pos_dist[{no_of_pos}] = {{")
|
|
|
|
for dist in ascending_dist:
|
|
for p in expansion_groups[dist]:
|
|
file.extend([f"{dist}",","])
|
|
file.pop()
|
|
|
|
file.append(f"}};\n\nconst int expansion_pos_l[{no_of_pos}] = {{")
|
|
|
|
for dist in ascending_dist:
|
|
for p in expansion_groups[dist]:
|
|
file.extend([f"{p[0]}",","])
|
|
file.pop()
|
|
|
|
file.append(f"}};\n\nconst int expansion_pos_c[{no_of_pos}] = {{")
|
|
|
|
for dist in ascending_dist:
|
|
for p in expansion_groups[dist]:
|
|
file.extend([f"{p[1]}",","])
|
|
file.pop()
|
|
file.append("};\n")
|
|
|
|
#============================================= write to file
|
|
|
|
with open(join(CWD, "expansion_groups.h"), 'w') as f:
|
|
f.write(''.join(file))
|