Класс 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
public int npoints
npoints представляет количество допустимых точек в этом Polygon и может быть меньше количества элементов в xpoints или ypoints. Это значение может быть 0.- Since:
- 1.0
- См. также:
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)
- Параметры:
-
xpoints- массив координат X -
ypoints- массив координат Y -
npoints- общее количество точек вPolygon - Исключения:
-
NegativeArraySizeException- если значениеnpointsотрицательное. -
IndexOutOfBoundsException- еслиnpointsбольше длиныxpointsили длиныypoints. -
NullPointerException- еслиxpointsилиypointsnull. - 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.- Параметры:
-
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
public Rectangle getBounds()
Polygon. Рамка ограничивающего прямоугольника — это наименьший Rectangle, стороны которого параллельны осям X и Y координатной плоскости, и который может полностью содержать Polygon.- Определено в:
-
getBoundsв интерфейсеShape - Возвращает:
- объект
Rectangle, определяющий границы этогоPolygon. - Since:
- 1.1
- См. также:
getBoundingBox
@Deprecated public Rectangle getBoundingBox()
getBounds().Polygon.- Возвращает:
- границы этого
Polygon. - Since:
- 1.0
contains
public boolean contains(Point p)
Point внутри этого Polygon.- Параметры:
-
p- указаннаяPointдля проверки - Возвращает:
-
true, еслиPolygonсодержитPoint;falseв противном случае. - Since:
- 1.0
- См. также:
contains
public boolean contains(int x, int y)
Polygon.- Параметры:
-
x- указанная координата X для проверки -
y- указанная координата Y для проверки - Возвращает:
-
true, если этотPolygonсодержит указанные координаты(x,y);falseв противном случае. - Since:
- 1.1
- См. также:
inside
@Deprecated public boolean inside(int x, int y)
contains(int, int).Polygon.- Параметры:
-
x- указанная координата X для проверки -
y- указанная координата Y для проверки - Возвращает:
-
true, если этотPolygonсодержит указанные координаты(x,y);falseв противном случае. - Since:
- 1.0
- См. также:
getBounds2D
public Rectangle2D getBounds2D()
getBounds, ограничивающий Shape. Обратите внимание, что нет гарантии, что возвращаемый 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, как описано в определении принадлежности.- 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:
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, 2021, 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/17/docs/api/java.desktop/java/awt/Polygon.html
getBounds().