FlatteningPathIterator 클래스

FlatteningPathIterator 클래스

FlatteningPathIterator 클래스는 다른 PathIterator 객체의 평탄화된(flattened) 보기를 반환해요. 다른 Shape 클래스는 이 클래스를 사용해 스스로 보간 계산을 수행하지 않고도 경로에 평탄화 동작을 제공할 수 있어요.

출처: Java API Reference

본문

이 반복자는 곡선 세그먼트(2차·3차 베지어)를 일정한 평탄도(flatness)로 직선 세그먼트로 대체해요. 즉 곡선을 많은 작은 직선으로 근사해서 렌더링하거나 처리하기 쉽게 만들어요.

public class FlatteningPathIterator
extends Object
implements PathIterator

생성자

  • FlatteningPathIterator(PathIterator src, double flatness) — 경로를 반복하면서 평탄화하는 새 객체를 만들어요.
  • FlatteningPathIterator(PathIterator src, double flatness, int limit) — 재귀 한계를 지정해 만들어요. 소스 반복자에서 읽은 어떤 곡선도 10단계 이상 세분화하지 않아서, 곡선당 최대 1024개 직선 세그먼트를 산출해요.

PathIterator 구현 메서드

  • currentSegment(double[] coords) / currentSegment(float[] coords) — 반복에서 현재 경로 세그먼트의 좌표와 타입을 반환해요.
  • next() — 기본 순회 방향을 따라 경로의 다음 세그먼트로 이동해요.
  • isDone() — 반복이 완료됐는지 확인해요.
  • getWindingRule() — 경로 내부를 결정하는 윈딩 규칙을 반환해요.
  • getFlatness() — 이 반복자의 평탄도를 반환해요.
  • getRecursionLimit() — 이 반복자의 재귀 한계를 반환해요.

평탄도(flatness)

평탄도는 곡선과 근사 다각형 사이의 최대 허용 편차를 나타내요. 평탄도가 작을수록 곡선에 더 가까워지지만 세그먼트가 많아져요. Graphics의 곡선 렌더링이 내부적으로 이 원리를 사용해요.

더 알아보기