FlatteningPathIterator 클래스
FlatteningPathIterator 클래스
FlatteningPathIterator 클래스는 다른 PathIterator 객체의 평탄화된(flattened) 보기를 반환해요. 다른 Shape 클래스는 이 클래스를 사용해 스스로 보간 계산을 수행하지 않고도 경로에 평탄화 동작을 제공할 수 있어요.
본문
이 반복자는 곡선 세그먼트(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의 곡선 렌더링이 내부적으로 이 원리를 사용해요.