D3DXVec2CatmullRom 함수(D3DX10Math.h)

참고

D3DX10 유틸리티 라이브러리는 더 이상 사용되지 않습니다. 대신 DirectXMath 를 사용하는 것이 좋습니다.

지정된 2D 벡터를 사용하여 Catmull-Rom 보간을 수행합니다.

구문

D3DXVECTOR2* D3DXVec2CatmullRom(
  _Inout_       D3DXVECTOR2 *pOut,
  _In_    const D3DXVECTOR2 *pV0,
  _In_    const D3DXVECTOR2 *pV1,
  _In_    const D3DXVECTOR2 *pV2,
  _In_    const D3DXVECTOR2 *pV3,
  _In_          FLOAT       s
);

매개 변수

pOut [in, out]

형식: D3DXVECTOR2*

작업의 결과인 D3DXVECTOR2 에 대한 포인터입니다.

pV0 [in]

형식: const D3DXVECTOR2*

위치 벡터인 원본 D3DXVECTOR2 구조체에 대한 포인터입니다.

pV1 [in]

형식: const D3DXVECTOR2*

위치 벡터인 원본 D3DXVECTOR2 구조체에 대한 포인터입니다.

pV2 [in]

형식: const D3DXVECTOR2*

위치 벡터인 원본 D3DXVECTOR2 구조체에 대한 포인터입니다.

pV3 [in]

형식: const D3DXVECTOR2*

위치 벡터인 원본 D3DXVECTOR2 구조체에 대한 포인터입니다.

s [in]

형식: FLOAT

가중치 계수입니다. 설명 부분을 참조하세요.

반환 값

형식: D3DXVECTOR2*

Catmull-Rom 보간의 결과인 D3DXVECTOR2 구조체에 대한 포인터입니다.

설명

4포인트(p1, p2, p3, p4)가 지정된 경우 다음과 같은 함수 Q를 찾습니다.

Q(s) is a cubic function.
Q(s) interpolates between p2 and p3 as s ranges from 0 to 1.
Q(s) is parallel to the line joining p1 to p3 when s is 0.
Q(s) is parallel to the line joining p2 to p4 when s is 1.

Catmull-Rom 스플라인은 다음을 설정하여 Hermite 스플라인에서 파생될 수 있습니다.

v1 = p2
v2 = p3
t1 = (p3 - p1) / 2
t2 = (p4 - p2) / 2

여기서

v1은 pV0의 내용입니다.

v2는 pV1의 내용입니다.

p3은 pV2의 내용입니다.

p4는 pV3의 내용입니다.

Hermite 스플라인 수식 사용:

Q(s) = (2s3 - 3s2 + 1)v1 + (-2s3 + 3s2)v2 + (s3 - 2s2 + s)t1 + (s3 - s2)t2

v1, v2, t1, t2에 대한 대체는 다음을 생성합니다.

Q(s) = (2s3 - 3s2 + 1)p2 + (-2s3 + 3s2)p3 + (s3 - 2s2 + s)(p3 - p1) / 2 + (s3 - s2)(p4 - p2)/2

다음과 같이 다시 정렬할 수 있습니다.

Q(s) = [(-s3 + 2s2 - s)p1 + (3s3 - 5s2 + 2)p2 + (-3s3 + 4s2 + s)p3 + (s3 - s2)p4] / 2

요구 사항

요구 사항
헤더
D3DX10Math.h
라이브러리
D3DX10.lib

추가 정보

수학 함수