다음을 통해 공유


XMVector2Refract 함수(directxmath.h)

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

구문

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

매개 변수

[in] Incident

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

[in] Normal

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

[in] RefractionIndex

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

반환 값

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

설명

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

XMVECTOR Result;

float t = (Incident.x * Normal.x + Incident.y * Normal.y); // 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;
}
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 = undefined;
Result.w = undefined;

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 라이브러리 2D 벡터 기하학적 함수

XMVector2RefractV