Source code for lsst.afw.geom.polygon.polygon
from ._polygon import Polygon
__all__ = []  # import this module only for its side effects
def __repr__(self):
    return "%s(%s)" % (self.__class__.__name__, [p for p in self.getVertices()])
def __reduce__(self):
    return self.__class__, (self.getVertices(),)
def __iter__(self):
    """Iterator over vertices"""
    vertices = self.getVertices()
    return iter(vertices)
def __getitem__(self, i):
    return [pt for pt in self][i]
def __len__(self):
    return self.getNumEdges()
def __contains__(self, point):
    """point in polygon?"""
    return self.contains(point)
def display(self, xy0=None, frame=1, ctype=None):
    """Display polygon on existing frame in ds9"""
    import lsst.geom
    import lsst.afw.display.ds9 as ds9
    xy0 = lsst.geom.Extent2D(0, 0) if xy0 is None else lsst.geom.Extent2D(xy0)
    with ds9.Buffering():
        for p1, p2 in self.getEdges():
            ds9.line((p1 - xy0, p2 - xy0), frame=frame, ctype=ctype)
def plot(self, axes=None, **kwargs):
    """Plot polygon with matplotlib
    Parameters
    ----------
    axes : `matplotlib.axes.Axes`
        Matplotlib axes to use, or None
    kwargs : any
        Additional arguments to `matplotlib.axes.Axes.plot`
        or `matplotlib.axes.Axes.scatter`.
    Returns
    -------
    axes : `matplotlib.axes.Axes`
        The axes used to make the plot (same as ``axes``, if provided).
    """
    import numpy
    if axes is None:
        import matplotlib.pyplot as plt
        plt.figure()
        axes = plt.axes()
    for p1, p2 in self.getEdges():
        x = (p1.getX(), p2.getX())
        y = (p1.getY(), p2.getY())
        axes.plot(x, y, **kwargs)
    vertices = self.getVertices()
    x = numpy.array([p[0] for p in vertices])
    y = numpy.array([p[1] for p in vertices])
    axes.scatter(x, y, **kwargs)
    return axes
Polygon.__repr__ = __repr__
Polygon.__reduce__ = __reduce__
Polygon.__iter__ = __iter__
Polygon.__getitem__ = __getitem__
Polygon.__len__ = __len__
Polygon.__contains__ = __contains__
Polygon.display = display
Polygon.plot = plot