Partager via


Fonction XMVector4Refract (directxmath.h)

Réfracte un vecteur 4D incident sur un vecteur normal 4D.

Syntaxe

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

Paramètres

[in] Incident

Vecteur d’incident 4D à réfracter.

[in] Normal

Vecteur normal 4D 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, 0.0f, 0.0f >.

Remarques

Le pseudocode suivant illustre le fonctionnement de la fonction :

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’index de réfraction est le rapport entre l’index de réfraction du milieu contenant le vecteur 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 entre la vitesse de la lumière dans un vide et 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 Kit de développement logiciel (SDK) Windows pour Windows 8. Pris en charge pour les applications de bureau Win32, les applications du Windows Store et Windows Phone 8 applications.

Configuration requise

Condition requise Valeur
Plateforme cible Windows
En-tête directxmath.h (inclure DirectXMath.h)

Voir aussi

Fonctions géométriques vectorielles 4D de la bibliothèque DirectXMath

XMVector4RefractV