Compartir a través de


Función XMVector2Refract (directxmath.h)

Refracción un vector 2D incidente en un vector normal 2D.

Sintaxis

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

Parámetros

[in] Incident

Vector de incidente 2D para la refracción.

[in] Normal

Vector normal 2D para refracción del vector del incidente.

[in] RefractionIndex

Índice de refracción. Vea Notas.

Valor devuelto

Devuelve el vector de incidente refracción. Si el índice de refracción y el ángulo entre el vector de incidente y el normal son de modo que el resultado sea una reflexión interna total, la función devolverá un vector de la forma < 0,0f, 0,0f, undefined, undefined >.

Comentarios

El pseudocódigo siguiente muestra la operación de la función:

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;

El índice de refracción es la relación del índice de refracción del medio que contiene el vector de incidente al índice de refracción del medio que se introduce (donde el índice de refracción de un medio es en sí mismo la relación de la velocidad de la luz en un vacío a la velocidad de la luz en el medio).

Requisitos de la plataforma

Microsoft Visual Studio 2010 o Microsoft Visual Studio 2012 con Windows SDK para Windows 8. Compatible con aplicaciones de escritorio Win32, aplicaciones de la Tienda Windows y Windows Phone 8 aplicaciones.

Requisitos

   
Plataforma de destino Windows
Encabezado directxmath.h (incluir DirectXMath.h)

Consulte también

Funciones geométricas vectoriales 2D de la biblioteca DirectXMath

XMVector2RefractV