Funzione XMVector4Refract (directxmath.h)
Fa riferimento a un vettore 4D 4D imprevisto in un vettore normale 4D.
Sintassi
XMVECTOR XM_CALLCONV XMVector4Refract(
[in] FXMVECTOR Incident,
[in] FXMVECTOR Normal,
[in] float RefractionIndex
) noexcept;
Parametri
[in] Incident
Vettore di eventi imprevisti 4D da rifrazionare.
[in] Normal
Vettore normale 4D per rifrazionare il vettore di eventi imprevisti attraverso.
[in] RefractionIndex
Indice della rifrazione. Vedere la sezione Osservazioni.
Valore restituito
Restituisce il vettore di eventi imprevisti refraccati. Se l'indice di refrazione e l'angolo tra il vettore imprevisto e il normale sono tali che il risultato è una riflessione interna totale, la funzione restituirà un vettore della maschera < 0.0f, 0.0f, 0.0f, 0.0f, 0.0f >.
Commenti
Lo pseudocode seguente illustra l'operazione della funzione:
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;
L'indice di refrazione è il rapporto dell'indice della rifrazione del mezzo contenente il vettore imprevisto all'indice di rifrazione del mezzo immesso (dove l'indice di rifrazione di un media è il rapporto della velocità della luce in un vuoto alla velocità della luce nel medio).
Requisiti della piattaforma
Microsoft Visual Studio 2010 o Microsoft Visual Studio 2012 con Windows SDK per Windows 8. Supportato per app desktop Win32, app di Windows Store e Windows Phone 8 app.Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Windows |
Intestazione | directxmath.h (include DirectXMath.h) |