wip get_bounds
This commit is contained in:
parent
6f67c81b97
commit
835bcc24e0
@ -1,21 +1,21 @@
|
|||||||
"""
|
"""
|
||||||
Base object representing a lithography mask.
|
Base object representing a lithography mask.
|
||||||
"""
|
"""
|
||||||
from typing import Callable, Sequence, cast, Mapping, Self, Any, Iterable, TypeVar
|
from typing import Callable, Sequence, cast, Mapping, Self, Any, Iterable, TypeVar, MutableMapping
|
||||||
import copy
|
import copy
|
||||||
import logging
|
import logging
|
||||||
from itertools import chain
|
from itertools import chain
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
|
|
||||||
import numpy
|
import numpy
|
||||||
from numpy import inf
|
from numpy import inf, pi
|
||||||
from numpy.typing import NDArray, ArrayLike
|
from numpy.typing import NDArray, ArrayLike
|
||||||
# .visualize imports matplotlib and matplotlib.collections
|
# .visualize imports matplotlib and matplotlib.collections
|
||||||
|
|
||||||
from .ref import Ref
|
from .ref import Ref
|
||||||
from .shapes import Shape, Polygon, Path, DEFAULT_POLY_NUM_VERTICES
|
from .shapes import Shape, Polygon, Path, DEFAULT_POLY_NUM_VERTICES
|
||||||
from .label import Label
|
from .label import Label
|
||||||
from .utils import rotation_matrix_2d, annotations_t, layer_t
|
from .utils import rotation_matrix_2d, annotations_t, layer_t, normalize_mirror
|
||||||
from .error import PatternError
|
from .error import PatternError
|
||||||
from .traits import AnnotatableImpl, Scalable, Mirrorable, Rotatable, Positionable, Repeatable, Bounded
|
from .traits import AnnotatableImpl, Scalable, Mirrorable, Rotatable, Positionable, Repeatable, Bounded
|
||||||
from .ports import Port, PortList
|
from .ports import Port, PortList
|
||||||
@ -358,7 +358,7 @@ class Pattern(PortList, AnnotatableImpl, Mirrorable):
|
|||||||
cache[target] = unrot_bounds
|
cache[target] = unrot_bounds
|
||||||
|
|
||||||
for ref in refs:
|
for ref in refs:
|
||||||
if numpy.isclose(ref.rotation % pi, 0):
|
if numpy.isclose(ref.rotation % (pi / 2), 0):
|
||||||
if unrot_bounds is None:
|
if unrot_bounds is None:
|
||||||
bounds = None
|
bounds = None
|
||||||
else:
|
else:
|
||||||
@ -368,6 +368,7 @@ class Pattern(PortList, AnnotatableImpl, Mirrorable):
|
|||||||
ubounds[:, 1] *= -1
|
ubounds[:, 1] *= -1
|
||||||
bounds = numpy.round(rotation_matrix(ref.rotation + rot2)) @ ubounds
|
bounds = numpy.round(rotation_matrix(ref.rotation + rot2)) @ ubounds
|
||||||
# note: rounding fixes up
|
# note: rounding fixes up
|
||||||
|
# TODO: repetitions!
|
||||||
else:
|
else:
|
||||||
# Non-manhattan rotation, have to figure out bounds by rotating the pattern
|
# Non-manhattan rotation, have to figure out bounds by rotating the pattern
|
||||||
bounds = ref.get_bounds(library[target], library=library)
|
bounds = ref.get_bounds(library[target], library=library)
|
||||||
|
Loading…
Reference in New Issue
Block a user