Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

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

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

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


Ambox content.png Черновик


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

  1. // Нестатическая версия (интерполяция на конкретном векторе)
  2.  
  3. PVector current;
  4. PVector target;
  5.  
  6. void setup() {
  7.   current = new PVector(0.0, 0.0);
  8.   target = new PVector(100.0, 100.0);
  9.   current.lerp(target, 0.5);
  10.   println(current);                  // Печатаем в консоли "[ 50.0, 50.0, 0.0 ]"
  11. }

№2

  1. // Статическая версия (возвращает новый вектор)
  2.  
  3. PVector start;
  4. PVector end;
  5. PVector middle;
  6.  
  7. void setup() {
  8.   start = new PVector(0.0, 0.0);
  9.   end = new PVector(100.0, 100.0);
  10.   middle = PVector.lerp(start, end, 0.5);
  11.   println(middle);                       // Печатаем в консоли "[ 50.0, 50.0, 0.0 ]"
  12. }

№3

  1. // Нестатическая версия (интерполяция на конкретном векторе)
  2.  
  3. PVector v;
  4.  
  5. void setup() {
  6.   v = new PVector(0.0, 0.0);
  7. }
  8.  
  9. void draw() {
  10.   v.lerp(mouseX, mouseY, 0.0, 0.1);
  11.   ellipse(v.x, v.y, 20, 20);
  12. }

См.также

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

  1. processing.org - lerp()