Функция XMVectorLerp (directxmath.h)

Выполняет линейную интерполяцию между двумя векторами.

Синтаксис

XMVECTOR XM_CALLCONV XMVectorLerp(
  [in] FXMVECTOR V0,
  [in] FXMVECTOR V1,
  [in] float     t
) noexcept;

Параметры

[in] V0

Первый вектор для интерполяции.

[in] V1

Второй вектор для интерполяции.

[in] t

Фактор управления интерполяцией.

Возвращаемое значение

Возвращает вектор, содержащий интерполяцию.

Комментарии

Следующий псевдокод демонстрирует работу функции:

XMVECTOR Result;

Result.x = V0.x + t * (V1.x - V0.x);
Result.y = V0.y + t * (V1.y - V0.y);
Result.z = V0.z + t * (V1.z - V0.z);
Result.w = V0.w + t * (V1.w - V0.w);

return Result;

Обратите внимание, что использовать эту функцию для выполнения кубической интерполяции вместо линейной интерполяции довольно просто, как показано ниже.


XMVECTOR SmoothStep( XMVECTOR V0, XMVECTOR V1, float t )
{
    t = (t > 1.0f) ? 1.0f : ((t < 0.0f) ? 0.0f : t);  // Clamp value to 0 to 1
    t = t*t*(3.f - 2.f*t);
    return XMVectorLerp( V0, V1, t );
}

Требования к платформе

Microsoft Visual Studio 2010 или Microsoft Visual Studio 2012 с windows SDK для Windows 8. Поддерживается для классических приложений Win32, приложений Магазина Windows и приложений Windows Phone 8.

Требования

Требование Значение
Целевая платформа Windows
Header directxmath.h (включая DirectXMath.h)

См. также раздел

Геометрические векторные функции

XMVectorLerpV