Spec-Zone.ru › OpenJDK 8

Класс 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 ещё не закрыт. Правило заполнения (чёт-нечёт или обход контура), указанное геометрией объекта 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.

Spec-Zone.ru

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