Класс 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 | Границы этого |
int | npoints | Общее количество точек. |
int[] | xpoints | Массив координат X. |
int[] | ypoints | Массив координат Y. |
Конструкторы
| Конструктор | Описание |
|---|---|
Polygon() | Создаёт пустой многоугольник. |
Polygon(int[] xpoints,
int[] ypoints,
int npoints) | Создаёт и инициализирует |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
void | addPoint(int x,
int y) | Добавляет указанные координаты к этому |
boolean | contains(double x,
double y) | Проверяет, находятся ли указанные координаты внутри границы |
boolean | contains(double x,
double y,
double w,
double h) | Проверяет, полностью ли внутренность |
boolean | contains(int x,
int y) | Определяет, находятся ли указанные координаты внутри этого |
boolean | contains(Point2D p) | Проверяет, находится ли указанная |
boolean | contains(Rectangle2D r) | Проверяет, полностью ли внутренность |
boolean | contains(Point p) | Определяет, находится ли указанная |
Rectangle | getBoundingBox() | Устарело. С версии JDK 1.1, заменено на getBounds(). |
Rectangle | getBounds() | Возвращает область, охватывающую этот |
Rectangle2D | getBounds2D() | Возвращает область, охватывающую |
PathIterator | getPathIterator(AffineTransform at) | Возвращает объект-итератор, который проходит по границе этого |
PathIterator | getPathIterator(AffineTransform at,
double flatness) | Возвращает объект-итератор, который проходит по границе |
boolean | inside(int x,
int y) | Устарело. С версии JDK 1.1, заменено на contains(int, int). |
boolean | intersects(double x,
double y,
double w,
double h) | Проверяет, пересекается ли внутренность |
boolean | intersects(Rectangle2D r) | Проверяет, пересекается ли внутренность |
void | invalidate() | Отменяет или очищает все кэшированные данные, которые зависят от координат вершин этого |
void | reset() | Сбрасывает этот объект |
void | translate(int deltaX,
int deltaY) | Перемещает вершины |
Методы, объявленные в классе java.lang.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илиypointsnull. - С тех пор как:
- 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(java.awt.Point)
getBounds
public Rectangle getBounds()
Возвращает ограничивающую рамку этого Polygon. Ограничивающая рамка — это наименьший Rectangle, стороны которого параллельны осям x и y координатной системы, и может полностью содержать Polygon.
- Определено в:
-
getBoundsв интерфейсеShape - Возвращает:
- a
Rectangleопределяющий границы этогоPolygon. - С момента:
- 1.1
- См. также:
Shape.getBounds2D()
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(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) 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
© 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/Polygon.html