Funzione XMVector3Refract (directxmath.h)

Rifa un vettore 3D imprevisto in un vettore normale 3D.

Sintassi

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

Parametri

[in] Incident

Vettore di eventi imprevisti 3D da rifrazionare.

[in] Normal

Vettore normale 3D 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, non definito.

Commenti

Lo pseudocode seguente illustra l'operazione della funzione:

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'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)

Vedi anche

Funzioni geometriche vettoriali DirectXMath library 3D

XMVector2RefractV