Интерфейс PathIterator
- Все известные реализующие классы:
FlatteningPathIterator
public interface PathIterator
PathIterator предоставляет механизм, позволяющий объектам, реализующим интерфейс Shape, возвращать геометрию своей границы, предоставляя вызывающему коду возможность получать путь этой границы по одному сегменту за раз. Этот интерфейс позволяет таким объектам получать путь своей границы по одному сегменту за раз с помощью кривых Безье от 1-го до 3-го порядка — прямых линий, а также квадратичных и кубических сплайнов Безье. Несколько подпутей можно представить, используя сегмент "MOVETO" для создания разрыва в геометрии и перехода от конца одного подпути к началу следующего.
Каждый подпуть можно закрыть вручную, завершив последний сегмент подпути в тех же координатах, что и начальный сегмент "MOVETO" этого подпути, либо добавив сегмент "CLOSE", который добавляет отрезок от последней точки к первой. Обратите внимание: ручное закрытие контура вместо использования сегмента "CLOSE" может привести к применению разных стилей оформления линий в конечных точках подпути. Например, объект BasicStroke использует оформление соединения линий ("JOIN") для соединения первой и последней точек при обнаружении сегмента "CLOSE", тогда как простое завершение пути в тех же координатах, что и начальная точка, приводит к использованию оформления концов линий ("CAP").
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final int |
SEG_CLOSE |
Константа типа сегмента, указывающая, что предыдущий подпуть следует закрыть, добавив отрезок обратно к точке, соответствующей последнему SEG_MOVETO. |
static final int |
SEG_CUBICTO |
Константа типа сегмента для набора из 3 точек, задающих кубическую параметрическую кривую, проводимую от последней указанной точки. |
static final int |
SEG_LINETO |
Константа типа сегмента для точки, задающей конечную точку линии, проводимой от последней указанной точки. |
static final int |
SEG_MOVETO |
Константа типа сегмента для точки, задающей начальное положение нового подпути. |
static final int |
SEG_QUADTO |
Константа типа сегмента для пары точек, задающих квадратичную параметрическую кривую, проводимую от последней указанной точки. |
static final int |
WIND_EVEN_ODD |
Константа правила обхода для задания правила чётности при определении внутренней области пути. |
static final int |
WIND_NON_ZERO |
Константа правила обхода для задания правила ненулевого числа при определении внутренней области пути. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
int |
currentSegment |
Возвращает координаты и тип текущего сегмента пути в итерации. |
int |
currentSegment |
Возвращает координаты и тип текущего сегмента пути в итерации. |
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
(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
- См. также:
Подробное описание методов
getWindingRule
int getWindingRule()
- Возвращает:
- правило обхода.
- См. также:
isDone
boolean isDone()
- Возвращает:
-
true, если все сегменты прочитаны; в противном случае —false.
next
void next()
currentSegment
int currentSegment(float[] coords)
- Параметры:
-
coords— массив, содержащий данные, возвращаемые этим методом - Возвращает:
- тип текущего сегмента пути.
- См. также:
currentSegment
int currentSegment(double[] coords)
- Параметры:
-
coords— массив, содержащий данные, возвращаемые этим методом - Возвращает:
- тип текущего сегмента пути.
- См. также:
© 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/PathIterator.html