Spec-Zone.ru › OpenJDK 25

Интерфейс PathIterator

Все известные реализующие классы:
FlatteningPathIterator
public interface PathIterator
Интерфейс PathIterator предоставляет механизм, позволяющий объектам, реализующим интерфейс Shape, возвращать геометрию своей границы, предоставляя вызывающему коду возможность получать путь этой границы по одному сегменту за раз. Этот интерфейс позволяет таким объектам получать путь своей границы по одному сегменту за раз с помощью кривых Безье от 1-го до 3-го порядка — прямых линий, а также квадратичных и кубических сплайнов Безье.

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

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

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

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

Модификатор и тип Поле Описание
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(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

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

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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по 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/PathIterator.html

Spec-Zone.ru

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