Processing:Справочник языка Processing/PVector/lerp()
Содержание | Среда разработки Processing | Справочник языка Processing | Библиотеки | Примеры | Режимы программирования |
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);
}
См.также
Внешние ссылки
Примеры на Processing | |
---|---|
Основы |
|
Продвинутые графические эффекты |
|
Примеры из сторонних библиотек |