Partager via


Fonction XMVector3Refract (directxmath.h)

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

Syntaxe

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

Paramètres

[in] Incident

Vecteur d’incident 3D à réfracter.

[in] Normal

Vecteur normal 3D 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, non défini >.

Remarques

Le pseudocode suivant illustre le fonctionnement de la fonction :

XMVECTOR Result;

float t = ( Incident.x * Normal.x + Incident.y * Normal.y + Incident.z * Normal.z );
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;
}
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 = undefined;

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 3D de la bibliothèque DirectXMath

XMVector2RefractV