Added a spiral scan option
This commit is contained in:
parent
2bfb988460
commit
ad8fd54cb7
1 changed files with 29 additions and 12 deletions
|
|
@ -29,19 +29,36 @@ def construct_grid(initial, step_sizes, n_steps, style="raster"):
|
||||||
"""
|
"""
|
||||||
arr = []
|
arr = []
|
||||||
|
|
||||||
for i in range(n_steps[0]): # x axis
|
if style == "spiral":
|
||||||
arr.append([])
|
# deal with the centre image immediately
|
||||||
for j in range(n_steps[1]): # y axis
|
coord = initial
|
||||||
# Create a coordinate array
|
arr.append(initial)
|
||||||
coord = [initial[ax] + [i, j][ax] * step_sizes[ax] for ax in range(2)]
|
# for spiral, n_steps is the number of shells, and so only requires n_steps[0]
|
||||||
# Append coordinate array to position grid
|
for i in range(2, n_steps[0]+1):
|
||||||
arr[i].append(tuple(coord))
|
arr.append([])
|
||||||
|
side_length = (2 * i) - 1
|
||||||
|
|
||||||
# Style modifiers
|
# iteratively generate the next location to append
|
||||||
if style == "snake":
|
coord = [coord[ax] + [-1,1][ax] * step_sizes[ax] for ax in range(2)]
|
||||||
for i, line in enumerate(arr):
|
for direction in ([1,0],[0,-1],[-1,0],[0,1]):
|
||||||
if i % 2 != 0:
|
for edge_images in range(side_length-1):
|
||||||
line.reverse()
|
coord = [coord[ax] + direction[ax] * step_sizes[ax] for ax in range(2)]
|
||||||
|
arr[i-1].append(tuple(coord))
|
||||||
|
|
||||||
|
else:
|
||||||
|
for i in range(n_steps[0]): # x axis
|
||||||
|
arr.append([])
|
||||||
|
for j in range(n_steps[1]): # y axis
|
||||||
|
# Create a coordinate array
|
||||||
|
coord = [initial[ax] + [i, j][ax] * step_sizes[ax] for ax in range(2)]
|
||||||
|
# Append coordinate array to position grid
|
||||||
|
arr[i].append(tuple(coord))
|
||||||
|
|
||||||
|
# Style modifiers
|
||||||
|
if style == "snake":
|
||||||
|
for i, line in enumerate(arr):
|
||||||
|
if i % 2 != 0:
|
||||||
|
line.reverse()
|
||||||
|
|
||||||
return arr
|
return arr
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue