lsst.afw
g3a5ebb7d8a+28b83bf6a5
Toggle main menu visibility
Loading...
Searching...
No Matches
python
lsst
afw
geom
polygon.py
Go to the documentation of this file.
1
# This file is part of afw.
2
#
3
# Developed for the LSST Data Management System.
4
# This product includes software developed by the LSST Project
5
# (https://www.lsst.org).
6
# See the COPYRIGHT file at the top-level directory of this distribution
7
# for details of code ownership.
8
#
9
# This program is free software: you can redistribute it and/or modify
10
# it under the terms of the GNU General Public License as published by
11
# the Free Software Foundation, either version 3 of the License, or
12
# (at your option) any later version.
13
#
14
# This program is distributed in the hope that it will be useful,
15
# but WITHOUT ANY WARRANTY; without even the implied warranty of
16
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
# GNU General Public License for more details.
18
#
19
# You should have received a copy of the GNU General Public License
20
# along with this program. If not, see <https://www.gnu.org/licenses/>.
21
22
__all__ = [
"Polygon"
]
# import this module only for its side effects
23
24
from
lsst.utils
import
continueClass
25
from
._geom
import
Polygon
26
27
28
@continueClass
29
class
Polygon:
# noqa: F811
30
def
__repr__
(self):
31
return
f
"{self.__class__.__name__}({[p for p in self.getVertices()]})"
32
33
def
__reduce__
(self):
34
return
self.
__class__
, (self.
getVertices
(),)
35
36
def
__iter__
(self):
37
"""Iterator over vertices"""
38
vertices = self.
getVertices
()
39
return
iter(vertices)
40
41
def
__getitem__
(self, i):
42
return
[pt
for
pt
in
self][i]
43
44
def
__len__
(self):
45
return
self.
getNumEdges
()
46
47
def
__contains__
(self, point):
48
"""point in polygon?"""
49
return
self.
contains
(point)
50
51
def
display(self, xy0=None, frame=1, ctype=None):
52
"""Display polygon on existing frame"""
53
import
lsst.geom
54
import
lsst.afw.display
as
afwDisplay
55
xy0 =
lsst.geom.Extent2D
(0, 0)
if
xy0
is
None
else
lsst.geom.Extent2D
(xy0)
56
disp = afwDisplay.Display(frame=frame)
57
with
disp.Buffering():
58
for
p1, p2
in
self.
getEdges
():
59
disp.line((p1 - xy0, p2 - xy0), ctype=ctype)
60
61
def
plot
(self, axes=None, **kwargs):
62
"""Plot polygon with matplotlib
63
64
Parameters
65
----------
66
axes : `matplotlib.axes.Axes`
67
Matplotlib axes to use, or None
68
kwargs : any
69
Additional arguments to `matplotlib.axes.Axes.plot`
70
or `matplotlib.axes.Axes.scatter`.
71
72
Returns
73
-------
74
axes : `matplotlib.axes.Axes`
75
The axes used to make the plot (same as ``axes``, if provided).
76
"""
77
import
numpy
78
if
axes
is
None
:
79
import
matplotlib.pyplot
as
plt
80
plt.figure()
81
axes = plt.axes()
82
for
p1, p2
in
self.
getEdges
():
83
x = (p1.getX(), p2.getX())
84
y = (p1.getY(), p2.getY())
85
axes.plot(x, y, **kwargs)
86
vertices = self.
getVertices
()
87
x = numpy.array([p[0]
for
p
in
vertices])
88
y = numpy.array([p[1]
for
p
in
vertices])
89
axes.scatter(x, y, **kwargs)
90
return
axes
lsst::afw::geom::polygon::Polygon.__contains__
__contains__(self, point)
Definition
polygon.py:47
lsst::afw::geom::polygon::Polygon.__getitem__
__getitem__(self, i)
Definition
polygon.py:41
lsst::afw::geom::polygon::Polygon.__len__
__len__(self)
Definition
polygon.py:44
lsst::afw::geom::polygon::Polygon.__iter__
__iter__(self)
Definition
polygon.py:36
lsst::afw::geom::polygon::Polygon::getEdges
std::vector< std::pair< Point, Point > > getEdges() const
Get vector of edges.
Definition
Polygon.cc:326
lsst::afw::geom::polygon::Polygon.plot
plot(self, axes=None, **kwargs)
Definition
polygon.py:61
lsst::afw::geom::polygon::Polygon.__class__
__class__
Definition
polygon.py:34
lsst::afw::geom::polygon::Polygon::getNumEdges
size_t getNumEdges() const
Return number of edges.
Definition
Polygon.cc:309
lsst::afw::geom::polygon::Polygon::getVertices
std::vector< Point > getVertices() const
Get vector of vertices.
Definition
Polygon.cc:337
lsst::afw::geom::polygon::Polygon.__reduce__
__reduce__(self)
Definition
polygon.py:33
lsst::afw::geom::polygon::Polygon::contains
bool contains(Point const &point) const
Returns whether the polygon contains the point.
Definition
Polygon.cc:356
lsst::afw::geom::polygon::Polygon.__repr__
__repr__(self)
Definition
polygon.py:30
lsst::geom::Extent< double, 2 >
lsst::afw.display
Definition
__init__.py:1
lsst::geom
lsst.utils
Generated on
for lsst.afw by
1.17.0