Spec-Zone.ru › OpenJDK 24

Класс Polygon

java.lang.Object
java.awt.Polygon
Все реализованные интерфейсы:
Shape, Serializable
public class Polygon extends Object implements Shape, Serializable
Класс Polygon описывает замкнутую двумерную область в системе координат. Эта область ограничена произвольным числом отрезков прямых, каждый из которых является стороной многоугольника. Внутренне многоугольник представляет собой список пар координат (x,y), где каждая пара определяет вершину многоугольника, а две последовательные пары являются концами отрезка, являющегося стороной многоугольника. Первая и последняя пары (x,y) точек соединены отрезком прямой, замыкая многоугольник. Этот многоугольник определяется правилом чередования чётности и нечётности. См. 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.

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

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

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

npoints

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

xpoints

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

ypoints

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

bounds

protected Rectangle bounds
Пределы этого Polygon. Это значение может быть null.
Since:
1.0
См. также:
  • getBoundingBox()
  • getBounds()

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

Polygon

public Polygon()
Создаёт пустой многоугольник.
Since:
1.0

Polygon

public Polygon(int[] xpoints, int[] ypoints, int npoints)
Создаёт и инициализирует многоугольник из указанных параметров.
Parameters:
xpoints - массив координат X
ypoints - массив координат Y
npoints - общее количество точек в многоугольнике
Throws:
NegativeArraySizeException - если значение npoints отрицательно.
IndexOutOfBoundsException - если npoints больше длины xpoints или длины ypoints.
NullPointerException - если xpoints или ypoints равны null.
Since:
1.0

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

reset

public void reset()
Сбрасывает объект Polygon до пустого многоугольника. Массивы координат и данные в них остаются неизменными, но количество точек сбрасывается до нуля, чтобы пометить старые данные вершин как недействительные и начать накапливать новые данные вершин с начала. Все внутренние кэшированные данные, относящиеся к старым вершинам, удаляются. Обратите внимание, что поскольку массивы координат из периода до сброса повторно используются, создание нового пустого Polygon может быть более эффективным с точки зрения памяти, чем сброс текущего, если количество вершин в новых данных многоугольника значительно меньше количества вершин в данных до сброса.
Since:
1.4
См. также:
  • invalidate()

invalidate

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

translate

public void translate(int deltaX, int deltaY)
Переводит вершины Polygon на deltaX по оси x и на deltaY по оси y.
Parameters:
deltaX - величина смещения по оси X
deltaY - величина смещения по оси Y
Since:
1.1

addPoint

public void addPoint(int x, int y)
Добавляет указанные координаты к этому Polygon.

Если операция, вычисляющая рамки ограничивающей области этого Polygon, уже была выполнена, например, getBounds или contains, то этот метод обновляет ограничивающую область.

Parameters:
x - указанная координата X
y - указанная координата Y
Since:
1.0
См. также:
  • getBounds()
  • contains(java.awt.Point)

getBounds

public Rectangle getBounds()
Возвращает ограничивающую область этого Polygon. Ограничивающая область - это наименьший Rectangle, стороны которого параллельны осям x и y координатной плоскости и может полностью содержать Polygon.
Specified by:
getBounds в интерфейсе Shape
Returns:
a Rectangle, определяющий пределы этого Polygon.
Since:
1.1
См. также:
  • Shape.getBounds2D()

getBoundingBox

@Deprecated public Rectangle getBoundingBox()
Deprecated.
Начиная с JDK версии 1.1, заменён на getBounds().
Возвращает рамки ограничивающей области этого Polygon.
Returns:
рамки ограничивающей области этого Polygon.
Since:
1.0

contains

public boolean contains(Point p)
Определяет, находится ли указанная Point внутри этого Polygon.
Parameters:
p - указанная Point для проверки
Returns:
true, если Polygon содержит Point; false в противном случае.
Since:
1.0
См. также:
  • contains(double, double)

contains

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

inside

@Deprecated public boolean inside(int x, int y)
Deprecated.
Начиная с JDK версии 1.1, заменён на contains(int, int).
Определяет, содержатся ли указанные координаты в этом Polygon.
Parameters:
x - указанная координата X для проверки
y - указанная координата Y для проверки
Returns:
true, если этот Polygon содержит указанные координаты (x,y); false в противном случае.
Since:
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)

Specified by:
getBounds2D в интерфейсе Shape
Returns:
экземпляр Rectangle2D, который является высокоточной ограничивающей прямоугольной областью Shape.
Since:
1.2
See Also:
  • Shape.getBounds()

contains

public boolean contains(double x, double y)
Проверяет, находятся ли указанные координаты внутри границы Shape, как описано в определении принадлежности.
Specified by:
contains в интерфейсе Shape
Parameters:
x - указанная координата X для проверки
y - указанная координата Y для проверки
Returns:
true, если указанные координаты находятся внутри границы Shape; false в противном случае.
Since:
1.2

contains

public boolean contains(Point2D p)
Проверяет, находится ли указанная Point2D внутри границы Shape, как описано в определении принадлежности.
Specified by:
contains в интерфейсе Shape
Parameters:
p - указанная Point2D для проверки
Returns:
true, если указанная Point2D находится внутри границы Shape; false в противном случае.
Since:
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, и поэтому может быть использован, если требуется более точный ответ.
Specified by:
intersects в интерфейсе Shape
Parameters:
x - координата X левого верхнего угла указанной прямоугольной области
y - координата Y левого верхнего угла указанной прямоугольной области
w - ширина указанной прямоугольной области
h - высота указанной прямоугольной области
Returns:
true, если внутренняя область Shape и внутренняя область прямоугольной области пересекаются или, если они, скорее всего, пересекаются, а вычисления пересечения слишком трудоемки; false в противном случае.
Since:
1.2
See Also:
  • Area

intersects

public boolean intersects(Rectangle2D r)
Проверяет, пересекается ли внутренняя область Shape с внутренней областью указанной Rectangle2D. Метод Shape.intersects() позволяет реализации Shape консервативно возвращать true, когда:
  • существует высокая вероятность пересечения Rectangle2D и Shape, но
  • вычисления для точного определения этого пересечения являются чрезмерно трудоёмкими.
Это означает, что для некоторых Shapes этот метод может возвращать true, даже если Rectangle2D не пересекает Shape. Класс Area выполняет более точные вычисления геометрического пересечения, чем большинство объектов Shape, и поэтому может быть использован, если требуется более точный ответ.
Specified by:
intersects в интерфейсе Shape
Parameters:
r - указанная Rectangle2D
Returns:
true, если внутренние области Shape и указанной Rectangle2D пересекаются или, если они, скорее всего, пересекаются, а вычисления пересечения слишком трудоемки; false в противном случае.
Since:
1.2
See Also:
  • 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, и поэтому может быть использован, если требуется более точный ответ.
Specified by:
contains в интерфейсе Shape
Parameters:
x - координата X левого верхнего угла указанной прямоугольной области
y - координата Y левого верхнего угла указанной прямоугольной области
w - ширина указанной прямоугольной области
h - высота указанной прямоугольной области
Returns:
true, если внутренняя область Shape полностью содержит указанную прямоугольную область; false в противном случае или, если Shape содержит прямоугольную область, а метод intersects возвращает true, и вычисления включения слишком трудоемки.
Since:
1.2
See Also:
  • Area
  • Shape.intersects(double, double, double, double)

содержит

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

© 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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/java/awt/Polygon.html

Spec-Zone.ru

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