Partager via


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

XMVector2RefractV