Processing:Справочник языка Processing/PVector/lerp()

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Проверка/Оформление/Редактирование: Мякишев Е.А.


lerp() [1]

Обозначение

lerp()

Описание

Вычисляет линейную интерполяцию от одного вектора к другому вектору. (Точно так же, как обычная функция lerp(), но для векторов.)

Обратите внимание, что существует одна статическая версия этого метода и две нестатические версии. Статическая версия, lerp(v1, v2, amt) получает два вектора для интерполяции и возвращает новый объект PVector. Статическая версия использует прямую ссылку на класс PVector. (см. приведенный средний пример.) Нестатические версии, lerp(v, amt) и lerp(x, y, z, amt) не создают новый объект PVector, а преобразуют значения данного объекта PVector, который их вызвал. Эти нестатические версии выполняют одну и ту же операцию, но первая берет другой вектор в качестве входных данных, а последний принимает три значения с плавающей запятой.(см. верхний и нижний примеры, соответственно.)

Синтаксис

.lerp(v, amt)
.lerp(v1, v2, amt)
.lerp(x, y, z, amt)

Параметры

v   - тип PVector: вектор для интерполяции
amt - тип float: значение интерполяции; некоторое значение между 0.0 (старый вектор) и 1.0 (новый вектор). 0,1 очень близко к старому вектору; 0,5 находится между ними.
v1  - тип PVector: вектор, с которого начинается интерполяция
v2  - тип PVector: вектор для интерполяции
x   - тип float: x-компонент для интерполяции
y   - тип float: y-компонент для интерполяции
z   - тип float: z-компонент для интерполяции

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

PVector

Пример

№1

// Нестатическая версия (интерполяция на конкретном векторе)

PVector current;
PVector target;

void setup() {
  current = new PVector(0.0, 0.0);
  target = new PVector(100.0, 100.0);
  current.lerp(target, 0.5);
  println(current);                  // Печатаем в консоли "[ 50.0, 50.0, 0.0 ]"
}

№2

// Статическая версия (возвращает новый вектор)

PVector start;
PVector end;
PVector middle;

void setup() {
  start = new PVector(0.0, 0.0);
  end = new PVector(100.0, 100.0);
  middle = PVector.lerp(start, end, 0.5);
  println(middle);                       // Печатаем в консоли "[ 50.0, 50.0, 0.0 ]"
}

№3

// Нестатическая версия (интерполяция на конкретном векторе)

PVector v;

void setup() {
  v = new PVector(0.0, 0.0);
}

void draw() {
  v.lerp(mouseX, mouseY, 0.0, 0.1);
  ellipse(v.x, v.y, 20, 20);
}

См.также

Внешние ссылки