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 포함) |