Spec-Zone.ru › OpenJDK 21

Класс 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)
Класс Area создаёт геометрию области из заданного объекта Shape.

Краткое описание методов

Модификатор и тип Метод Описание
void add(Area rhs)
Добавляет форму заданного объекта Area к форме этого объекта Area.
Object clone()
Возвращает точную копию этого объекта Area.
boolean contains(double x, double y)
Проверяет, находятся ли указанные координаты внутри границы объекта Shape, как описано в определении принадлежности.
boolean contains(double x, double y, double w, double h)
Проверяет, полностью ли внутренность объекта Shape содержит указанную прямоугольную область.
boolean contains(Point2D p)
Проверяет, находится ли указанная точка Point2D внутри границы объекта Shape, как описано в определении принадлежности.
boolean contains(Rectangle2D r)
Проверяет, полностью ли внутренность объекта Shape содержит указанный объект Rectangle2D.
Area createTransformedArea(AffineTransform t)
Создаёт новый объект Area , содержащий такую же геометрию, как и этот объект Area , преобразованный с помощью заданного преобразования AffineTransform.
boolean equals(Area other)
Проверяет, равны ли геометрии двух объектов Area.
void exclusiveOr(Area rhs)
Устанавливает форму этого объекта Area в качестве объединённой области его текущей формы и формы заданного объекта Area , за вычетом их пересечения.
Rectangle getBounds()
Возвращает ограничивающий прямоугольник Rectangle, который полностью охватывает этот объект Area.
Rectangle2D getBounds2D()
Возвращает ограничивающий прямоугольник высокой точности Rectangle2D, который полностью охватывает этот объект Area.
PathIterator getPathIterator(AffineTransform at)
Создаёт объект PathIterator для контура этого объекта Area.
PathIterator getPathIterator(AffineTransform at, double flatness)
Создаёт объект PathIterator для сглаженного контура этого объекта Area.
void intersect(Area rhs)
Устанавливает форму этого объекта Area в качестве пересечения его текущей формы и формы указанного объекта Area.
boolean intersects(double x, double y, double w, double h)
Проверяет, пересекается ли внутренность объекта Shape с внутренностью заданной прямоугольной области.
boolean intersects(Rectangle2D r)
Проверяет, пересекается ли внутренность объекта Shape с внутренностью заданного объекта Rectangle2D.
boolean isEmpty()
Проверяет, содержит ли этот объект Area какую-либо область.
boolean isPolygonal()
Проверяет, состоит ли этот объект Area целиком из прямолинейных полигональных геометрических элементов.
boolean isRectangular()
Проверяет, имеет ли этот объект Area прямоугольную форму.
boolean isSingular()
Проверяет, состоит ли этот объект Area из одной замкнутой подтраектории.
void reset()
Удаляет всю геометрию из этого объекта Area и восстанавливает его в пустую область.
void subtract(Area rhs)
Вычитает форму заданного объекта Area из формы этого объекта Area.
void transform(AffineTransform t)
Преобразует геометрию этого объекта Area с помощью заданного объекта AffineTransform.

Методы, объявленные в классе 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, используется для определения итоговой закрытой области.
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:
ограничивающая прямоугольная область для Area.
Since:
1.2
See Also:
  • Shape.getBounds()

getBounds

public Rectangle getBounds()
Возвращает ограничивающую Rectangle, которая полностью охватывает этот объект Area.

Класс Area попытается вернуть максимально возможную ограничивающую прямоугольную область для формы. Ограничивающая прямоугольная область не будет расширена для включения контрольных точек кривых на контуре формы, но должна плотно прилегать к фактической геометрии контура. Поскольку возвращаемый объект представляет ограничивающую прямоугольную область с целыми числами, ограничивающая прямоугольная область может быть лишь настолько плотной, насколько это позволяют ближайшие целочисленные координаты, охватывающие геометрию формы.

Specified by:
getBounds в интерфейсе Shape
Returns:
ограничивающая прямоугольная область для Area.
Since:
1.2
See Also:
  • Shape.getBounds2D()

clone

public Object clone()
Возвращает точную копию объекта Area.
Overrides:
clone в классе Object
Returns:
Созданный клонированный объект
Since:
1.2
See Also:
  • Cloneable

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 и вычисления включения были бы слишком дорогостоящими.
С:
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)
Создает итератор для сглаженного контура этого объекта Area. Итератор возвращает только неизогнутые сегменты пути, представленные типами точек SEG_MOVETO, SEG_LINETO и SEG_CLOSE. Сам объект Area не изменяется.
Определяется:
getPathIterator в интерфейсе Shape
Параметры:
at - необязательное аффинное преобразование, применяемое к координатам во время итерации, или null, если желаемы не преобразованные координаты
flatness - максимальное отклонение контрольных точек кривой от коллинеарности, после которого кривая разбивается на прямую линию, соединяющую конечные точки
Возвращает:
объект итератора, возвращающий геометрию контура этого объекта Area, по одному сегменту за раз.
С:
1.2

© 1993, 2023, 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/21/docs/api/java.desktop/java/awt/geom/Area.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API