Вспомогательные функции pc.math: lerp, clamp, degToRad, randRange

Библиотека PlayCanvas предоставляет набор математических функций, которые являются неотъемлемой частью при разработке игр и 3D-приложений. Они включают в себя полезные операции для работы с числами, векторами, углами и прочими математическими сущностями. В данной главе рассмотрены такие функции, как lerp, clamp, degToRad и randRange, которые часто применяются в процессе разработки.

Функция lerp

Функция lerp используется для линейной интерполяции между двумя значениями. Это позволяет находить промежуточное значение между двумя точками на основе заданного параметра.

Синтаксис:

pc.math.lerp(a, b, t)
  • a — начальное значение;
  • b — конечное значение;
  • t — коэффициент интерполяции (от 0 до 1). Если t равно 0, результат будет равен a, если t равно 1, результат будет равен b. Значения между 0 и 1 дают промежуточные результаты.

Пример использования:

var start = 10;
var end = 20;
var result = pc.math.lerp(start, end, 0.5);  // Результат: 15

В данном примере, при коэффициенте 0.5, функция возвращает среднее значение между start и end.

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

Функция clamp

Функция clamp ограничивает значение в пределах заданного диапазона. Если значение выходит за пределы этого диапазона, оно “прижимается” к ближайшей границе.

Синтаксис:

pc.math.clamp(value, min, max)
  • value — значение, которое необходимо ограничить;
  • min — минимальное значение диапазона;
  • max — максимальное значение диапазона.

Если value меньше, чем min, функция вернет min. Если value больше, чем max, функция вернет max. В противном случае, возвращается само значение value.

Пример использования:

var value = 10;
var clamped = pc.math.clamp(value, 0, 5);  // Результат: 5

Здесь, так как значение value больше максимума (5), функция возвращает значение 5.

Функция clamp полезна при ограничении величин, таких как скорость объекта, угол поворота или значения интенсивности.

Функция degToRad

В графике и 3D-приложениях часто приходится работать с углами, выраженными в градусах и радианах. Для преобразования между этими единицами используется функция degToRad. Она конвертирует угол, заданный в градусах, в радианы, что необходимо для работы с большинством математических функций в PlayCanvas и других библиотеках.

Синтаксис:

pc.math.degToRad(degrees)
  • degrees — угол в градусах.

Результат функции — угол в радианах.

Пример использования:

var degrees = 180;
var radians = pc.math.degToRad(degrees);  // Результат: 3.141592653589793

Этот пример преобразует угол 180 градусов в радианы. Важно заметить, что 180 градусов равны π радиан, и результат функции — это математическая константа π.

Функция degToRad используется, например, при манипуляциях с углами вращения объектов или при вычислениях траекторий движения.

Функция randRange

Функция randRange генерирует случайное значение в пределах заданного диапазона. Это может быть полезно для создания случайных событий, например, для генерации случайных положений объектов или случайных значений для анимации.

Синтаксис:

pc.math.randRange(min, max)
  • min — минимальное значение диапазона;
  • max — максимальное значение диапазона.

Результат функции — случайное число между min и max, включая оба конца диапазона.

Пример использования:

var randomValue = pc.math.randRange(1, 10);  // Результат: случайное число от 1 до 10

В данном примере результат будет случайным числом в диапазоне от 1 до 10, например, 3 или 7.8.

Функция randRange полезна для случайной генерации позиций объектов в игре, случайных значений для параметров анимации или создания случайных событий в процессе выполнения программы.

Заключение

Функции lerp, clamp, degToRad и randRange являются мощными инструментами для работы с числами, углами и случайными величинами в PlayCanvas. Каждая из них имеет широкое применение в разработке игр и интерактивных приложений, обеспечивая удобные и быстрые способы выполнения стандартных математических операций.