2012-11-10 2 views
0

지도 프로그램을 만들고 있는데 윤곽 추적으로 대략적인 윤곽을 얻었으므로 이제이 윤곽을 베 지어로 부드럽게하고 싶습니다. 끝점을 부드럽게 만드는 방법을 모르겠습니다. 알다시피, 나는 시작과 끝을 섞어서 같은 접선을 가져야한다. 몇 가지 알고리즘을 발견했으며 그 중 아무 것도이 문제를 처리하지 못했습니다. 이것이 차별화로 해결 될 수 있음을 알고 있지만 나는 그 문제가 아닙니다. 그래서 나는 어떤 사람이 나에게 명백한 코드 시위의 중요한 부분을 줄 수 있기를 바란다.C를 사용하여 베 지어로 거친 다각형을 부드럽게하는 알고리즘 C

답변

0

응용 프로그램을 이해하지 못 하겠지만 두 개의 베 지어 곡선을 일치시키는 방법에 대해 대답하겠습니다 : 제어점 (A1, A2, .., AN-1, AN)과 B1, B2, .., BN-1, BN)과 A의 끝을 B의 시작과 일치 시키려면 먼저 AN = B1 (예 : (AN + B1)/2).

접선 연속 AN-1 (AN/B1)으로 만들려면 B2가 선상에 있어야합니다. 선의 방향은 A의 마지막 세그먼트와 B의 첫 번째 세그먼트의 방향을 평균하여 구할 수 있습니다. d = ((AN-AN-1) + (B2-AN))/2.

2D에서 : 각 행 (AN-2, AN-1) 및 (B2, B3)과 행 (AN, d)의 교차점을 각각 찾아 냄으로써 AN-1과 B2를 재배치합니다. 3D의 경우 선을 (B2, B3)로 구성된 평면과 교차해야 할 수 있으며 (B2-B3)과 d의 외적을 계산하여 찾은 세 번째 점이 필요할 수 있습니다.