Класс Polygon
- Все реализуемые интерфейсы:
Shape, Serializable
public class Polygon extends Object implements Shape, Serializable
Polygon инкапсулирует описание замкнутой двумерной области в координатном пространстве. Эта область ограничена произвольным количеством отрезков, каждый из которых является одной из сторон многоугольника. Внутри многоугольник состоит из списка пар координат (x,y), где каждая пара задаёт вершину многоугольника, а две соседние пары являются конечными точками отрезка, который представляет собой сторону многоугольника. Первая и последняя пары точек (x,y) соединены отрезком, замыкающим многоугольник. Этот Polygon определён правилом закраски «чётный-нечётный». Определение правила закраски «чётный-нечётный» см. в разделе WIND_EVEN_ODD. Методы проверки попадания в эту область, в том числе методы contains, intersects и inside, используют определение внутренней области, описанное в комментариях к классу Shape.- Начиная с версии:
- 1.0
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected Rectangle |
bounds |
Границы этого Polygon. |
int |
npoints |
Общее количество точек. |
int[] |
xpoints |
Массив координат X. |
int[] |
ypoints |
Массив координат Y. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
Polygon() |
Создаёт пустой многоугольник. |
Polygon |
Создаёт и инициализирует Polygon на основе указанных параметров. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
addPoint |
Добавляет указанные координаты в этот Polygon. |
boolean |
contains |
Проверяет, находятся ли указанные координаты внутри границ Shape, согласно определению внутренней области. |
boolean |
contains |
Проверяет, полностью ли внутренняя область Shape содержит указанную прямоугольную область. |
boolean |
contains |
Определяет, находятся ли указанные координаты внутри этого Polygon. |
boolean |
contains |
Проверяет, находится ли указанная точка Point2D внутри границ Shape, согласно определению внутренней области. |
boolean |
contains |
Проверяет, полностью ли внутренняя область Shape содержит указанный Rectangle2D. |
boolean |
contains |
Определяет, находится ли указанная точка Point внутри этого Polygon. |
Rectangle |
getBoundingBox() |
Устарело. |
Rectangle |
getBounds() |
Возвращает ограничивающий прямоугольник этого Polygon. |
Rectangle2D |
getBounds2D() |
Возвращает ограничивающий прямоугольник Shape с более высокой точностью, чем метод getBounds. |
PathIterator |
getPathIterator |
Возвращает объект-итератор, проходящий вдоль границы этого Polygon и предоставляющий доступ к геометрии контура этого Polygon. |
PathIterator |
getPathIterator |
Возвращает объект-итератор, проходящий вдоль границы Shape и предоставляющий доступ к геометрии контура Shape. |
boolean |
inside |
Устарело. Начиная с версии JDK 1.1 заменён методом contains(int, int). |
boolean |
intersects |
Проверяет, пересекается ли внутренняя область Shape с внутренней областью указанной прямоугольной области. |
boolean |
intersects |
Проверяет, пересекается ли внутренняя область Shape с внутренней областью указанного Rectangle2D. |
void |
invalidate() |
Аннулирует или сбрасывает любые кэшированные внутри объекта данные, зависящие от координат вершин этого Polygon. |
void |
reset() |
Сбрасывает этот объект Polygon, создавая пустой многоугольник. |
void |
translate |
Смещает вершины Polygon на deltaX вдоль оси x и на deltaY вдоль оси y. |
Подробное описание полей
npoints
xpoints
public int[] xpoints
Polygon. Дополнительные элементы позволяют добавлять новые точки в этот Polygon, не создавая массив заново. Значение npoints равно количеству допустимых точек в этом Polygon.- Начиная с версии:
- 1.0
- См. также:
ypoints
public int[] ypoints
Polygon. Дополнительные элементы позволяют добавлять новые точки в этот Polygon, не создавая массив заново. Значение npoints равно количеству допустимых точек в этом Polygon.- Начиная с версии:
- 1.0
- См. также:
bounds
protected Rectangle bounds
Polygon. Это значение может быть равно null.- Начиная с версии:
- 1.0
- См. также:
Подробное описание конструкторов
Polygon
public Polygon()
- Начиная с версии:
- 1.0
Polygon
public Polygon(int[] xpoints, int[] ypoints, int npoints)
Polygon с указанными параметрами.- Параметры:
-
xpoints— массив координат X -
ypoints— массив координат Y -
npoints— общее количество точек вPolygon - Исключения:
-
NegativeArraySizeException— если значениеnpointsотрицательно. -
IndexOutOfBoundsException— если значениеnpointsпревышает длинуxpointsили длинуypoints. -
NullPointerException— еслиxpointsилиypointsравноnull. - Начиная с версии:
- 1.0
Подробное описание методов
reset
public void reset()
Polygon, превращая его в пустой многоугольник. Массивы координат и содержащиеся в них данные остаются без изменений, но количество точек сбрасывается до нуля, чтобы пометить данные старых вершин как недействительные и начать накопление новых данных вершин с начала. Все внутренние кэшированные данные, относящиеся к старым вершинам, отбрасываются. Обратите внимание: поскольку массивы координат, использовавшиеся до сброса, применяются повторно, создание нового пустого Polygon может быть эффективнее с точки зрения использования памяти, чем сброс текущего, если количество вершин в данных нового многоугольника значительно меньше количества вершин в данных до сброса.- Начиная с версии:
- 1.4
- См. также:
invalidate
public void invalidate()
Polygon. Этот метод следует вызывать после непосредственного изменения координат в массивах xpoints или ypoints, чтобы избежать несогласованных результатов таких методов, как getBounds или contains, которые могут кэшировать данные предыдущих вычислений, связанных с координатами вершин.- Начиная с версии:
- 1.4
- См. также:
translate
public void translate(int deltaX, int deltaY)
Polygon на deltaX вдоль оси X и на deltaY вдоль оси Y.- Параметры:
-
deltaX— величина смещения вдоль оси X -
deltaY— величина смещения вдоль оси Y - Начиная с версии:
- 1.1
addPoint
public void addPoint(int x, int y)
Polygon. Если операция, вычисляющая ограничивающий прямоугольник этого Polygon, уже выполнялась, например getBounds или contains, этот метод обновляет ограничивающий прямоугольник.
- Параметры:
-
x— указанная координата X -
y— указанная координата Y - Начиная с версии:
- 1.0
- См. также:
getBounds
public Rectangle getBounds()
Polygon. Ограничивающий прямоугольник — это наименьший Rectangle, стороны которого параллельны осям X и Y системы координат и который полностью охватывает Polygon.getBoundingBox
@Deprecated public Rectangle getBoundingBox()
getBounds().Polygon.- Возвращает:
- границы этого
Polygon. - Начиная с версии:
- 1.0
contains
public boolean contains(Point p)
Point внутри этого Polygon.- Параметры:
-
p— проверяемыйPoint - Возвращает:
-
true, еслиPolygonсодержитPoint; в противном случае —false. - Начиная с версии:
- 1.0
- См. также:
contains
public boolean contains(int x, int y)
Polygon.- Параметры:
-
x— проверяемая координата X -
y— проверяемая координата Y - Возвращает:
-
true, если этотPolygonсодержит указанные координаты(x,y); в противном случае —false. - Начиная с версии:
- 1.1
- См. также:
inside
@Deprecated public boolean inside(int x, int y)
contains(int, int).Polygon.- Параметры:
-
x— проверяемая координата X -
y— проверяемая координата Y - Возвращает:
-
true, если этотPolygonсодержит указанные координаты(x,y); в противном случае —false. - Начиная с версии:
- 1.0
- См. также:
getBounds2D
public Rectangle2D getBounds2D()
Shape с высокой точностью по сравнению с методом getBounds. Обратите внимание: нет гарантии, что возвращенный Rectangle2D является наименьшим ограничивающим прямоугольником, охватывающим Shape; гарантируется лишь, что Shape полностью находится внутри указанного Rectangle2D. Ограничивающий прямоугольник, возвращаемый этим методом, обычно плотнее охватывает объект, чем прямоугольник, возвращаемый методом getBounds, и никогда не приводит к ошибкам переполнения, поскольку возвращаемое значение может быть экземпляром Rectangle2D, который использует значения двойной точности для хранения размеров. Обратите внимание: определение принадлежности внутренней области может приводить к ситуациям, когда точки на определяющем контуре shape не считаются содержащимися в возвращенном объекте bounds, но только в тех случаях, когда эти точки также не считаются содержащимися в исходном shape.
Если point находится внутри shape согласно методу contains(point), то он должен находиться внутри возвращенного объекта границ Rectangle2D согласно методу contains(point) объекта bounds. В частности:
shape.contains(p) влечет bounds.contains(p)
Если point не находится внутри shape, он все же может содержаться в объекте bounds:
bounds.contains(p) не влечет shape.contains(p)
- Определен в:
-
getBounds2Dв интерфейсеShape - Возвращает:
- экземпляр
Rectangle2D, представляющий собой ограничивающий прямоугольникShapeс высокой точностью. - Начиная с версии:
- 1.2
- См. также:
contains
public boolean contains(double x, double y)
Shape, как описано в определении принадлежности внутренней области.contains
public boolean contains(Point2D p)
Point2D внутри границы Shape, как описано в определении принадлежности внутренней области.intersects
public boolean intersects(double x, double y, double w, double h)
Shape с внутренней областью указанной прямоугольной области. Считается, что прямоугольная область пересекается с Shape, если какая-либо точка содержится одновременно во внутренней области Shape и в указанной прямоугольной области. Метод Shape.intersects() позволяет реализации Shape с осторожностью возвращать true в следующих случаях:
- существует высокая вероятность пересечения прямоугольной области и
Shape, но - вычисления, необходимые для точного определения этого пересечения, требуют чрезмерных затрат.
Shapes этот метод может возвращать true, даже если прямоугольная область не пересекается с Shape. Класс Area выполняет более точные вычисления геометрического пересечения, чем большинство объектов Shape, поэтому его можно использовать, если требуется более точный ответ.- Определен в:
-
intersectsв интерфейсеShape - Параметры:
-
x— координата X верхнего левого угла указанной прямоугольной области -
y— координата Y верхнего левого угла указанной прямоугольной области -
w— ширина указанной прямоугольной области -
h— высота указанной прямоугольной области - Возвращает:
-
true, если внутренняя областьShapeи внутренняя область прямоугольной области пересекаются либо с высокой вероятностью пересекаются, а вычисление пересечения потребовало бы чрезмерных затрат; в противном случае —false. - Начиная с версии:
- 1.2
- См. также:
intersects
public boolean intersects(Rectangle2D r)
Shape с внутренней областью указанного Rectangle2D. Метод Shape.intersects() позволяет реализации Shape с осторожностью возвращать true в следующих случаях: - существует высокая вероятность пересечения
Rectangle2DиShape, но - вычисления, необходимые для точного определения этого пересечения, требуют чрезмерных затрат.
Shapes этот метод может возвращать true, даже если Rectangle2D не пересекается с Shape. Класс Area выполняет более точные вычисления геометрического пересечения, чем большинство объектов Shape, поэтому его можно использовать, если требуется более точный ответ.- Определен в:
-
intersectsв интерфейсеShape - Параметры:
-
r— указанныйRectangle2D - Возвращает:
-
true, если внутренняя областьShapeи внутренняя область указанногоRectangle2Dпересекаются либо с высокой вероятностью пересекаются, а вычисление пересечения потребовало бы чрезмерных затрат; в противном случае —false. - Начиная с версии:
- 1.2
- См. также:
contains
public boolean contains(double x, double y, double w, double h)
Shape содержит указанную прямоугольную область. Чтобы прямоугольная область считалась полностью содержащейся в Shape, все координаты, лежащие внутри прямоугольной области, должны находиться в пределах Shape. Метод Shape.contains() позволяет реализации Shape с осторожностью возвращать false в следующих случаях:
- метод
intersectвозвращаетtrue, и - вычисления, необходимые для определения того, полностью ли
Shapeсодержит прямоугольную область, требуют чрезмерных затрат.
Shapes этот метод может возвращать false, даже если Shape содержит прямоугольную область. Класс Area выполняет более точные геометрические вычисления, чем большинство объектов Shape, поэтому его можно использовать, если требуется более точный ответ.- Определен в:
-
containsв интерфейсеShape - Параметры:
-
x— координата X верхнего левого угла указанной прямоугольной области -
y— координата Y верхнего левого угла указанной прямоугольной области -
w— ширина указанной прямоугольной области -
h— высота указанной прямоугольной области - Возвращает:
-
true, если внутренняя областьShapeполностью содержит указанную прямоугольную область; в противном случае —falseили, еслиShapeсодержит прямоугольную область, методintersectsвозвращаетtrue, а вычисление принадлежности потребовало бы чрезмерных затрат. - Начиная с версии:
- 1.2
- См. также:
contains
public boolean contains(Rectangle2D r)
Shape содержит указанный Rectangle2D. Метод Shape.contains() позволяет реализации Shape с осторожностью возвращать false в следующих случаях: - метод
intersectвозвращаетtrue, и - вычисления, необходимые для определения того, полностью ли
ShapeсодержитRectangle2D, требуют чрезмерных затрат.
Shapes этот метод может возвращать false, даже если Shape содержит Rectangle2D. Класс Area выполняет более точные геометрические вычисления, чем большинство объектов Shape, поэтому его можно использовать, если требуется более точный ответ.- Определен в:
-
containsв интерфейсеShape - Параметры:
-
r— указанныйRectangle2D - Возвращает:
-
true, если внутренняя областьShapeполностью содержитRectangle2D; в противном случае —falseили, еслиShapeсодержитRectangle2D, методintersectsвозвращаетtrue, а вычисление принадлежности потребовало бы чрезмерных затрат. - Начиная с версии:
- 1.2
- См. также:
getPathIterator
public PathIterator getPathIterator(AffineTransform at)
Polygon и предоставляет доступ к геометрии его контура Polygon. Можно указать необязательный AffineTransform, чтобы координаты, возвращаемые при итерации, соответствующим образом преобразовывались.- Определен в:
-
getPathIteratorв интерфейсеShape - Параметры:
-
at— необязательныйAffineTransform, применяемый к координатам при их возврате во время итерации, илиnull, если требуются непреобразованные координаты - Возвращает:
- объект
PathIterator, предоставляющий доступ к геометрии этогоPolygon. - Начиная с версии:
- 1.2
getPathIterator
public PathIterator getPathIterator(AffineTransform at, double flatness)
Shape и предоставляет доступ к геометрии контура Shape. Итератор возвращает только типы точек SEG_MOVETO, SEG_LINETO и SEG_CLOSE. Поскольку многоугольники уже являются плоскими, параметр flatness игнорируется. Можно указать необязательный AffineTransform, и тогда координаты, возвращаемые при итерации, будут соответствующим образом преобразованы.- Определен в:
-
getPathIteratorв интерфейсеShape - Параметры:
-
at— необязательныйAffineTransform, применяемый к координатам при их возврате во время итерации, илиnull, если требуются непреобразованные координаты -
flatness— максимальное отклонение контрольных точек заданной кривой от коллинеарности, при превышении которого кривая, разбитая на части, заменяется прямой линией, соединяющей конечные точки. Поскольку многоугольники уже являются плоскими, параметрflatnessигнорируется. - Возвращает:
- объект
PathIterator, предоставляющий доступ к геометрии объектаShape. - Начиная с версии:
- 1.2
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/java/awt/Polygon.html
getBounds().