Класс 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 Границы этого |
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(Point p) Определяет, находится ли указанная |
boolean |
contains(Point2D p) Проверяет, находится ли указанная |
boolean |
contains(Rectangle2D r) Проверяет, полностью ли внутренняя часть |
Rectangle |
getBoundingBox() Устарело. С версии JDK 1.1 заменено на |
Rectangle |
getBounds() Получает прямоугольник, содержащий этот |
Rectangle2D |
getBounds2D() Возвращает прямоугольник, содержащий |
PathIterator |
getPathIterator(AffineTransform at) Возвращает объект итератора, который итерируется по границе этого |
PathIterator |
getPathIterator(AffineTransform at,
double flatness) Возвращает объект итератора, который итерируется по границе |
boolean |
inside(int x,
int y) Устарело. С версии JDK 1.1 заменено на |
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. Это значение может быть 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илиypointsnull. - 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.