Класс Area
- java.lang.Object
-
- java.awt.geom.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(Shape s) Класс |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
void |
add(Area rhs) Добавляет форму указанного объекта |
Object |
clone() Возвращает точную копию этого объекта |
boolean |
contains(double x,
double y) Проверяет, находятся ли указанные координаты внутри границы объекта |
boolean |
contains(double x,
double y,
double w,
double h) Проверяет, полностью ли внутренняя область объекта |
boolean |
contains(Point2D p) Проверяет, находится ли указанная точка |
boolean |
contains(Rectangle2D r) Проверяет, полностью ли внутренняя область объекта |
Area |
createTransformedArea(AffineTransform t) Создаёт новый объект |
boolean |
equals(Area other) Проверяет, равны ли геометрии двух объектов |
void |
exclusiveOr(Area rhs) Устанавливает форму этого объекта |
Rectangle |
getBounds() Возвращает ограничивающий прямоугольник |
Rectangle2D |
getBounds2D() Возвращает прямоугольник высокой точности |
PathIterator |
getPathIterator(AffineTransform at) Создаёт итератор |
PathIterator |
getPathIterator(AffineTransform at,
double flatness) Создаёт итератор |
void |
intersect(Area rhs) Устанавливает форму этого объекта |
boolean |
intersects(double x,
double y,
double w,
double h) Проверяет, пересекается ли внутренняя область объекта |
boolean |
intersects(Rectangle2D r) Проверяет, пересекается ли внутренняя область объекта |
boolean |
isEmpty() Проверяет, охватывает ли этот объект |
boolean |
isPolygonal() Проверяет, состоит ли этот объект |
boolean |
isRectangular() Проверяет, имеет ли этот объект |
boolean |
isSingular() Проверяет, состоит ли этот объект |
void |
reset() Удаляет всю геометрию из объекта |
void |
subtract(Area rhs) Вычитает форму указанного объекта |
void |
transform(AffineTransform t) Преобразует геометрию этого объекта |
Методы, унаследованные от класса java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Конструкторы
Area
public Area()
Конструктор по умолчанию, который создаёт пустую область.
- Since:
- 1.2
Area
public Area(Shape s)
Класс Area создаёт геометрию области из указанного объекта Shape. Геометрия явно закрывается, если объект Shape ещё не закрыт. Правило заполнения (чёт-нечёт или обход контура), указанное геометрией объекта Shape, используется для определения полученной замкнутой области.
- Параметры:
-
s- объектShape, из которого строится область - Исключения:
-
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)
################ ################ ################
############## ############## ################
############ ############ ################
########## ########## ################
######## ######## ################
###### ###### ###### ######
#### #### #### ####
## ## ## ## - Параметры:
-
rhs- формаArea, которая добавляется к текущей форме - Исключения:
-
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)
################ ################
############## ############## ##
############ ############ ####
########## ########## ######
######## ######## ########
###### ###### ######
#### #### ####
## ## ## - Параметры:
-
rhs- формаArea, которая вычитается из текущей формы - Исключения:
-
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)
################ ################ ################
############## ############## ############
############ ############ ########
########## ########## ####
######## ########
###### ######
#### ####
## ## - Параметры:
-
rhs- формаArea, которая пересекается с этойArea - Исключения:
-
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)
################ ################
############## ############## ## ##
############ ############ #### ####
########## ########## ###### ######
######## ######## ################
###### ###### ###### ######
#### #### #### ####
## ## ## ## - Параметры:
-
rhs- формаArea, которая выполняет операцию XOR с этойArea. - Исключения:
-
NullPointerException- еслиrhsимеет значение null - Since:
- 1.2
reset
public void reset()
Удаляет всю геометрию из этой Area и возвращает её в состояние пустой области.
- Since:
- 1.2
isEmpty
public boolean isEmpty()
Проверяет, содержит ли этот объект Area какую-либо область.
- Возвращает:
-
trueесли этот объектAreaпредставляет пустую область;falseв противном случае. - Since:
- 1.2
isPolygonal
public boolean isPolygonal()
Проверяет, состоит ли эта Area полностью из прямой геометрии многоугольников.
- Возвращает:
-
trueесли геометрия этойAreaсостоит полностью из отрезков прямых;falseв противном случае. - Since:
- 1.2
isRectangular
public boolean isRectangular()
Проверяет, имеет ли эта Area прямоугольную форму.
- Возвращает:
-
trueесли геометрия этойAreaимеет прямоугольную форму;falseв противном случае. - Since:
- 1.2
isSingular
public boolean isSingular()
Проверяет, состоит ли эта Area из одной замкнутой подтраектории. Этот метод возвращает true если траектория содержит 0 или 1 подтраектории, или false если траектория содержит более 1 подтраектории. Подтраектории подсчитываются по количеству сегментов SEG_MOVETO в траектории.
- Возвращает:
-
trueеслиAreaсостоит из одной базовой геометрии;falseв противном случае. - Since:
- 1.2
getBounds2D
public Rectangle2D getBounds2D()
Возвращает высокоточную ограничивающую Rectangle2D, которая полностью включает в себя эту Area.
Класс Area попытается вернуть максимально возможную ограничивающую рамку для Shape. Ограничивающая рамка не будет дополнена для включения контрольных точек кривых в контуре Shape, но должна плотно прилегать к фактической геометрии контура.
- Унаследован от:
-
getBounds2Dв интерфейсеShape - Возвращает:
- ограничивающую рамку для
Area. - Since:
- 1.2
- См. также:
Shape.getBounds()
getBounds
public Rectangle getBounds()
Возвращает ограничивающую Rectangle, которая полностью включает в себя эту Area.
Класс Area попытается вернуть максимально возможную ограничивающую рамку для Shape. Ограничивающая рамка не будет дополнена для включения контрольных точек кривых в контуре Shape, но должна плотно прилегать к фактической геометрии контура. Поскольку возвращаемый объект представляет ограничивающую рамку с целыми числами, ограничивающая рамка может быть только такой же плотной, как ближайшие целочисленные координаты, которые охватывают геометрию Shape.
- Унаследован от:
-
getBoundsв интерфейсеShape - Возвращает:
- ограничивающую рамку для
Area. - Since:
- 1.2
- См. также:
Shape.getBounds2D()
clone
public Object clone()
Возвращает точную копию этого объекта Area.
- Переопределяет:
-
cloneв классеObject - Возвращает:
- Созданный клонированный объект
- Since:
- 1.2
- См. также:
Cloneable
equals
public boolean equals(Area other)
Проверяет, равны ли геометрии двух объектов Area. Этот метод вернёт false, если аргумент имеет значение null.
- Параметры:
-
other- объектArea, который сравнивается с этойArea - Возвращает:
-
trueесли две геометрии равны;falseв противном случае. - Since:
- 1.2
transform
public void transform(AffineTransform t)
Преобразует геометрию этой Area с помощью указанного AffineTransform. Геометрия преобразуется на месте, что приводит к постоянному изменению замкнутой области, определяемой этим объектом.
- Параметры:
-
t- преобразование, используемое для преобразования области - Исключения:
-
NullPointerException- еслиtимеет значение null - Since:
- 1.2
createTransformedArea
public Area createTransformedArea(AffineTransform t)
Создаёт новый объект Area с такой же геометрией, как у этой Area, преобразованной с помощью указанного AffineTransform. Этот объект Area не изменяется.
- Параметры:
-
t- указанноеAffineTransform, используемое для преобразования нового объектаArea - Возвращает:
- новый объект
Area, представляющий преобразованную геометрию. - Исключения:
-
NullPointerException- еслиtимеет значение null - Since:
- 1.2
contains
public boolean contains(double x,
double y) Проверяет, находятся ли указанные координаты внутри границы Shape, как описано в определении принадлежности.
- Унаследован от:
-
containsв интерфейсеShape - Параметры:
-
x- указанная координата X для проверки -
y- указанная координата Y для проверки - Возвращает:
-
trueесли указанные координаты находятся внутри границыShape;falseв противном случае. - Since:
- 1.2
contains
public boolean contains(Point2D p)
Проверяет, находится ли указанная Point2D внутри границы Shape, как описано в определении принадлежности.
- Унаследован от:
-
containsв интерфейсеShape - Параметры:
-
p- указанная точка для проверки - Возвращает:
-
trueесли указанная точка находится внутри границыShape;falseв противном случае. - Since:
- 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и вычисления содержательности слишком затратны. - С:
- 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)
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)
getPathIterator
public PathIterator getPathIterator(AffineTransform at)
Создаёт PathIterator для контура этого объекта Area. Объект Area не изменяется.
- Указано в:
-
getPathIteratorв интерфейсеShape - Параметры:
-
at- необязательноеAffineTransformдля применения к координатам по мере их возврата в итерации, илиnullесли требуется не преобразованные координаты - Возвращает:
- объект
PathIterator, возвращающий геометрию контура этого объектаArea, по одному сегменту за раз. - С:
- 1.2
getPathIterator
public PathIterator getPathIterator(AffineTransform at,
double flatness) Создаёт PathIterator для сглаженного контура этого объекта Area . Итератор возвращает только сегменты траектории без кривых, представленные точками типа SEG_MOVETO, SEG_LINETO и SEG_CLOSE. Этот объект Area не изменяется.
- Указано в:
-
getPathIteratorв интерфейсеShape - Параметры:
-
at- необязательноеAffineTransformдля применения к координатам по мере их возврата в итерации, илиnullесли требуется не преобразованные координаты -
flatness- максимальное отклонение от коллинеарности контрольных точек кривой для замены подчинённой кривой прямой линией, соединяющей конечные точки - Возвращает:
- объект
PathIterator, возвращающий геометрию контура этого объектаArea, по одному сегменту за раз. - С:
- 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.