Spec-Zone.ru › OpenJDK 25

Класс Polygon

java.lang.Object
java.awt.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
См. также:
  • Shape
  • Сериализованная форма

Краткое описание полей

Модификатор и тип Поле Описание
protected Rectangle bounds
Границы этого Polygon.
int npoints
Общее количество точек.
int[] xpoints
Массив координат X.
int[] ypoints
Массив координат Y.

Краткое описание конструкторов

Конструктор Описание
Polygon()
Создаёт пустой многоугольник.
Polygon(int[] xpoints, int[] ypoints, int npoints)
Создаёт и инициализирует Polygon на основе указанных параметров.

Краткое описание методов

Модификатор и тип Метод Описание
void addPoint(int x, int y)
Добавляет указанные координаты в этот Polygon.
boolean contains(double x, double y)
Проверяет, находятся ли указанные координаты внутри границ Shape, согласно определению внутренней области.
boolean contains(double x, double y, double w, double h)
Проверяет, полностью ли внутренняя область Shape содержит указанную прямоугольную область.
boolean contains(int x, int y)
Определяет, находятся ли указанные координаты внутри этого Polygon.
boolean contains(Point2D p)
Проверяет, находится ли указанная точка Point2D внутри границ Shape, согласно определению внутренней области.
boolean contains(Rectangle2D r)
Проверяет, полностью ли внутренняя область Shape содержит указанный Rectangle2D.
boolean contains(Point p)
Определяет, находится ли указанная точка Point внутри этого Polygon.
Rectangle getBoundingBox()
Устарело.
Начиная с версии JDK 1.1 заменён методом getBounds().
Rectangle getBounds()
Возвращает ограничивающий прямоугольник этого Polygon.
Rectangle2D getBounds2D()
Возвращает ограничивающий прямоугольник Shape с более высокой точностью, чем метод getBounds.
PathIterator getPathIterator(AffineTransform at)
Возвращает объект-итератор, проходящий вдоль границы этого Polygon и предоставляющий доступ к геометрии контура этого Polygon.
PathIterator getPathIterator(AffineTransform at, double flatness)
Возвращает объект-итератор, проходящий вдоль границы Shape и предоставляющий доступ к геометрии контура Shape.
boolean inside(int x, int y)
Устарело.
Начиная с версии JDK 1.1 заменён методом contains(int, int).
boolean intersects(double x, double y, double w, double h)
Проверяет, пересекается ли внутренняя область Shape с внутренней областью указанной прямоугольной области.
boolean intersects(Rectangle2D r)
Проверяет, пересекается ли внутренняя область Shape с внутренней областью указанного Rectangle2D.
void invalidate()
Аннулирует или сбрасывает любые кэшированные внутри объекта данные, зависящие от координат вершин этого Polygon.
void reset()
Сбрасывает этот объект Polygon, создавая пустой многоугольник.
void translate(int deltaX, int deltaY)
Смещает вершины Polygon на deltaX вдоль оси x и на deltaY вдоль оси y.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание полей

npoints

public int npoints
Общее количество точек. Значение npoints представляет собой количество допустимых точек в этом Polygon и может быть меньше количества элементов в xpoints или ypoints. Это значение может быть равно 0.
Начиная с версии:
1.0
См. также:
  • addPoint(int, int)

xpoints

public int[] xpoints
Массив координат X. Количество элементов в этом массиве может быть больше количества координат X в этом Polygon. Дополнительные элементы позволяют добавлять новые точки в этот Polygon, не создавая массив заново. Значение npoints равно количеству допустимых точек в этом Polygon.
Начиная с версии:
1.0
См. также:
  • addPoint(int, int)

ypoints

public int[] ypoints
Массив координат Y. Количество элементов в этом массиве может быть больше количества координат Y в этом Polygon. Дополнительные элементы позволяют добавлять новые точки в этот Polygon, не создавая массив заново. Значение npoints равно количеству допустимых точек в этом Polygon.
Начиная с версии:
1.0
См. также:
  • addPoint(int, int)

bounds

protected Rectangle bounds
Границы этого Polygon. Это значение может быть равно null.
Начиная с версии:
1.0
См. также:
  • getBoundingBox()
  • getBounds()

Подробное описание конструкторов

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()

invalidate

public void invalidate()
Инвалидирует или сбрасывает все внутренние кэшированные данные, зависящие от координат вершин этого Polygon. Этот метод следует вызывать после непосредственного изменения координат в массивах xpoints или ypoints, чтобы избежать несогласованных результатов таких методов, как getBounds или contains, которые могут кэшировать данные предыдущих вычислений, связанных с координатами вершин.
Начиная с версии:
1.4
См. также:
  • getBounds()

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()
  • contains(Point)

getBounds

public Rectangle getBounds()
Получает ограничивающий прямоугольник этого Polygon. Ограничивающий прямоугольник — это наименьший Rectangle, стороны которого параллельны осям X и Y системы координат и который полностью охватывает Polygon.
Определен в:
getBounds в интерфейсе Shape
Возвращает:
Rectangle, задающий границы этого Polygon.
Начиная с версии:
1.1
См. также:
  • Shape.getBounds2D()

getBoundingBox

@Deprecated public Rectangle getBoundingBox()
Устарел.
Начиная с JDK версии 1.1 заменен на getBounds().
Возвращает границы этого Polygon.
Возвращает:
границы этого Polygon.
Начиная с версии:
1.0

contains

public boolean contains(Point p)
Определяет, находится ли указанный Point внутри этого Polygon.
Параметры:
p — проверяемый Point
Возвращает:
true, если Polygon содержит Point; в противном случае — false.
Начиная с версии:
1.0
См. также:
  • contains(double, double)

contains

public boolean contains(int x, int y)
Определяет, находятся ли указанные координаты внутри этого Polygon.
Параметры:
x — проверяемая координата X
y — проверяемая координата Y
Возвращает:
true, если этот Polygon содержит указанные координаты (x,y); в противном случае — false.
Начиная с версии:
1.1
См. также:
  • contains(double, double)

inside

@Deprecated public boolean inside(int x, int y)
Устарел.
Начиная с JDK версии 1.1 заменен на contains(int, int).
Определяет, содержатся ли указанные координаты в этом Polygon.
Параметры:
x — проверяемая координата X
y — проверяемая координата Y
Возвращает:
true, если этот Polygon содержит указанные координаты (x,y); в противном случае — false.
Начиная с версии:
1.0
См. также:
  • contains(double, double)

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
См. также:
  • Shape.getBounds()

contains

public boolean contains(double x, double y)
Проверяет, находятся ли указанные координаты внутри границы Shape, как описано в определении принадлежности внутренней области.
Определен в:
contains в интерфейсе Shape
Параметры:
x — проверяемая координата X
y — проверяемая координата Y
Возвращает:
true, если указанные координаты находятся внутри границы Shape; в противном случае — false.
Начиная с версии:
1.2

contains

public boolean contains(Point2D p)
Проверяет, находится ли указанный Point2D внутри границы Shape, как описано в определении принадлежности внутренней области.
Определен в:
contains в интерфейсе Shape
Параметры:
p — проверяемый Point2D
Возвращает:
true, если указанный Point2D находится внутри границы Shape; в противном случае — false.
Начиная с версии:
1.2

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
См. также:
  • Area

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
См. также:
  • Shape.intersects(double, double, double, double)

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
См. также:
  • Area
  • Shape.intersects(double, double, double, double)

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
См. также:
  • Shape.contains(double, double, double, double)

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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, общие сведения о концепциях, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API