diff --git a/masque/shapes/polygon.py b/masque/shapes/polygon.py index fc17f61..c8c3ddd 100644 --- a/masque/shapes/polygon.py +++ b/masque/shapes/polygon.py @@ -256,6 +256,11 @@ class Polygon(Shape): Returns: A Polygon object containing the requested rectangle """ + if sum(int(pp is None) for pp in (xmin, xmax, xctr, lx)) != 2: + raise PatternError('Exactly two of xmin, xctr, xmax, lx must be provided!') + if sum(int(pp is None) for pp in (ymin, ymax, yctr, ly)) != 2: + raise PatternError('Exactly two of ymin, yctr, ymax, ly must be provided!') + if lx is None: if xctr is None: assert xmin is not None diff --git a/masque/utils/vertices.py b/masque/utils/vertices.py index 23fb601..5fddd52 100644 --- a/masque/utils/vertices.py +++ b/masque/utils/vertices.py @@ -18,9 +18,9 @@ def remove_duplicate_vertices(vertices: ArrayLike, closed_path: bool = True) -> `vertices` with no consecutive duplicates. This may be a view into the original array. """ vertices = numpy.asarray(vertices) - duplicates = (vertices == numpy.roll(vertices, 1, axis=0)).all(axis=1) + duplicates = (vertices == numpy.roll(vertices, -1, axis=0)).all(axis=1) if not closed_path: - duplicates[0] = False + duplicates[-1] = False return vertices[~duplicates]