Spec-Zone.ru › OpenJDK 25

Класс 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

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

getBounds2D, getPathIterator

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

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 по реализации поддержки метода Shape.contains(double, double).

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

contains

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

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

Параметры:
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 по реализации поддержки метода Shape.contains(double, double, double, double).

Этот метод может консервативно возвращать 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 по реализации поддержки метода Shape.contains(Rectangle2D).

Этот метод может консервативно возвращать 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 по реализации поддержки метода Shape.intersects(double, double, double, double).

Этот метод может консервативно возвращать 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, который независимо от любых других одновременно используемых объектов PathIterator проходит по геометрии объекта Shape.

Рекомендуется, но не гарантируется, чтобы объекты, реализующие интерфейс 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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/java/awt/geom/Path2D.html

Spec-Zone.ru

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