Función XMVector4Refract (directxmath.h)
Refracta un vector 4D incidente a través de un vector normal 4D.
Sintaxis
XMVECTOR XM_CALLCONV XMVector4Refract(
[in] FXMVECTOR Incident,
[in] FXMVECTOR Normal,
[in] float RefractionIndex
) noexcept;
Parámetros
[in] Incident
Vector de incidente 4D que se va a refractar.
[in] Normal
Vector normal 4D para refractar el vector de incidente a través.
[in] RefractionIndex
Índice de refracción. Vea Notas.
Valor devuelto
Devuelve el vector de incidente refractado. Si el índice de refracción y el ángulo entre el vector de incidente y la 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, 0,0f, 0,0f, 0,0f >.
Comentarios
El pseudocódigo siguiente muestra la operación de la función:
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;
El índice de refracción es la proporció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 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
Requisito | Value |
---|---|
Plataforma de destino | Windows |
Encabezado | directxmath.h (incluya DirectXMath.h) |
Consulte también
Funciones geométricas vectoriales 4D de la biblioteca DirectXMath