D3DXVec3Hermite 함수(D3DX10Math.h)

참고

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

지정된 3D 벡터를 사용하여 Hermite 스플라인 보간을 수행합니다.

구문

D3DXVECTOR3* D3DXVec3Hermite(
  _Inout_       D3DXVECTOR3 *pOut,
  _In_    const D3DXVECTOR3 *pV1,
  _In_    const D3DXVECTOR3 *pT1,
  _In_    const D3DXVECTOR3 *pV2,
  _In_    const D3DXVECTOR3 *pT2,
  _In_          FLOAT       s
);

매개 변수

pOut [in, out]

형식: D3DXVECTOR3*

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

pV1 [in]

형식: const D3DXVECTOR3*

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

pT1 [in]

형식: const D3DXVECTOR3*

탄젠트 벡터인 원본 D3DXVECTOR3 구조체에 대한 포인터입니다.

pV2 [in]

형식: const D3DXVECTOR3*

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

pT2 [in]

형식: const D3DXVECTOR3*

탄젠트 벡터인 원본 D3DXVECTOR3 구조체에 대한 포인터입니다.

s [in]

형식: FLOAT

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

반환 값

형식: D3DXVECTOR3*

Hermite 스플라인 보간의 결과인 D3DXVECTOR3 구조체에 대한 포인터입니다.

설명

D3DXVec3Hermite 함수는 Hermite 스플라인 보간을 사용하여 (positionA, tangentA)에서 (positionB, tangentB)로 보간합니다.

스플라인 보간은 편의성, 용이성 스플라인의 일반화입니다. 램프는 다음 속성을 가진 Q의 함수입니다.

Q(s) = As + Bs² + Cs + D(따라서 Q's) = 3As² + 2B + C)

a) Q(0) = v1, 그래서 Q'(0) = t1

b) Q(1) = v2, 그래서 Q'(1) = t2

v1은 pV1의 콘텐츠이고, pV2의 내용에서 v2이고, t1은 pT1의 내용이고, t2는 pT2의 내용입니다.

이러한 속성은 A, B, C, D에 대해 해결하는 데 사용됩니다.

D = v1  (from a)
C = t1  (from a)
3A + 2B = t2 - t1 (substituting for C)
A + B = v2 - v1 - t1 (substituting for C and D)

A, B, C 및 D에 대한 솔루션을 연결하여 Q를 생성합니다.

A = 2v1 - 2v2 + t2 + t1
B = 3v2 - 3v1 - 2t1 - t2
C = t1
D = v1

다음과 같은 결과가 산출됩니다.

Q(s) = (2v1 - 2v2 + t2 + t1)s 켜기 + (3v2 - 3v1 - 2t1 - t2)s² + t1s + v1

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

Q(s) = (2s² - 3s² + 1)v1 + (-2s\ + 3s²)v2 + (s\ - 2s² + s)t1 + (s\ - s²)t2

Hermite 스플라인은 곡선이 모든 제어점을 통해 실행되기 때문에 애니메이션을 제어하는 데 유용합니다. 또한 위치와 탄젠트 는 각 세그먼트의 끝에 명시적으로 지정되므로 시작 위치와 탄젠트를 마지막 세그먼트의 끝 값과 일치시키는 한 C2 연속 곡선을 쉽게 만들 수 있습니다.

이 함수의 반환 값은 pOut 매개 변수에 반환된 값과 동일합니다. 이러한 방식으로 D3DXVec3Hermite 함수를 다른 함수의 매개 변수로 사용할 수 있습니다.

요구 사항

요구 사항
헤더
D3DX10Math.h

추가 정보

수학 함수