문제

에서 이 지역, Catmull-Rom Splines에 대한 가장 자세한 정보가있는 것으로 보이며 스플라인을 만드는 데 4 점이 필요합니다. 그러나 점 P0과 P3이 P1과 P2 사이의 값에 어떤 영향을 미치는지는 언급되지 않습니다.

내가 가진 또 다른 질문은 어떻게 연속 스플라인을 만들겠습니까? P4 = P2를 만들어 P1, P2를 P4, P5로 연속적으로 정의하는 것만 큼 쉬울까요? ).

보다 일반적인 질문은 Catmull-Rom 스플라인에서 접선을 어떻게 계산 하는가? 스플라인에서 2 점 (0.01, 0.011)에서 2 점을 가져 와서 피타고라스를 기준으로 탄젠트를 얻는 것이 필요합니까?

도움이 되었습니까?

해결책

식 2를 살펴보십시오 - 제어점이 선에 어떤 영향을 미치는지 설명합니다. 포인트를 볼 수 있습니다 P0 그리고 P3 곡선을 따라 지점을 플로팅하기위한 방정식으로 이동하십시오. P1 에게 P2. 당신은 또한 방정식이 제공한다는 것을 알 수 있습니다 P1 언제 t == 0 그리고 P2 언제 t == 1.

이 예제 방정식은 일반화 될 수 있습니다. 포인트가있는 경우 R0, R1, … RN 그런 다음 사이의 포인트를 그릴 수 있습니다 RK 그리고 RK + 1 식 2와 함께 사용하여 P0 = RK - 1, P1 = RK, P2 = RK + 1 그리고 P3 = RK + 2.

당신은 음모 할 수 없습니다 R0 에게 R1 또는 RN - 1 에게 RN 추가 제어점을 추가하지 않는 한 R - 1 그리고 RN + 1. 일반적인 아이디어는 시퀀스의 머리와 꼬리에 추가하려는 포인트를 선택하여 스플라인을 계산하기 위해 모든 매개 변수를 제공 할 수 있다는 것입니다.

제어점 중 하나를 떨어 뜨려 두 개의 스플라인을 함께 결합 할 수 있습니다. 당신이 가지고 있다고 말하십시오 R0, R1, …, RN 그리고 S0, S1, … SM 그들은 합류 할 수 있습니다 R0, R1, …, RN - 1, S1, S2, … SM.

언제라도 탄젠트를 계산하려면 식 2의 미분을 취하십시오.

다른 팁

그만큼 위키 백과 기사 조금 더 깊이 들어갑니다. 스플라인의 일반적인 형태는 관련 탄젠트 벡터와 입력 2 제어점으로 취합니다. 그런 다음 공통 제어 지점의 탄젠트 벡터가 동일하여 C1 연속성을 유지하는 경우 추가 스플라인 세그먼트를 추가 할 수 있습니다.

특정 Catmull-ROM 형태에서, 중간 지점의 접선 벡터는 인접한 제어점의 위치에 의해 결정된다. 따라서, 여러 지점을 통해 C1 연속 스플라인을 생성하기 위해서는 첫 번째 및 마지막 제어 지점에서 일련의 제어점과 탄젠트 벡터를 공급하는 것으로 충분합니다. 표준 동작은 P0의 탄젠트 벡터에 P1 -P0을 사용하고 PN에서 PN -1을 사용하는 것입니다.

Wikipedia 기사에 따르면 제어점 PN에서 탄젠트를 계산하려면이 방정식을 사용합니다.

T(n) = (P(n - 1) + P(n + 1)) / 2

이것은 또한 첫 번째 질문에 답변합니다. 4 개의 제어점 세트 인 P1, P2, P3, P4의 경우 P2와 P3 사이의 값을 보간하는 데는 정보가 모두 4 개의 제어점을 필요로합니다. P2 및 P3 자체는 보간 세그먼트가 통과 해야하는 종점을 정의합니다. P1 및 P3은 접선 벡터를 결정합니다. 보간 세그먼트는 P2 지점에 가질 것입니다. P4 및 P2는 세그먼트가 지점 P3에 가질 접선 벡터를 결정합니다. 제어 지점 P2 및 P3의 탄젠트 벡터는 이들 사이의 보간 세그먼트의 형상에 영향을 미칩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top