2010-05-06 5 views
1

트루 타입 파일에서 글리프를 덤프했습니다. 그래서 그것들을 가지고 놀 수 있습니다. 그들은 2 차 베 지어 곡선과 선으로 구성된 윤곽을가집니다. 그런 모양을위한 삼각형을 출력하여 사용자를 위해 시각화 할 수 있습니다.컨투어 스플라인을 간단한 다각형으로 변환 한 변형 모양

전통적으로 libfreetype을 사용하거나 이런 종류의 윤곽을 스캔 래스터화할 수 있습니다. 그러나 나는 글꼴에서 돌출 된 3D 메쉬를 생성하고 그것들과 함께 다른 왜곡을 만들고 싶습니다.

그래서 2 차 베 지어 곡선과 선으로 구성된 모양을 폴리곤 화하는 방법은 무엇입니까? 모양을 함께 형성하는 많은 등고선이 있습니다. 일부 윤곽선은 부가 적이며 다른 요소는 빼기입니다. 윤곽선이 절대로 열리지 않습니다. 그들은 루프를 형성합니다.

(실제로는 ttf 글리프에서 윤곽 꼭지점 만 얻습니다.이 꼭지점은 곡선의 일부인지 아닌지를 정의합니다. 이들을 베 지어 곡선 및 선으로 분해하기는 쉽지만 데이터가 이러한 방식으로 표시된다는 것을 알고 있습니다. 등고선을 삼각형으로 폴리곤 화하는 데 도움이 될 수 있습니다.)

+0

베지에를 삼각형으로 매핑 하시겠습니까? 그것은 상상하기 어렵습니다. –

+0

모두 근사치입니다. 알고리즘을 적용하기 전에 베 지어 세그먼트 (bezier segment)를 라인으로 변환하는 것으로 끝날 것입니다. 비록 내가 지금 일하고있는 것보다 더 좋은 알고리즘을 가지고 있기를 희망합니다. – Cheery

답변

0

이것은 간단합니다. 커브에 부울 연산을 구현 한 다음 단일 커브로 남아있는 커브 쌍을 조인하여 진행해야합니다.

먼저 커브를 평가하여 폴리 라인으로 변환해야합니다.

그런 다음 두 윤곽선이 교차하는 모든 위치에 꼭지점이 있는지 확인해야합니다 (이 부분은 숫자 오류로 인해 실제로 시도 할 수 있으며 the Bentley-Ottmann algorithm을 사용할 수 있음).

마지막으로, 곡선을 탐색하여 올바른 순서로 연결하여 부울 연산을 수행하여 weakly simple polygons을 생성하면됩니다.

이러한 다각형은 예를 들어. ear clipping algorithm (느리지 만 구현하기가 쉽지 않음).

희망이 있습니다 ...