I have a defined function:
def micronToStep(v):
#approximately 62nm/step
return round((v * 1000)/62)
And the command for range() loop:
xyStep = 5
xRange = 400
for x in range(-micronToStep(xRange/2), micronToStep(xRange/2) - micronToStep(xyStep), micronToStep(xyStep))
For xyStep = 5, xRange = 400 the command: len(range(-micronToStep(xRange/2), micronToStep(xRange/2) - micronToStep(xyStep), micronToStep(xyStep))) returns 79, which not exceed the limit xRange/xyStep = 80.
But for xyStep = 1, xRange = 400 the len(range()) function returns incorrect value 403 instead of value less or equal to xRange/xyStep = 400.
I think the problem lies in micronToStep() function.
How to correct this, that for range() loop would not exceed the limit of xRange/xyStep by number of iterations?
I figured out that using
ceil()instead ofround()inmicronToStep()function works pretty good but I think it's not an optimal solution.