Fonction XMVector2Refract (directxmath.h)
Réfracte un vecteur 2D d’incident sur un vecteur normal 2D.
Syntaxe
XMVECTOR XM_CALLCONV XMVector2Refract(
[in] FXMVECTOR Incident,
[in] FXMVECTOR Normal,
[in] float RefractionIndex
) noexcept;
Paramètres
[in] Incident
Vecteur d’incident 2D à réfracter.
[in] Normal
Vecteur normal 2D pour réfracter le vecteur d’incident.
[in] RefractionIndex
Index de la réfraction. Consultez la section Remarques.
Valeur retournée
Retourne le vecteur d’incident réfracté. Si l’index de réfraction et l’angle entre le vecteur incident et la normale sont tels que le résultat est une réflexion interne totale, la fonction retourne un vecteur de la forme < 0.0f, 0.0f, undefined, undefined >.
Notes
Le pseudo-code suivant illustre le fonctionnement de la fonction :
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;
L’index de la réfraction est le rapport entre l’index de réfraction du milieu contenant le vecteur d’incident et l’index de réfraction du milieu entré (où l’index de réfraction d’un milieu est lui-même le rapport de la vitesse de la lumière dans un vide à la vitesse de la lumière dans le milieu).
Configuration requise pour la plateforme
Microsoft Visual Studio 2010 ou Microsoft Visual Studio 2012 avec le SDK Windows pour Windows 8. Pris en charge pour les applications de bureau Win32, les applications du Windows Store et les applications Windows Phone 8.Spécifications
Plateforme cible | Windows |
En-tête | directxmath.h (inclure DirectXMath.h) |
Voir aussi
Fonctions géométriques vectorielles 2D de la bibliothèque DirectXMath