Класс Area

Все реализованные интерфейсы:
Shape, Cloneable
public class Area
extends Object
implements Shape, Cloneable

Объект типа Area хранит и обрабатывает независимое от разрешения описание ограниченной области двумерного пространства. Объекты Area могут преобразовываться и выполнять различные операции геометрии конструктивных областей (CAG) при объединении с другими объектами Area. Операции CAG включают добавление области addition, вычитание subtraction, пересечение intersection и исключающее ИЛИ exclusive or. Примеры различных операций см. в документации по соответствующим методам.

Класс Area реализует интерфейс Shape и предоставляет полную поддержку всех его возможностей тестирования попадания и итерации по траекториям, но объект Area более специфичен, чем обобщённая траектория по ряду причин:

  • Хранятся только замкнутые траектории и подтраектории. Объекты Area , созданные из незамкнутых траекторий, неявно закрываются во время создания, как если бы эти траектории были заполнены методом Graphics2D.fill.
  • Внутренности каждой хранящейся подтраектории непустые и непересекающиеся. Траектории делятся во время создания на отдельные непересекающиеся компоненты, пустые фрагменты траектории отбрасываются, а затем эти свойства непустоты и непересечения поддерживаются во всех последующих операциях CAG. Контуры различных подтраекторий могут касаться друг друга, но не должны пересекаться, чтобы их ограниченные области не перекрывались.
  • Геометрия траектории, описывающей контур Area , напоминает траекторию, из которой она была создана, только тем, что описывает ту же ограниченную двумерную область, но может использовать совершенно разные типы и порядок сегментов траектории для этого.
Интересные моменты, которые не всегда очевидны при использовании класса 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()

Конструктор по умолчанию, создающий пустую область.

С:
1.2

Area

public Area(Shape s)

Класс Area создаёт геометрию области из указанного объекта Shape. Геометрия явным образом закрывается, если Shape не является замкнутой. Правило заполнения (чёт-нечёт или обход) , заданное геометрией Shape , используется для определения результирующей ограниченной области.

Параметры:
s - объект Shape , из которого создаётся область
Исключения:
NullPointerException - если s равно null
С:
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
С момента:
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
С момента:
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
С момента:
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 для exclusive OR с этим Area.
Исключения:
NullPointerException - если rhs равно null
С момента:
1.2

reset

public void reset()

Удаляет всю геометрию из этого Area и возвращает его в пустую область.

С момента:
1.2

isEmpty

public boolean isEmpty()

Проверяет, содержит ли этот объект Area какую-либо область.

Возвращает:
true если этот объект Area представляет пустую область; false в противном случае.
С момента:
1.2

isPolygonal

public boolean isPolygonal()

Проверяет, состоит ли этот объект Area целиком из геометрии прямолинейных многоугольников.

Возвращает:
true если геометрия этого Area состоит целиком из отрезков прямых; false в противном случае.
С момента:
1.2

isRectangular

public boolean isRectangular()

Проверяет, имеет ли этот Area прямоугольную форму.

Возвращает:
true если геометрия этого Area имеет прямоугольную форму; false в противном случае.
С момента:
1.2

isSingular

public boolean isSingular()

Проверяет, состоит ли этот объект Area из единственной замкнутой подтраектории. Этот метод возвращает true если траектория содержит 0 или 1 подтраектории, или false если траектория содержит более 1 подтраектории. Подтраектории подсчитываются по количеству сегментов SEG_MOVETO в траектории.

Возвращает:
true если Area состоит из одной базовой геометрии; false в противном случае.
С момента:
1.2

getBounds2D

public Rectangle2D getBounds2D()

Возвращает высокоточное ограничивающее Rectangle2D, которое полностью охватывает этот Area.

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

Определено в:
getBounds2D в интерфейсе Shape
Возвращает:
ограничивающий прямоугольник для Area.
С момента:
1.2
См. также:
Shape.getBounds()

getBounds

public Rectangle getBounds()

Возвращает ограничивающий Rectangle, который полностью охватывает этот Area.

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

Определено в:
getBounds в интерфейсе Shape
Возвращает:
ограничивающий прямоугольник для Area.
С момента:
1.2
См. также:
Shape.getBounds2D()

clone

public Object clone()

Возвращает точную копию этого объекта Area.

Переопределяет:
clone в классе Object
Возвращает:
Созданный клонированный объект
С момента:
1.2
См. также:
Cloneable

equals

public boolean equals(Area other)

Проверяет, равны ли геометрии двух объектов Area. Этот метод вернет false, если аргумент null.

Параметры:
other - сравниваемый Area с этим Area
Возвращает:
true если две геометрии равны; false в противном случае.
С момента:
1.2

transform

public void transform(AffineTransform t)

Преобразует геометрию этого Area с помощью указанного AffineTransform. Геометрия преобразуется на месте, что приводит к постоянному изменению области, ограниченной этим объектом.

Параметры:
t - преобразование, используемое для преобразования области
Исключения:
NullPointerException - если t равно null
С момента:
1.2

createTransformedArea

public Area createTransformedArea(AffineTransform t)

Создает новый объект Area, который содержит ту же геометрию, что и этот Area преобразованный с помощью указанного AffineTransform. Этот объект Area не изменяется.

Параметры:
t - указанное AffineTransform для преобразования нового Area
Возвращает:
новый объект Area, представляющий преобразованную геометрию.
Исключения:
NullPointerException - если t равно null
С момента:
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)

Создаёт объект 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/geom/Area.html

Spec-Zone .ru
спецификации, руководства, описания, API