Spec-Zone.ru › OpenJDK 17

Интерфейс PathIterator

Все известные реализующие классы:
FlatteningPathIterator
public interface PathIterator
Интерфейс PathIterator предоставляет механизм для объектов, реализующих интерфейс Shape, для возвращения геометрии их границ, позволяя вызывающей стороне получать траекторию этой границы по сегментам. Данный интерфейс позволяет этим объектам получать траекторию своей границы по сегментам, используя кривые Безье 1-го, 2-го и 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. Необходимо передать массив с плавающей точкой длиной 6, который может быть использован для хранения координат точки(точек). Каждая точка хранится как пара координат x, y с плавающей точкой. Типы SEG_MOVETO и SEG_LINETO возвращают одну точку, SEG_QUADTO возвращает две точки, SEG_CUBICTO возвращает три точки, а 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. Необходимо передать массив с двойной точностью длиной 6, который может быть использован для хранения координат точки(точек). Каждая точка хранится как пара координат x, y с двойной точностью. Типы SEG_MOVETO и SEG_LINETO возвращают одну точку, SEG_QUADTO возвращает две точки, SEG_CUBICTO возвращает три точки, а SEG_CLOSE не возвращает никаких точек.
Параметры:
coords - массив, который хранит данные, возвращаемые этим методом
Возвращает:
тип сегмента пути текущего сегмента пути.
См. также:
  • SEG_MOVETO
  • SEG_LINETO
  • SEG_QUADTO
  • SEG_CUBICTO
  • SEG_CLOSE

© 1993, 2021, 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/17/docs/api/java.desktop/java/awt/geom/PathIterator.html

Spec-Zone.ru

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