Интерфейс PathIterator

Все известные реализующие классы:
FlatteningPathIterator
public interface PathIterator

Интерфейс PathIterator предоставляет механизм для объектов, реализующих интерфейс Shape, чтобы возвращать геометрию своей границы, позволяя вызывающему объекту получать путь этой границы по сегментам. Данный интерфейс позволяет этим объектам получать путь своей границы по сегментам, используя кривые Безье 1-го, 2-го и 3-го порядка, которые представляют собой прямые и квадратичные или кубические сплайны Безье.

Несколько подпутей могут быть выражены с помощью сегмента "MOVETO", чтобы создать разрыв в геометрии, чтобы перейти от конца одного подпути к началу следующего.

Каждый подпуть может быть закрыт вручную, завершив последний сегмент подпути в тех же координатах, что и начальный сегмент "MOVETO" для данного подпути, или используя сегмент "CLOSE", чтобы добавить линию от последней точки обратно к первой. Обратите внимание, что закрытие контура вручную, в отличие от использования сегмента "CLOSE" для закрытия пути, может привести к использованию разных декораций стиля линии в конечных точках подпути. Например, объект BasicStroke использует декорацию соединения "JOIN" для соединения первой и последней точек, если встречается сегмент "CLOSE", тогда как простое завершение пути в тех же координатах, что и начальные координаты, приводит к использованию декораций "CAP" для концов.

См. также:
Shape, BasicStroke

Поля

Модификатор и тип Поле Описание
static int SEG_CLOSE

Постоянная типа сегмента, указывающая, что предыдущий подпуть должен быть закрыт добавлением отрезка прямой обратно к точке, соответствующей последнему SEG_MOVETO.

static int SEG_CUBICTO

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

static int SEG_LINETO

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

static int SEG_MOVETO

Постоянная типа сегмента для точки, определяющей начальную позицию нового подпути.

static int SEG_QUADTO

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

static int WIND_EVEN_ODD

Постоянная правила обхода для указания правила «чёт-нечёт» для определения внутренней части пути.

static int WIND_NON_ZERO

Постоянная правила обхода для указания правила «не нуль» для определения внутренней части пути.

Методы

Модификатор и тип Метод Описание
int currentSegment​(double[] coords)

Возвращает координаты и тип текущего сегмента пути в итерации.

int currentSegment​(float[] coords)

Возвращает координаты и тип текущего сегмента пути в итерации.

int getWindingRule()

Возвращает правило обхода для определения внутренней части пути.

boolean isDone()

Проверяет, завершена ли итерация.

void next()

Перемещает итератор к следующему сегменту пути вперёд по основному направлению обхода, пока есть дополнительные точки в этом направлении.

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

WIND_EVEN_ODD

@Native
static final int WIND_EVEN_ODD

Постоянная правила обхода для указания правила «чёт-нечёт» для определения внутренней части пути. Правило «чёт-нечёт» указывает, что точка находится внутри пути, если луч, проведенный в любом направлении от этой точки до бесконечности, пересекается сегментами пути нечётное число раз.

См. также:
Постоянные значения полей

WIND_NON_ZERO

@Native
static final int WIND_NON_ZERO

Постоянная правила обхода для указания правила «не нуль» для определения внутренней части пути. Правило «не нуль» указывает, что точка находится внутри пути, если луч, проведенный в любом направлении от этой точки до бесконечности, пересекается сегментами пути разное число раз по часовой стрелке и против часовой стрелки.

См. также:
Постоянные значения полей

SEG_MOVETO

@Native
static final int SEG_MOVETO

Постоянная типа сегмента для точки, определяющей начальную позицию нового подпути.

См. также:
Постоянные значения полей

SEG_LINETO

@Native
static final int SEG_LINETO

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

См. также:
Постоянные значения полей

SEG_QUADTO

@Native
static final int SEG_QUADTO

Постоянная типа сегмента для пары точек, определяющих квадратическую параметрическую кривую, которая должна быть нарисована от последней указанной точки. Кривая интерполируется путём решения параметрического уравнения управления в интервале (t=[0..1]) с использованием последней указанной (текущей) точки (CP), первой контрольной точки (P1) и конечной интерполированной контрольной точки (P2). Параметрическое уравнение управления для этой кривой:

P(t) = B(2,0)*CP + B(2,1)*P1 + B(2,2)*P2
          0 <= t <= 1

        B(n,m) = mth coefficient of nth degree Bernstein polynomial
               = C(n,m) * t^(m) * (1 - t)^(n-m)
        C(n,m) = Combinations of n things, taken m at a time
               = n! / (m! * (n-m)!)

См. также:
Постоянные значения полей

SEG_CUBICTO

@Native
static final int SEG_CUBICTO

Постоянная типа сегмента для набора из 3 точек, определяющих кубическую параметрическую кривую, которая должна быть нарисована от последней указанной точки. Кривая интерполируется путём решения параметрического уравнения управления в интервале (t=[0..1]) с использованием последней указанной (текущей) точки (CP), первой контрольной точки (P1), второй контрольной точки (P2) и конечной интерполированной контрольной точки (P3). Параметрическое уравнение управления для этой кривой:

P(t) = B(3,0)*CP + B(3,1)*P1 + B(3,2)*P2 + B(3,3)*P3
          0 <= t <= 1

        B(n,m) = mth coefficient of nth degree Bernstein polynomial
               = C(n,m) * t^(m) * (1 - t)^(n-m)
        C(n,m) = Combinations of n things, taken m at a time
               = n! / (m! * (n-m)!)
Эта форма кривой обычно известна как кривая Безье.

См. также:
Постоянные значения полей

SEG_CLOSE

@Native
static final int SEG_CLOSE

Постоянная типа сегмента, указывающая, что предыдущий подпуть должен быть закрыт добавлением отрезка прямой обратно к точке, соответствующей последнему SEG_MOVETO.

См. также:
Постоянные значения полей

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

getWindingRule

int getWindingRule()

Возвращает правило обхода для определения внутренней части пути.

Возвращает:
правило обхода.
См. также:
WIND_EVEN_ODD, WIND_NON_ZERO

isDone

boolean isDone()

Проверяет, завершена ли итерация.

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

next

void next()

Перемещает итератор к следующему сегменту пути вперёд по основному направлению обхода, пока есть дополнительные точки в этом направлении.

currentSegment(float[])

int currentSegment(float[] coords)

Возвращает координаты и тип текущего сегмента пути в итерации. Возвращаемое значение — тип сегмента пути: SEG_MOVETO, SEG_LINETO, SEG_QUADTO, SEG_CUBICTO или SEG_CLOSE. В качестве параметра должен быть передан массив float длиной 6, который может быть использован для хранения координат точек. Каждая точка хранится как пара координат x, y типа float. Типы SEG_MOVETO и SEG_LINETO возвращают одну точку, SEG_QUADTO возвращает две точки, SEG_CUBICTO возвращает 3 точки, а SEG_CLOSE не возвращает никаких точек.

Параметры:
coords — массив, который хранит данные, возвращённые этим методом
Возвращает:
тип сегмента пути текущего сегмента пути.
См. также:
SEG_MOVETO, SEG_LINETO, SEG_QUADTO, SEG_CUBICTO, SEG_CLOSE

currentSegment(double[])

int currentSegment(double[] coords)

Возвращает координаты и тип текущего сегмента пути в итерации. Возвращаемое значение — тип сегмента пути: SEG_MOVETO, SEG_LINETO, SEG_QUADTO, SEG_CUBICTO или SEG_CLOSE. В качестве параметра должен быть передан массив double длиной 6, который может быть использован для хранения координат точек. Каждая точка хранится как пара координат x, y типа double. Типы SEG_MOVETO и SEG_LINETO возвращают одну точку, SEG_QUADTO возвращает две точки, SEG_CUBICTO возвращает 3 точки, а SEG_CLOSE не возвращает никаких точек.

Параметры:
coords — массив, который хранит данные, возвращённые этим методом
Возвращает:
тип сегмента пути текущего сегмента пути.
См. также:
SEG_MOVETO, SEG_LINETO, SEG_QUADTO, SEG_CUBICTO, SEG_CLOSE

© 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/PathIterator.html

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