Função XMVector4Refract (directxmath.h)

Refrata um vetor 4D de incidente em um vetor normal 4D.

Sintaxe

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

Parâmetros

[in] Incident

Vetor de incidente 4D a ser refratado.

[in] Normal

Vetor normal 4D para refratá-lo.

[in] RefractionIndex

Índice de refração. Consulte Observações.

Retornar valor

Retorna o vetor de incidente refratado. Se o índice de refração e o ângulo entre o vetor de incidente e o normal forem de modo que o resultado seja uma reflexão interna total, a função retornará um vetor do formulário < 0,0f, 0,0f, 0,0f, 0,0f >.

Comentários

O pseudocódigo a seguir demonstra a operação da função:

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;

O índice de refração é a proporção do índice de refração do meio que contém o vetor de incidente para o índice de refração da média que está sendo inserida (em que o índice de refração de um meio é, em si, a taxa da velocidade da luz em um vácuo para a velocidade da luz no meio).

Requisitos da plataforma

Microsoft Visual Studio 2010 ou Microsoft Visual Studio 2012 com o SDK do Windows para Windows 8. Com suporte para aplicativos da área de trabalho Win32, aplicativos da Windows Store e aplicativos Windows Phone 8.

Requisitos

Requisito Valor
Plataforma de Destino Windows
Cabeçalho directxmath.h (inclua DirectXMath.h)

Confira também

Funções geométricas de vetor 4D da Biblioteca DirectXMath

XMVector4RefractV