2008-09-20 6 views
10

공간상의 임의의 점열 순서가 주어지면 어떻게 그 사이에 부드러운 연속 보간을 만들 수 있습니까?포인트 시퀀스 보간

2D 및 3D 솔루션을 환영합니다. 임의의 입도로 점 목록을 생성하는 솔루션과 베 지어 곡선에 대한 제어점을 생성하는 솔루션도 환영합니다.

또한 점을받은 곡선의 초기 부분을 근사 할 수있는 반복적 인 솔루션을 보는 것이 좋습니다. 그러면 그 점을 그릴 수 있습니다.

답변

9

Catmull-Rom spline은 모든 제어점을 통과해야합니다. 다른 스플라인 유형에 대한 중간 제어점을 조정하려고 시도하는 것보다이 방법이 더 유용하다는 것을 알았습니다.

PDF by Christopher Twigg에는 스플라인 수학에 대한 간단한 소개가 있습니다. 가장 좋은 요약 문장은 다음과 같습니다

캐트 멀 - 롬 스플라인

는 C1 연속성, 지역 제어 및 보간을 가지고 있지만, 내에서 제어 점의 볼록 선체 거짓말을하지 않습니다.

다른 말로하면, 포인트가 오른쪽으로 날카로운 구부러짐을 나타내는 경우, 스플라인은 오른쪽으로 회전하기 전에 왼쪽으로 뱅크됩니다 (해당 문서의 예제 그림이 있음). 이 경우, 예제 행렬에서 tau 매개 변수를 사용하여 제어 할 수있는 상황에서의 견고성.

다운로드 할 수있는 DirectX 코드가있는 another example입니다.

+0

투표하십시오. 몇 년 전 비디오 게임에서 Catmull을 사용했고, 매력을 발휘했습니다. –

+0

이것은 정확히 Catmull-Rom이 설계된 것입니다 (특히, 제어점을 통과하는 모션 스플라인을 얻으려면). –

1

스플라인 명령을 보았습니까? 당신이 원하는 것을하기 위해 강요 될 수 있습니까?

+0

그럼 해결책을 찾는 흥미로운 곳입니다! 감사. 나는 그것을 조사 할 것이다. –

3

편도는 Lagrange polynominal이며 모든 주어진 데이터 점을 통과하는 다항식을 생성하는 방법입니다.

대학 1 학년 동안 나는 2D로이를 수행 할 작은 도구를 작성했으며 find it on this page이라고 할 수 있습니다.이 도구는 Lagrange 솔버입니다. Wikipedia의 페이지에도 샘플 구현이 있습니다.

작동 방식 : n 차 다항식 p(x). 여기서 n은 보유한 포인트의 수입니다. 형식은 a_n x^n + a_(n-1) x^(n-1) + ...+ a_0이며, _은 아래 첨자이고 ^은 힘입니다.

p(x_1) = y_1 
p(x_2) = y_2 
... 
p(x_n) = y_n 

넌 증강 행렬에 상기 변환 및 계수 a_0 ... a_n 풀기 : 그런 다음 연립 방정식의 집합으로,이 차례. 그러면 모든 점을 통과하는 다항식을 가질 수 있습니다. 그러면 점 사이를 보간 할 수 있습니다.

그러나 이것은 곡률 등을 조정할 방법이 없기 때문에 목적에 맞지 않을 수 있습니다. 변경할 수없는 단일 해결 방안이 붙어 있습니다.

1

불행히도 다항식 보간법은 임의의 점 집합에 대해 작동하지 않습니다. 그들은 한 차원에서 만 작동합니다. X

X 점 인해 임의의 세트, 예를 들어 I < X I + 1

각 포인트가 (경도, 위도) 쌍인 항공기 비행 경로를 사용하면 위도와 속도가 현재의 경도 인 & 인 비행기의 여행을 간단하게 모델링하는 것이 좋습니다. 비행기가 다음 웨이 포인트까지의 거리에 따라 회전 할 수있는 비율 (각속도)을 조정하면 부드러운 곡선을 얻을 수 있습니다.

결과 곡선이 수학적으로 중요하지 않으며 베 지어 제어점을 제공하지 않습니다. 그러나 알고리즘은 웨이 포인트 수에 관계없이 계산적으로 간단하며 임의의 세분화 된 점의 보간 된 목록을 생성 할 수 있습니다. 또한 전체 점 집합을 제공 할 필요가 없기 때문에 필요에 따라 집합의 끝에 경유 점을 간단히 추가 할 수 있습니다.

+0

다항식에 매우 좋은 점. – freespace

1

임의의 (그러나 최종) 점 집합을 보간 (및 제외)하기위한 알고리즘이 여러 가지 있습니다. numerical recipes을 확인해야하며 알고리즘의 C++ 구현도 포함됩니다.

0

Google "직교 회귀 분석"

최소 제곱 기술은 피트 선과 각 f (x) 사이의 수직 거리를 최소화하려고 시도하지만 직각 회귀는 수직 거리를 최소화합니다.

노이즈 데이터의 존재 부록

, 오래된 RANSAC 알고리즘도 조사 가치가있다.

0

3D 그래픽 세계에서 NURBS가 인기가 있습니다. 추가 정보는 쉽게 검색됩니다.

2

B-splines을 살펴보십시오. 베 지어 커브를 사용하는 이점은 각 부분이 로컬 지점에만 의존한다는 것입니다. 따라서 점을 이동하는 것은 멀리있는 커브 부분에는 영향을 미치지 않습니다. 멀리있는 부분은 스플라인 매개 변수에 의해 결정됩니다.

Langrange 다항식의 문제점은 점을 추가하면 곡선의 임의의 부분에 극단적 인 영향을 줄 수 있다는 것입니다. 위에서 설명한 것처럼 "지역성"이 없습니다.