Spec-Zone.ru › OpenJDK 8

Класс 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(Point p)

Определяет, находится ли указанная Point внутри этого Polygon.

boolean contains(Point2D p)

Проверяет, находится ли указанная Point2D внутри границы Shape, как определено в определении принадлежности.

boolean contains(Rectangle2D r)

Проверяет, полностью ли внутренняя часть Shape содержит указанную Rectangle2D.

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. Это значение может быть NULL.

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)

Создаёт и инициализирует Polygon из указанных параметров.

Параметры:
xpoints - массив координат X
ypoints - массив координат Y
npoints - общее количество точек в Polygon
Исключения:
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.

Параметры:
deltaX - величина смещения по оси X
deltaY - величина смещения по оси Y
Since:
1.1

addPoint

public void addPoint(int x,
                     int y)

Добавляет указанные координаты в этот Polygon.

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

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

getBounds

public Rectangle getBounds()

Получает рамки этого Polygon. Рамки — это наименьший Rectangle, стороны которого параллельны осям X и Y координатного пространства, и который может полностью содержать Polygon.

Определено в:
getBounds в интерфейсе Shape
Возвращает:
a Rectangle описывающий рамки этого Polygon.
Since:
1.1
См. также:
Shape.getBounds2D()

getBoundingBox

@Deprecated
public Rectangle getBoundingBox()

Устарело. Начиная с версии JDK 1.1, заменено на getBounds().

Возвращает рамки этого Polygon.

Возвращает:
рамки этого Polygon.
Since:
1.0

contains

public boolean contains(Point p)

Определяет, находится ли указанная Point внутри этого Polygon.

Параметры:
p - указанная Point для проверки
Возвращает:
true если Polygon содержит Point; false в противном случае.
Since:
1.0
См. также:
contains(double, double)

contains

public boolean contains(int x,
                        int y)

Определяет, находятся ли указанные координаты внутри этого Polygon.

Параметры:
x - указанная координата X для проверки
y - указанная координата Y для проверки
Возвращает:
true если этот Polygon содержит указанные координаты (x,y); false в противном случае.
Since:
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 в противном случае.
Since:
1.0
См. также:
contains(double, double)

getBounds2D

public Rectangle2D getBounds2D()

Возвращает высокоточную и более точную рамку Shape по сравнению с методом getBounds. Обратите внимание, что нет гарантии, что возвращаемый Rectangle2D является наименьшей ограничивающей рамкой, охватывающей Shape, только то, что Shape полностью лежит внутри указанной Rectangle2D.

Рамка, возвращаемая этим методом, обычно уже, чем та, что возвращается методом getBounds, и никогда не терпит неудачи из-за переполнения, поскольку значение возврата может быть экземпляром Rectangle2D, который использует значения двойной точности для хранения размеров.

Обратите внимание, что определение принадлежности shape может привести к ситуациям, когда точки на определяющем контуре 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.
Since:
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

© 1993, 2020, 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.

Spec-Zone.ru

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