다음을 통해 공유


XMVector4Refract 함수(directxmath.h)

4D 일반 벡터에서 인시던트 4D 벡터를 굴절합니다.

구문

XMVECTOR XM_CALLCONV XMVector4Refract(
  [in] FXMVECTOR Incident,
  [in] FXMVECTOR Normal,
  [in] float     RefractionIndex
) noexcept;

매개 변수

[in] Incident

굴절할 4D 인시던트 벡터입니다.

[in] Normal

인시던트 벡터를 통해 굴절하는 4D 일반 벡터입니다.

[in] RefractionIndex

굴절의 인덱스입니다. 설명을 참조하세요.

반환 값

굴절된 인시던트 벡터를 반환합니다. 인시던트 벡터와 일반 사이의 굴절 인덱스와 각도가 전체 내부 리플렉션이 되도록 하는 경우 함수는 0.0f, 0.0f, 0.0f, 0.0f >형식 < 의 벡터를 반환합니다.

설명

다음 의사 코드는 함수의 작업을 보여 줍니다.

XMVECTOR Result;

float t = dot(Incident, Normal);
float r = 1.0f - RefractionIndex * RefractionIndex * (1.0f - t * t);

if (r < 0.0f) // Total internal reflection
{
	Result.x = 0.0f;
	Result.y = 0.0f;
	Result.z = 0.0f;
	Result.w = 0.0f;
}
else
{
	float s = RefractionIndex * t + sqrt(r);
	Result.x = RefractionIndex * Incident.x - s * Normal.x;
	Result.y = RefractionIndex * Incident.y - s * Normal.y;
	Result.z = RefractionIndex * Incident.z - s * Normal.z;
	Result.w = RefractionIndex * Incident.w - s * Normal.w;
}

return Result;

굴절의 인덱스는 입력되는 매체의 굴절 인덱스로 인시던트 벡터를 포함하는 매체의 굴절 인덱스의 비율입니다(여기서 매체의 굴절 인덱스는 그 자체로 진공 상태에서 빛의 속도와 매체의 광속도의 비율).

플랫폼 요구 사항

Windows 8 Windows SDK를 사용하는 Microsoft Visual Studio 2010 또는 Microsoft Visual Studio 2012. Win32 데스크톱 앱, Windows 스토어 앱 및 Windows Phone 8개 앱에서 지원됩니다.

요구 사항

요구 사항
대상 플랫폼 Windows
헤더 directxmath.h(DirectXMath.h 포함)

추가 정보

DirectXMath 라이브러리 4D 벡터 기하학적 함수

XMVector4RefractV