fix bounds

This commit is contained in:
jan 2023-04-12 22:40:08 -07:00
parent 87be06dcbe
commit 22e1c6ae1d
2 changed files with 7 additions and 4 deletions

View File

@ -368,8 +368,11 @@ class Pattern(PortList, AnnotatableImpl, Mirrorable):
mirr_x, rot2 = normalize_mirror(ref.mirrored)
if mirr_x:
ubounds[:, 1] *= -1
bounds = numpy.round(rotation_matrix_2d(ref.rotation + rot2)) @ ubounds
# note: rounding fixes up
# note: rounding fixes up sin/cos inaccuracy, probably unnecessary
corners = (numpy.round(rotation_matrix_2d(ref.rotation + rot2)) @ ubounds.T).T
bounds = numpy.vstack((numpy.min(corners, axis=0),
numpy.max(corners, axis=0))) * ref.scale + [ref.offset]
else:
# Non-manhattan rotation, have to figure out bounds by rotating the pattern

View File

@ -236,8 +236,8 @@ class Grid(Repetition):
Returns:
`[[x_min, y_min], [x_max, y_max]]` or `None`
"""
a_extent = self.a_vector * self.a_count
b_extent = self.b_vector * self.b_count if (self.b_vector is not None) else 0 # type: NDArray[numpy.float64] | float
a_extent = self.a_vector * (self.a_count - 1)
b_extent = self.b_vector * ((self.b_count - 1) if (self.b_vector is not None) else 0) # type: NDArray[numpy.float64] | float
corners = numpy.stack(((0, 0), a_extent, b_extent, a_extent + b_extent))
xy_min = numpy.min(corners, axis=0)