2014-12-19 7 views
2

사용자가 곡선을 그릴 수있는 3D 그래픽 응용 프로그램을 개발 중입니다. 사용자가 그린 곡선을 기록하고 기록 된 점 집합에서 부드러운 nurb를 만들고 싶습니다. openNurbs 라이브러리를 사용했지만 라이브러리를 사용하여 피팅을 수행 할 수있는 방법을 찾지 못했습니다. Nurb에 포인트 집합을 맞추려면 어떻게해야합니까?포인트 목록에서 부드러운 nurb 만들기

답변

1

우선, 당신은 nurbs가 필요하다고 생각하지 않습니다. B- 스플라인 곡선을 데이터 포인트에 맞추는 것이 충분해야합니다.

소수 점이있는 경우 B- 스플라인 곡선이이 데이터 점을 통과해야합니다. 이 경우 스플라인 보간 알고리즘을 찾고 있습니다. 이 경우, Catmull Rom 스플라인 또는 Overhauser 스플라인을 사용하여 데이터 포인트를 보간 할 수 있습니다. 둘 다 C1 입방체 스플라인을 만들고 둘 다 일차 방정식 집합을 풀지 않아도 구현하기 쉽습니다.

수백 개의 점이 있다면 B- 스플라인 곡선 만 데이터 점에 가깝게 배치해야합니다. 그런 다음 찾고있는 알고리즘은 최소 사각 피팅입니다. 이 분야에서는 많은 기사 (예 : link1)를 온라인에서 찾을 수 있습니다. B- 스플라인 곡선으로 최소 제곱 피팅을 수행하는 일반적인 알고리즘은 다음 단계를 수행합니다.

1) 데이터 요소에 대한 매개 변수화를 선택합니다. 코드 길이 매개 변수화는 일반적으로 최소 제곱 피팅에 적합합니다.
2) B- 스플라인의 차수를 선택하십시오. 일반적으로 차수 3, 즉 3 차 B- 스플라인을 사용합니다.
3) B- 스플라인의 제어점 수를 결정하십시오.
4) 처음 3 단계의 정보를 기반으로 매듭 점을 결정하십시오.
5) 선형 방정식을 풀어서 B- 스플라인의 제어점을 찾습니다.