Spec-Zone.ru › OpenJDK 27

Класс Path2D

java.lang.Object
java.awt.geom.Path2D
Все реализуемые интерфейсы:
Shape, Cloneable
Прямые известные подклассы:
Path2D.Double, Path2D.Float
public abstract sealed class Path2D extends Object implements Shape, Cloneable permits Path2D.Double, Path2D.Float
Класс Path2D предоставляет простую, но гибкую форму, представляющую произвольный геометрический путь. Он может полностью представлять любой путь, который можно перебирать с помощью интерфейса PathIterator, включая все его типы сегментов и правила обхода, и реализует все основные методы проверки попадания интерфейса Shape.

Используйте Path2D.Float для работы с данными, которые можно представить и использовать с точностью чисел с плавающей точкой. Используйте Path2D.Double для данных, требующих точности или диапазона чисел двойной точности.

Path2D предоставляет именно те средства, которые необходимы для базового создания и управления геометрическим путём, а также реализации указанных выше интерфейсов с минимальной дополнительной интерпретацией. Если требуется манипулировать внутренними областями замкнутых геометрических фигур не ограничиваясь простой проверкой попадания, класс Area предоставляет дополнительные возможности, специально предназначенные для замкнутых фигур. Хотя оба класса формально реализуют интерфейс Shape, они имеют разные назначения и вместе предоставляют два полезных представления геометрической фигуры: Path2D работает главным образом с траекторией, образованной сегментами пути, а Area — с интерпретацией и обработкой областей, заключённых в двумерном геометрическом пространстве.

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

Граф иерархии запечатанных классов:
Sealed class hierarchy graph for Path2DSealed class hierarchy graph for Path2D
С версии:
1.6

Краткое описание вложенных классов

Модификатор и тип Класс Описание
static class  Path2D.Double
Класс Double определяет геометрический путь с координатами, хранящимися в формате чисел с плавающей точкой двойной точности.
static class  Path2D.Float
Класс Float определяет геометрический путь с координатами, хранящимися в формате чисел с плавающей точкой одинарной точности.

Краткое описание полей

Модификатор и тип Поле Описание
static final int WIND_EVEN_ODD
Правило обхода чётное-нечётное для определения внутренней области пути.
static final int WIND_NON_ZERO
Правило обхода ненулевого значения для определения внутренней области пути.

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

Модификатор и тип Метод Описание
abstract void append(PathIterator pi, boolean connect)
Добавляет геометрию указанного объекта PathIterator к пути, при необходимости соединяя новую геометрию с существующими сегментами пути отрезком.
final void append(Shape s, boolean connect)
Добавляет геометрию указанного объекта Shape к пути, при необходимости соединяя новую геометрию с существующими сегментами пути отрезком.
abstract Object clone()
Создаёт новый объект того же класса, что и этот объект.
final void closePath()
Закрывает текущий подпуть, проводя прямую линию обратно к координатам последнего moveTo.
final boolean contains(double x, double y)
Проверяет, находятся ли указанные координаты внутри границы Shape, как описано в определении принадлежности внутренней области.
final boolean contains(double x, double y, double w, double h)
Проверяет, полностью ли внутренняя область Shape содержит указанную прямоугольную область.
static boolean contains(PathIterator pi, double x, double y)
Проверяет, находятся ли указанные координаты внутри замкнутой границы указанного PathIterator.
static boolean contains(PathIterator pi, double x, double y, double w, double h)
Проверяет, находится ли указанная прямоугольная область целиком внутри замкнутой границы указанного PathIterator.
static boolean contains(PathIterator pi, Point2D p)
Проверяет, находится ли указанная точка Point2D внутри замкнутой границы указанного PathIterator.
static boolean contains(PathIterator pi, Rectangle2D r)
Проверяет, находится ли указанный прямоугольник Rectangle2D целиком внутри замкнутой границы указанного PathIterator.
final boolean contains(Point2D p)
Проверяет, находится ли указанная точка Point2D внутри границы Shape, как описано в определении принадлежности внутренней области.
final boolean contains(Rectangle2D r)
Проверяет, полностью ли внутренняя область Shape содержит указанный Rectangle2D.
final Shape createTransformedShape(AffineTransform at)
Возвращает новый Shape, представляющий преобразованную версию этого Path2D.
abstract void curveTo(double x1, double y1, double x2, double y2, double x3, double y3)
Добавляет к пути криволинейный сегмент, определяемый тремя новыми точками, строя кривую Безье, которая проходит через текущие координаты и указанные координаты (x3,y3); указанные точки (x1,y1) и (x2,y2) используются в качестве управляющих точек кривой Безье.
final Rectangle getBounds()
Возвращает целочисленный Rectangle, полностью охватывающий Shape.
final Point2D getCurrentPoint()
Возвращает последние добавленные в конец пути координаты в виде объекта Point2D.
final PathIterator getPathIterator(AffineTransform at, double flatness)
Возвращает объект-итератор, который проходит вдоль границы Shape и предоставляет доступ к упрощённому представлению геометрии контура Shape.
final int getWindingRule()
Возвращает правило обхода, используемое для заливки.
final boolean intersects(double x, double y, double w, double h)
Проверяет, пересекается ли внутренняя область Shape с внутренней областью указанной прямоугольной области.
static boolean intersects(PathIterator pi, double x, double y, double w, double h)
Проверяет, пересекается ли внутренняя область указанного PathIterator с внутренней областью заданного набора прямоугольных координат.
static boolean intersects(PathIterator pi, Rectangle2D r)
Проверяет, пересекается ли внутренняя область указанного PathIterator с внутренней областью указанного Rectangle2D.
final boolean intersects(Rectangle2D r)
Проверяет, пересекается ли внутренняя область Shape с внутренней областью указанного Rectangle2D.
abstract void lineTo(double x, double y)
Добавляет точку к пути, проводя прямую линию от текущих координат к новым указанным координатам, заданным с двойной точностью.
abstract void moveTo(double x, double y)
Добавляет точку к пути, перемещаясь к указанным координатам, заданным с двойной точностью.
abstract void quadTo(double x1, double y1, double x2, double y2)
Добавляет к пути криволинейный сегмент, определяемый двумя новыми точками, строя квадратичную кривую, которая проходит через текущие координаты и указанные координаты (x2,y2); указанная точка (x1,y1) используется в качестве управляющей точки квадратичной параметрической кривой.
final void reset()
Очищает путь.
final void setWindingRule(int rule)
Задаёт для этого пути указанное правило обхода.
abstract void transform(AffineTransform at)
Преобразует геометрию этого пути с помощью указанного AffineTransform.
abstract void trimToSize()
Уменьшает ёмкость этого экземпляра Path2D до его текущего размера.

Методы, объявленные в классе Object

equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
boolean equals(Object obj)
Указывает, равен ли этот объект некоторому другому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Финализация объявлена устаревшей и будет удалена в одном из следующих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного интервала реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного интервала реального времени.

Методы, объявленные в интерфейсе Shape

getBounds2D, getPathIterator
Модификатор и тип Метод Описание
Rectangle2D getBounds2D()
Возвращает ограничивающую рамку Shape с более высокой точностью, чем метод getBounds.
PathIterator getPathIterator(AffineTransform at)
Возвращает объект-итератор, который проходит вдоль границы Shape и предоставляет доступ к геометрии контура Shape.

Подробное описание полей

WIND_EVEN_ODD

public static final int WIND_EVEN_ODD
Правило чётности для определения внутренней области пути.
Начиная с:
1.6
См. также:
  • PathIterator.WIND_EVEN_ODD
  • Значения константных полей

WIND_NON_ZERO

public static final int WIND_NON_ZERO
Правило ненулевого числа обходов для определения внутренней области пути.
Начиная с:
1.6
См. также:
  • PathIterator.WIND_NON_ZERO
  • Значения константных полей

Подробное описание методов

moveTo

public abstract void moveTo(double x, double y)
Добавляет точку в путь, перемещаясь к заданным координатам, представленным числами двойной точности.
Параметры:
x — заданная координата X
y — заданная координата Y
Начиная с:
1.6

lineTo

public abstract void lineTo(double x, double y)
Добавляет точку в путь, проводя прямую линию от текущих координат до новых заданных координат, представленных числами двойной точности.
Параметры:
x — заданная координата X
y — заданная координата Y
Начиная с:
1.6

quadTo

public abstract void quadTo(double x1, double y1, double x2, double y2)
Добавляет к пути криволинейный сегмент, заданный двумя новыми точками, строя квадратичную кривую, проходящую через текущие координаты и заданные координаты (x2,y2), используя заданную точку (x1,y1) в качестве управляющей точки квадратичной параметрической кривой. Все координаты представлены числами двойной точности.
Параметры:
x1 — координата X управляющей точки квадратичной кривой
y1 — координата Y управляющей точки квадратичной кривой
x2 — координата X конечной точки
y2 — координата Y конечной точки
Начиная с:
1.6

curveTo

public abstract void curveTo(double x1, double y1, double x2, double y2, double x3, double y3)
Добавляет к пути криволинейный сегмент, заданный тремя новыми точками, строя кривую Безье, проходящую через текущие координаты и заданные координаты (x3,y3), используя заданные точки (x1,y1) и (x2,y2) в качестве управляющих точек кривой Безье. Все координаты представлены числами двойной точности.
Параметры:
x1 — координата X первой управляющей точки кривой Безье
y1 — координата Y первой управляющей точки кривой Безье
x2 — координата X второй управляющей точки кривой Безье
y2 — координата Y второй управляющей точки кривой Безье
x3 — координата X конечной точки
y3 — координата Y конечной точки
Начиная с:
1.6

closePath

public final void closePath()
Замыкает текущий подпуть, проводя прямую линию обратно к координатам последнего moveTo. Если путь уже замкнут, этот метод ничего не делает.
Начиная с:
1.6

append

public final void append(Shape s, boolean connect)
Добавляет геометрию указанного объекта Shape к пути, при необходимости соединяя новую геометрию с существующими сегментами пути отрезком. Если параметр connect равен true и путь не пуст, любой начальный moveTo в геометрии добавляемого Shape преобразуется в сегмент lineTo. Если конечные координаты такого соединительного сегмента lineTo совпадают с конечными координатами открытого в данный момент подпути, сегмент пропускается как избыточный. Правило обхода указанного Shape игнорируется, а добавленная геометрия подчиняется правилу обхода, заданному для этого пути.
Параметры:
s — Shape, геометрия которого добавляется к этому пути
connect — логическое значение, определяющее, следует ли преобразовать начальный сегмент moveTo в сегмент lineTo для соединения новой геометрии с существующим путем
Начиная с:
1.6

append

public abstract void append(PathIterator pi, boolean connect)
Добавляет геометрию указанного объекта PathIterator к пути, при необходимости соединяя новую геометрию с существующими сегментами пути отрезком. Если параметр connect равен true и путь не пуст, любой начальный moveTo в геометрии добавляемого Shape преобразуется в сегмент lineTo. Если конечные координаты такого соединительного сегмента lineTo совпадают с конечными координатами открытого в данный момент подпути, сегмент пропускается как избыточный. Правило обхода указанного Shape игнорируется, а добавленная геометрия подчиняется правилу обхода, заданному для этого пути.
Параметры:
pi — PathIterator, геометрия которого добавляется к этому пути
connect — логическое значение, определяющее, следует ли преобразовать начальный сегмент moveTo в сегмент lineTo для соединения новой геометрии с существующим путем
Начиная с:
1.6

getWindingRule

public final int getWindingRule()
Возвращает правило обхода, используемое для заливки.
Возвращает:
целое число, представляющее текущее правило обхода.
Начиная с:
1.6
См. также:
  • WIND_EVEN_ODD
  • WIND_NON_ZERO
  • setWindingRule(int)

setWindingRule

public final void setWindingRule(int rule)
Устанавливает для этого пути указанное правило обхода.
Параметры:
rule — целое число, представляющее заданное правило обхода
Исключения:
IllegalArgumentException — если rule не равен ни WIND_EVEN_ODD, ни WIND_NON_ZERO
Начиная с:
1.6
См. также:
  • getWindingRule()

getCurrentPoint

public final Point2D getCurrentPoint()
Возвращает координаты, последними добавленные в конец пути, в виде объекта Point2D.
Возвращает:
объект Point2D, содержащий конечные координаты пути, или null, если путь не содержит точек.
Начиная с:
1.6

reset

public final void reset()
Очищает путь. Позиция добавления возвращается в начало пути, а все координаты и типы точек удаляются.
Начиная с:
1.6

transform

public abstract void transform(AffineTransform at)
Преобразует геометрию этого пути с помощью указанного объекта AffineTransform. Геометрия преобразуется на месте, что навсегда изменяет границу, определяемую этим объектом.
Параметры:
at — AffineTransform, используемый для преобразования области
Начиная с:
1.6

createTransformedShape

public final Shape createTransformedShape(AffineTransform at)
Возвращает новый Shape, представляющий преобразованную версию этого Path2D. Обратите внимание, что точный тип и точность координат возвращаемого значения для этого метода не определены. Метод вернет Shape, точность которого для преобразованной геометрии будет не ниже точности, поддерживаемой этим Path2D, однако она может и не быть выше. Если важно соотношение точности и объема хранимых данных результата, для явного выбора следует использовать удобные конструкторы подклассов Path2D.Float и Path2D.Double.
Параметры:
at — AffineTransform, используемый для преобразования нового Shape.
Возвращает:
новый Shape, преобразованный с помощью указанного AffineTransform.
Начиная с:
1.6

getBounds

public final Rectangle getBounds()
Возвращает целочисленный объект Rectangle, полностью охватывающий Shape. Обратите внимание, что нет гарантии, что возвращенный Rectangle является наименьшим ограничивающим прямоугольником, охватывающим Shape; гарантируется только, что Shape целиком находится внутри указанного Rectangle. Возвращенный Rectangle также может не охватывать Shape полностью, если Shape выходит за ограниченный диапазон целочисленного типа данных. Метод getBounds2D обычно возвращает более точный ограничивающий прямоугольник благодаря большей гибкости представления.

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

Если point находится внутри shape согласно методу contains(point), то она должна находиться внутри возвращенного объекта границ Rectangle согласно методу contains(point) объекта bounds. В частности:

shape.contains(x,y) требует bounds.contains(x,y)

Если point не находится внутри shape, она всё же может находиться внутри объекта bounds:

bounds.contains(x,y) не подразумевает shape.contains(x,y)

Определено в:
getBounds в интерфейсе Shape
Возвращает:
целочисленный Rectangle, полностью охватывающий Shape.
Начиная с:
1.6
См. также:
  • Shape.getBounds2D()

contains

public static boolean contains(PathIterator pi, double x, double y)
Проверяет, находятся ли указанные координаты внутри замкнутой границы указанного PathIterator.

Этот метод предоставляет базовые средства для реализации поддержки метода Shape.contains(double, double) классами, реализующими интерфейс Shape.

Параметры:
pi — указанный PathIterator
x — заданная координата X
y — заданная координата Y
Возвращает:
true, если указанные координаты находятся внутри указанного PathIterator; в противном случае — false
Начиная с:
1.6

contains

public static boolean contains(PathIterator pi, Point2D p)
Проверяет, находится ли указанная точка Point2D внутри замкнутой границы указанного PathIterator.

Этот метод предоставляет базовые средства для реализации поддержки метода Shape.contains(Point2D) классами, реализующими интерфейс Shape.

Параметры:
pi — указанный PathIterator
p — указанный Point2D
Возвращает:
true, если указанные координаты находятся внутри указанного PathIterator; в противном случае — false
Начиная с:
1.6

contains

public final boolean contains(double x, double y)
Проверяет, находятся ли указанные координаты внутри границы Shape, как описано в определении принадлежности внутренней области.
Определено в:
contains в интерфейсе Shape
Параметры:
x — заданная координата X для проверки
y — заданная координата Y для проверки
Возвращает:
true, если указанные координаты находятся внутри границы Shape; в противном случае — false.
Начиная с:
1.6

contains

public final boolean contains(Point2D p)
Проверяет, находится ли указанная точка Point2D внутри границы Shape, как описано в определении принадлежности внутренней области.
Определено в:
contains в интерфейсе Shape
Параметры:
p — указанная Point2D для проверки
Возвращает:
true, если указанная Point2D находится внутри границы Shape; в противном случае — false.
Начиная с:
1.6

contains

public static boolean contains(PathIterator pi, double x, double y, double w, double h)
Проверяет, полностью ли указанная прямоугольная область находится внутри замкнутой границы указанного PathIterator.

Этот метод предоставляет базовые средства для реализации поддержки метода Shape.contains(double, double, double, double) классами, реализующими интерфейс Shape.

В целях консервативной оценки этот метод может вернуть false, если указанная прямоугольная область пересекает сегмент пути, но этот сегмент не является границей между внутренней и внешней областями пути. Такие сегменты могут целиком находиться внутри пути, если они принадлежат пути с правилом обхода WIND_NON_ZERO или если сегменты повторно проходятся в обратном направлении, так что две группы сегментов взаимно компенсируются и между ними нет внешней области. Чтобы определить, являются ли сегменты настоящими границами внутренней области пути, потребовались бы обширные вычисления с учетом всех сегментов пути и правила обхода, что выходит за рамки данной реализации.

Параметры:
pi — указанный PathIterator
x — заданная координата X
y — заданная координата Y
w — ширина указанной прямоугольной области
h — высота указанной прямоугольной области
Возвращает:
true, если указанный PathIterator содержит заданную прямоугольную область; в противном случае — false.
Начиная с:
1.6

contains

public static boolean contains(PathIterator pi, Rectangle2D r)
Проверяет, полностью ли указанный Rectangle2D находится внутри замкнутой границы указанного PathIterator.

Этот метод предоставляет базовые средства для реализации поддержки метода Shape.contains(Rectangle2D) классами, реализующими интерфейс Shape.

В целях консервативной оценки этот метод может вернуть false, если указанная прямоугольная область пересекает сегмент пути, но этот сегмент не является границей между внутренней и внешней областями пути. Такие сегменты могут целиком находиться внутри пути, если они принадлежат пути с правилом обхода WIND_NON_ZERO или если сегменты повторно проходятся в обратном направлении, так что две группы сегментов взаимно компенсируются и между ними нет внешней области. Чтобы определить, являются ли сегменты настоящими границами внутренней области пути, потребовались бы обширные вычисления с учетом всех сегментов пути и правила обхода, что выходит за рамки данной реализации.

Параметры:
pi — указанный PathIterator
r — указанный Rectangle2D
Возвращает:
true, если указанный PathIterator содержит указанный Rectangle2D; в противном случае — false.
Начиная с:
1.6

contains

public final 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, поэтому его можно использовать, если требуется более точный результат.

В целях консервативной оценки этот метод может вернуть false, если указанная прямоугольная область пересекает сегмент пути, но этот сегмент не является границей между внутренней и внешней областями пути. Такие сегменты могут целиком находиться внутри пути, если они принадлежат пути с правилом обхода WIND_NON_ZERO или если сегменты повторно проходятся в обратном направлении, так что две группы сегментов взаимно компенсируются и между ними нет внешней области. Чтобы определить, являются ли сегменты настоящими границами внутренней области пути, потребовались бы обширные вычисления с учетом всех сегментов пути и правила обхода, что выходит за рамки данной реализации.

Определено в:
contains в интерфейсе Shape
Параметры:
x — координата X верхнего левого угла указанной прямоугольной области
y — координата Y верхнего левого угла указанной прямоугольной области
w — ширина указанной прямоугольной области
h — высота указанной прямоугольной области
Возвращает:
true, если внутренняя область Shape полностью содержит указанную прямоугольную область; в противном случае — false, а также если Shape содержит прямоугольную область, метод intersects возвращает true, а вычисления для проверки включения требуют чрезмерных затрат.
Начиная с:
1.6
См. также:
  • Area
  • Shape.intersects(double, double, double, double)

contains

public final boolean contains(Rectangle2D r)
Проверяет, полностью ли внутренняя область Shape содержит указанный Rectangle2D. Метод Shape.contains() позволяет реализации Shape консервативно возвращать false в следующих случаях:
  • метод intersect возвращает true; и
  • вычисления, необходимые для определения того, полностью ли Shape содержит Rectangle2D, требуют чрезмерных затрат.
Это означает, что для некоторых Shapes этот метод может вернуть false, даже если Shape содержит Rectangle2D. Класс Area выполняет более точные геометрические вычисления, чем большинство объектов Shape, поэтому его можно использовать, если требуется более точный результат.

В целях консервативной оценки этот метод может вернуть false, если указанная прямоугольная область пересекает сегмент пути, но этот сегмент не является границей между внутренней и внешней областями пути. Такие сегменты могут целиком находиться внутри пути, если они принадлежат пути с правилом обхода WIND_NON_ZERO или если сегменты повторно проходятся в обратном направлении, так что две группы сегментов взаимно компенсируются и между ними нет внешней области. Чтобы определить, являются ли сегменты настоящими границами внутренней области пути, потребовались бы обширные вычисления с учетом всех сегментов пути и правила обхода, что выходит за рамки данной реализации.

Определено в:
contains в интерфейсе Shape
Параметры:
r — указанный Rectangle2D
Возвращает:
true, если внутренняя область Shape полностью содержит Rectangle2D; в противном случае — false, а также если Shape содержит Rectangle2D, метод intersects возвращает true, а вычисления для проверки включения требуют чрезмерных затрат.
Начиная с:
1.6
См. также:
  • Shape.contains(double, double, double, double)

intersects

public static boolean intersects(PathIterator pi, double x, double y, double w, double h)
Проверяет, пересекается ли внутренняя область указанного PathIterator с внутренней областью заданного прямоугольника.

Этот метод предоставляет базовые средства для реализации поддержки метода Shape.intersects(double, double, double, double) классами, реализующими интерфейс Shape.

В целях консервативной оценки этот метод может вернуть true, если указанная прямоугольная область пересекает сегмент пути, но этот сегмент не является границей между внутренней и внешней областями пути. Такая ситуация может возникнуть, если некоторые сегменты пути повторно проходятся в обратном направлении, так что две группы сегментов взаимно компенсируются и между ними нет внутренней области. Чтобы определить, являются ли сегменты настоящими границами внутренней области пути, потребовались бы обширные вычисления с учетом всех сегментов пути и правила обхода, что выходит за рамки данной реализации.

Параметры:
pi — указанный PathIterator
x — заданная координата X
y — заданная координата Y
w — ширина указанной прямоугольной области
h — высота указанной прямоугольной области
Возвращает:
true, если указанный PathIterator и внутренняя область заданного прямоугольника пересекаются; в противном случае — false.
Начиная с:
1.6

intersects

public static boolean intersects(PathIterator pi, Rectangle2D r)
Проверяет, пересекается ли внутренняя область указанного PathIterator с внутренней областью указанного Rectangle2D.

Этот метод предоставляет базовые средства для реализации интерфейса Shape и поддержки метода Shape.intersects(Rectangle2D).

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

Параметры:
pi — указанный PathIterator
r — указанная Rectangle2D
Возвращает:
true, если указанный PathIterator и внутренняя область указанного Rectangle2D пересекаются; в противном случае — false.
Начиная с:
1.6

intersects

public final boolean intersects(double x, double y, double w, double h)
Проверяет, пересекается ли внутренняя область Shape с внутренней областью указанной прямоугольной области. Считается, что прямоугольная область пересекается с Shape, если какая-либо точка принадлежит одновременно внутренней области Shape и указанной прямоугольной области.

Метод Shape.intersects() позволяет реализации Shape консервативно возвращать true в следующих случаях:

  • высока вероятность пересечения прямоугольной области и Shape, но
  • точное определение этого пересечения требует чрезмерно больших вычислительных затрат.
Это означает, что для некоторых Shapes этот метод может вернуть true, даже если прямоугольная область не пересекается с Shape. Класс Area выполняет более точные вычисления геометрического пересечения, чем большинство объектов Shape, поэтому его можно использовать, если требуется более точный результат.

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

Определено в:
intersects в интерфейсе Shape
Параметры:
x — координата X верхнего левого угла указанной прямоугольной области
y — координата Y верхнего левого угла указанной прямоугольной области
w — ширина указанной прямоугольной области
h — высота указанной прямоугольной области
Возвращает:
true, если внутренняя область Shape и внутренняя область прямоугольной области пересекаются либо с высокой вероятностью пересекаются, а вычисление пересечения требует чрезмерно больших затрат; в противном случае — false.
Начиная с:
1.6
См. также:
  • Area

intersects

public final boolean intersects(Rectangle2D r)
Проверяет, пересекается ли внутренняя область Shape с внутренней областью указанного Rectangle2D. Метод Shape.intersects() позволяет реализации Shape консервативно возвращать true в следующих случаях:
  • высока вероятность пересечения Rectangle2D и Shape, но
  • точное определение этого пересечения требует чрезмерно больших вычислительных затрат.
Это означает, что для некоторых Shapes этот метод может вернуть true, даже если Rectangle2D не пересекается с Shape. Класс Area выполняет более точные вычисления геометрического пересечения, чем большинство объектов Shape, поэтому его можно использовать, если требуется более точный результат.

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

Определено в:
intersects в интерфейсе Shape
Параметры:
r — указанный Rectangle2D
Возвращает:
true, если внутренняя область Shape и внутренняя область указанного Rectangle2D пересекаются либо с высокой вероятностью пересекаются, а вычисление пересечения требует чрезмерно больших затрат; в противном случае — false.
Начиная с:
1.6
См. также:
  • Shape.intersects(double, double, double, double)

getPathIterator

public final PathIterator getPathIterator(AffineTransform at, double flatness)
Возвращает объект-итератор, который проходит вдоль границы Shape и предоставляет доступ к аппроксимированной геометрии контура Shape.

Итератор возвращает только типы точек SEG_MOVETO, SEG_LINETO и SEG_CLOSE.

Если указан необязательный AffineTransform, координаты, возвращаемые при итерации, преобразуются соответствующим образом.

Степень разбиения криволинейных сегментов определяется параметром flatness, который задает максимальное расстояние, на которое любая точка исходной кривой после преобразования может отклоняться от возвращаемых сегментов аппроксимированного пути. Обратите внимание, что ограничение точности аппроксимации пути может быть применено без уведомления, в результате чего очень малые значения параметра аппроксимации будут считаться более крупными. Если такое ограничение существует, оно определяется конкретной используемой реализацией.

Каждый вызов этого метода возвращает новый объект PathIterator, который независимо обходит геометрию объекта Shape, не завися от других одновременно используемых объектов PathIterator.

Рекомендуется, но не гарантируется, чтобы объекты, реализующие интерфейс Shape, изолировали выполняющиеся итерации от изменений исходной геометрии объекта, которые могут произойти во время таких итераций.

Итератор этого класса не является потокобезопасным. Это означает, что класс Path2D не гарантирует, что изменения геометрии объекта Path2D не повлияют на уже выполняющиеся итерации этой геометрии.

Определено в:
getPathIterator в интерфейсе Shape
Параметры:
at — необязательный AffineTransform, применяемый к координатам при их возврате во время итерации, или null, если требуются непреобразованные координаты
flatness — максимальное расстояние, на которое от любой точки исходной кривой могут отклоняться отрезки прямых, используемые для аппроксимации криволинейных сегментов
Возвращает:
новый PathIterator, который независимо обходит аппроксимированное представление геометрии Shape.
Начиная с:
1.6

clone

public abstract Object clone()
Создает новый объект того же класса, что и этот объект.
Переопределяет:
clone в классе Object
Возвращает:
клона этого экземпляра.
Выбрасывает:
OutOfMemoryError — если недостаточно памяти.
Начиная с:
1.6
См. также:
  • Cloneable

trimToSize

public abstract void trimToSize()
Уменьшает емкость этого экземпляра Path2D до его текущего размера. Приложение может использовать эту операцию, чтобы минимизировать объем памяти, занимаемой путем.
Начиная с:
10

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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