Класс Area
- Все реализованные интерфейсы:
-
Shape,Cloneable
public class Area extends Object implements Shape, Cloneable
Area хранит и обрабатывает независимое от разрешения описание замкнутой области 2-мерного пространства. Объекты класса Area могут преобразовываться и выполнять различные операции геометрии конструктивных областей (CAG) при объединении с другими объектами Area. Операции CAG включают добавление области addition, вычитание subtraction, пересечение intersection и исключающее ИЛИ exclusive or. Примеры различных операций см. в документации связанных методов. Класс Area реализует интерфейс Shape и обеспечивает полную поддержку всех его средств проверки попадания и итерации по траекториям, но объект Area более специфичен, чем обобщенная траектория по нескольким причинам:
- Хранятся только замкнутые траектории и подтраектории. Объекты
Area, созданные из незамкнутых траекторий, неявно закрываются во время построения, как если бы эти траектории были заполнены методомGraphics2D.fill. - Внутренние области отдельных хранимых подтраекторий все непустые и непересекающиеся. Траектории декомпонируются во время построения на отдельные компоненты, непересекающиеся части, пустые фрагменты траектории отбрасываются, а затем эти свойства непустоты и непересечения поддерживаются во всех последующих операциях CAG. Контуры разных подтраекторий могут касаться друг друга, но не пересекаться так, чтобы их области не перекрывались.
- Геометрия траектории, описывающей контур объекта
Area, похожа на траекторию, из которой она была создана только тем, что она описывает ту же замкнутую 2-мерную область, но может использовать совершенно разные типы и порядок сегментов траектории для этого.
Area : - Создание объекта
Areaиз незамкнутой (открытой) траекторииShapeприводит к замкнутому контуру в объектеArea. - Создание объекта
Areaиз областиShape, не охватывающей никакой области (даже при "закрытии"), приводит к пустому объектуArea. Типичный пример этой проблемы заключается в том, что создание объектаAreaиз линии будет пустым, так как линия не охватывает никакой области. Пустой объектAreaне будет итерировать геометрию в своих объектахPathIterator. - Самопересекающаяся траектория
Shapeможет быть разделена на две (или более) подтраектории, каждая из которых охватывает одну из непересекающихся частей исходной траектории. - Объект
Areaможет занимать больше сегментов траектории для описания той же геометрии, даже когда исходный контур прост и очевиден. Анализ, который классAreaдолжен выполнить над траекторией, может не отражать те же понятия «простоты и очевидности», что и человек.
- С:
- 1.2
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
Area() |
Конструктор по умолчанию, который создает пустую область. |
Area |
Класс Area создает геометрию области из указанного объекта Shape. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
add |
Добавляет форму указанной Area к форме этого объекта Area. |
Object |
clone() |
Возвращает точную копию этого объекта Area. |
boolean |
contains |
Проверяет, находятся ли указанные координаты внутри границы объекта Shape, как описано в определении принадлежности. |
boolean |
contains |
Проверяет, полностью ли внутренняя область объекта Shape содержит указанную прямоугольную область. |
boolean |
contains |
Проверяет, находится ли указанная точка Point2D внутри границы объекта Shape, как описано в определении принадлежности. |
boolean |
contains |
Проверяет, полностью ли внутренняя область объекта Shape содержит указанную область Rectangle2D. |
Area |
createTransformedArea |
Создает новый объект Area , содержащий ту же геометрию, что и этот объект Area , преобразованный с помощью указанного преобразования AffineTransform. |
boolean |
equals |
Проверяет, равны ли геометрии двух объектов Area. |
void |
exclusiveOr |
Устанавливает форму этого объекта Area в виде объединенной области его текущей формы и формы указанной области Area минус их пересечение. |
Rectangle |
getBounds() |
Возвращает ограничивающий прямоугольник Rectangle, который полностью охватывает этот объект Area. |
Rectangle2D |
getBounds2D() |
Возвращает ограничивающий прямоугольник с высокой точностью Rectangle2D, который полностью охватывает этот объект Area. |
PathIterator |
getPathIterator |
Создает объект PathIterator для контура этого объекта Area. |
PathIterator |
getPathIterator |
Создает объект PathIterator для сглаженного контура этого объекта Area. |
void |
intersect |
Устанавливает форму этого объекта Area в виде пересечения его текущей формы и формы указанной области Area. |
boolean |
intersects |
Проверяет, пересекается ли внутренняя область объекта Shape с внутренней областью указанной прямоугольной области. |
boolean |
intersects |
Проверяет, пересекается ли внутренняя область объекта Shape с внутренней областью указанной области Rectangle2D. |
boolean |
isEmpty() |
Проверяет, охватывает ли этот объект Area какую-либо область. |
boolean |
isPolygonal() |
Проверяет, состоит ли этот объект Area полностью из геометрии с прямыми ребрами многоугольника. |
boolean |
isRectangular() |
Проверяет, имеет ли этот объект Area прямоугольную форму. |
boolean |
isSingular() |
Проверяет, состоит ли этот объект Area из одной замкнутой подтраектории. |
void |
reset() |
Удаляет всю геометрию из этого объекта Area и восстанавливает его в пустую область. |
void |
subtract |
Вычитает форму указанной области Area из формы этого объекта Area. |
void |
transform |
Преобразует геометрию этого объекта Area с помощью указанного преобразования AffineTransform. |
Подробное описание конструкторов
Area
public Area()
- Since:
- 1.2
Area
public Area(Shape s)
Area создаёт геометрию области из указанного объекта Shape. Геометрия явным образом закрывается, если она не закрыта уже. Правило заполнения (чёт-нечёт или обход контура) определённое геометрией Shape используется для определения результирующей замкнутой области.- Parameters:
-
s-Shape, из которого создаётся область - Throws:
-
NullPointerException- еслиsравно null - Since:
- 1.2
Подробное описание методов
add
public void add(Area rhs)
Area к форме этого Area. Результирующая форма этого Area будет включать объединение обеих фигур, или все области, содержащиеся либо в этой, либо в указанной Area.
// Example:
Area a1 = new Area([triangle 0,0 => 8,0 => 0,8]);
Area a2 = new Area([triangle 0,0 => 8,0 => 8,8]);
a1.add(a2);
a1(before) + a2 = a1(after)
################ ################ ################
############## ############## ################
############ ############ ################
########## ########## ################
######## ######## ################
###### ###### ###### ######
#### #### #### ####
## ## ## ##
- Parameters:
-
rhs-Areaдля добавления к текущей фигуре - Throws:
-
NullPointerException- еслиrhsравно null - Since:
- 1.2
subtract
public void subtract(Area rhs)
Area из формы этого Area. Результирующая форма этого Area будет включать области, содержащиеся только в этом Area и не содержащиеся в указанной Area.
// Example:
Area a1 = new Area([triangle 0,0 => 8,0 => 0,8]);
Area a2 = new Area([triangle 0,0 => 8,0 => 8,8]);
a1.subtract(a2);
a1(before) - a2 = a1(after)
################ ################
############## ############## ##
############ ############ ####
########## ########## ######
######## ######## ########
###### ###### ######
#### #### ####
## ## ##
- Parameters:
-
rhs-Areaдля вычитания из текущей фигуры - Throws:
-
NullPointerException- еслиrhsравно null - Since:
- 1.2
intersect
public void intersect(Area rhs)
Area в пересечение его текущей формы и формы указанной Area. Результирующая форма этого Area будет включать только области, которые содержатся как в этом Area, так и в указанной Area.
// Example:
Area a1 = new Area([triangle 0,0 => 8,0 => 0,8]);
Area a2 = new Area([triangle 0,0 => 8,0 => 8,8]);
a1.intersect(a2);
a1(before) intersect a2 = a1(after)
################ ################ ################
############## ############## ############
############ ############ ########
########## ########## ####
######## ########
###### ######
#### ####
## ##
- Parameters:
-
rhs-Areaдля пересечения с этимArea - Throws:
-
NullPointerException- еслиrhsравно null - Since:
- 1.2
exclusiveOr
public void exclusiveOr(Area rhs)
Area в объединённую область его текущей формы и формы указанной Area, минус их пересечение. Результирующая форма этого Area будет включать только области, содержащиеся либо в этом Area или в указанной Area, но не в обоих одновременно.
// Example:
Area a1 = new Area([triangle 0,0 => 8,0 => 0,8]);
Area a2 = new Area([triangle 0,0 => 8,0 => 8,8]);
a1.exclusiveOr(a2);
a1(before) xor a2 = a1(after)
################ ################
############## ############## ## ##
############ ############ #### ####
########## ########## ###### ######
######## ######## ################
###### ###### ###### ######
#### #### #### ####
## ## ## ##
- Parameters:
-
rhs-Areaдля выполнения исключающего ИЛИ с этимArea. - Throws:
-
NullPointerException- еслиrhsравно null - Since:
- 1.2
reset
public void reset()
Area и восстанавливает его до пустой области.- Since:
- 1.2
isEmpty
public boolean isEmpty()
Area какую-либо область.- Returns:
-
trueесли этот объектAreaпредставляет пустую область;falseв противном случае. - Since:
- 1.2
isPolygonal
public boolean isPolygonal()
Area полностью из прямой геометрии многоугольников.- Returns:
-
trueесли геометрия этогоAreaсостоит полностью из отрезков прямых;falseв противном случае. - Since:
- 1.2
isRectangular
public boolean isRectangular()
Area прямоугольную форму.- Returns:
-
trueесли геометрия этогоAreaимеет прямоугольную форму;falseв противном случае. - Since:
- 1.2
isSingular
public boolean isSingular()
Area из одного замкнутого подпути. Этот метод возвращает true если путь содержит 0 или 1 подпуть, или false если путь содержит более 1 подпути. Подпути считаются по количеству сегментов SEG_MOVETO, которые появляются в пути.- Returns:
-
trueеслиAreaсостоит из одной базовой геометрии;falseв противном случае. - Since:
- 1.2
getBounds2D
public Rectangle2D getBounds2D()
Rectangle2D, которая полностью охватывает этот Area. Класс Area попытается вернуть наименьший возможный ограничивающий прямоугольник для фигуры. Ограничивающий прямоугольник не будет расширяться для включения контрольных точек кривых в контуре фигуры, но должен плотно прилегать к фактической геометрии контура.
- Specified by:
-
getBounds2Dв интерфейсеShape - Returns:
- ограничивающий
Rectangle2DдляArea. - Since:
- 1.2
- See Also:
getBounds
public Rectangle getBounds()
Rectangle, который полностью охватывает эту Area. Класс Area попытается вернуть наименьший возможный ограничивающий прямоугольник для фигуры. Ограничивающий прямоугольник не будет расширяться для включения контрольных точек кривых в контуре фигуры, но должен плотно прилегать к фактической геометрии контура. Поскольку возвращаемый объект представляет ограничивающий прямоугольник с целыми числами, ограничивающий прямоугольник может быть только таким же плотным, как ближайшие целочисленные координаты, которые охватывают геометрию фигуры.
- Specified by:
-
getBoundsв интерфейсеShape - Returns:
- ограничивающий
RectangleдляArea. - Since:
- 1.2
- See Also:
clone
public Object clone()
Area.- Overrides:
-
cloneв классеObject - Returns:
- Созданный клонированный объект
- Since:
- 1.2
- See Also:
equals
public boolean equals(Area other)
Area. Этот метод вернёт false, если аргумент равен null.- Parameters:
-
other-Areaдля сравнения с этимArea - Returns:
-
trueесли две геометрии равны;falseв противном случае. - Since:
- 1.2
transform
public void transform(AffineTransform t)
Area с помощью указанного AffineTransform. Геометрия преобразуется на месте, что постоянно изменяет замкнутую область, определённую этим объектом.- Parameters:
-
t- преобразование для преобразования области - Throws:
-
NullPointerException- еслиtравно null - Since:
- 1.2
createTransformedArea
public Area createTransformedArea(AffineTransform t)
Area , содержащий ту же геометрию, что и этот Area , преобразованный с помощью указанного AffineTransform. Этот Area объект не изменяется.- Parameters:
-
t- указанноеAffineTransformдля преобразования новогоArea - Returns:
- новый объект
Area, представляющий преобразованную геометрию. - Throws:
-
NullPointerException- еслиtравно null - Since:
- 1.2
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
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и вычисления containment слишком дорогостоящие. - С:
- 1.2
- См. также:
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и вычисления containment слишком дорогостоящие. - С:
- 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
- См. также:
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
- См. также:
getPathIterator
public PathIterator getPathIterator(AffineTransform at)
- Определено в:
-
getPathIteratorв интерфейсеShape - Параметры:
-
at- необязательноеAffineTransformдля применения к координатам по мере их возвращения в итерации, илиnullесли требуется не преобразованные координаты - Возвращает:
- объект
PathIterator, возвращающий геометрию контура этого объектаArea, по одному сегменту за раз. - С:
- 1.2
getPathIterator
public PathIterator getPathIterator(AffineTransform at, double flatness)
Area. Итератор возвращает только неизогнутые сегменты пути, представленные типами точек SEG_MOVETO, SEG_LINETO и SEG_CLOSE. Объект Area не изменяется.- Определено в:
-
getPathIteratorв интерфейсеShape - Параметры:
-
at- необязательноеAffineTransformдля применения к координатам по мере их возвращения в процессе итерации, илиnullесли требуются не преобразованные координаты -
flatness- максимальное отклонение контрольных точек кривой от коллинеарности, прежде чем кривая делится на прямую линию, соединяющую конечные точки - Возвращает:
- объект
PathIterator, возвращающий геометрию контура этого объектаArea, по одному сегменту за раз. - С:
- 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/geom/Area.html