Класс 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
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
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.- Since:
- 1.0
- См. также:
ypoints
public int[] ypoints
Polygon. Дополнительные элементы позволяют добавлять новые точки в это Polygon без повторного создания этого массива. Значение npoints равно количеству допустимых точек в этом Polygon.- Since:
- 1.0
- См. также:
bounds
protected Rectangle bounds
Polygon. Это значение может быть null.- Since:
- 1.0
- См. также:
Подробное описание конструкторов
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
public void invalidate()
Polygon. Этот метод следует вызывать после любого прямого изменения координат в массивах xpoints или ypoints, чтобы избежать несогласованных результатов методов, таких как getBounds или contains, которые могут кэшировать данные из предыдущих вычислений, связанных с координатами вершин.- Since:
- 1.4
- См. также:
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
public Rectangle getBounds()
Polygon. Ограничивающая область - это наименьший Rectangle, стороны которого параллельны осям x и y координатной плоскости и может полностью содержать Polygon.getBoundingBox
@Deprecated public Rectangle getBoundingBox()
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
public boolean contains(int x, int y)
Polygon.- Parameters:
-
x- указанная координата X для проверки -
y- указанная координата Y для проверки - Returns:
-
true, если этотPolygonсодержит указанные координаты(x,y);falseв противном случае. - Since:
- 1.1
- См. также:
inside
@Deprecated public boolean inside(int x, int y)
contains(int, int).Polygon.- Parameters:
-
x- указанная координата X для проверки -
y- указанная координата Y для проверки - Returns:
-
true, если этотPolygonсодержит указанные координаты(x,y);falseв противном случае. - Since:
- 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)
- Specified by:
-
getBounds2Dв интерфейсеShape - Returns:
- экземпляр
Rectangle2D, который является высокоточной ограничивающей прямоугольной областьюShape. - Since:
- 1.2
- See Also:
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, и поэтому может быть использован, если требуется более точный ответ.- Specified by:
-
intersectsв интерфейсеShape - Parameters:
-
x- координата X левого верхнего угла указанной прямоугольной области -
y- координата Y левого верхнего угла указанной прямоугольной области -
w- ширина указанной прямоугольной области -
h- высота указанной прямоугольной области - Returns:
-
true, если внутренняя областьShapeи внутренняя область прямоугольной области пересекаются или, если они, скорее всего, пересекаются, а вычисления пересечения слишком трудоемки;falseв противном случае. - Since:
- 1.2
- See Also:
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:
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:
содержит
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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/java/awt/Polygon.html
getBounds().