Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь. |
Processing:Справочник языка Processing/PVector/lerp()
Содержание | Среда разработки Processing | Справочник языка Processing | Библиотеки | Примеры | Режимы программирования |
![]() |
Черновик |
Содержание
lerp() [1]
Обозначение
Описание
Вычисляет линейную интерполяцию от одного вектора к другому вектору. (Точно так же, как обычная функция lerp(), но для векторов.)
Обратите внимание, что существует одна статическая версия этого метода и две нестатические версии. Статическая версия, lerp(v1, v2, amt) получает два вектора для интерполяции и возвращает новый объект PVector. Статическая версия использует прямую ссылку на класс PVector. (см. приведенный средний пример.) Нестатические версии, lerp(v, amt) и lerp(x, y, z, amt) не создают новый объект PVector, а преобразуют значения данного объекта PVector, который их вызвал. Эти нестатические версии выполняют одну и ту же операцию, но первая берет другой вектор в качестве входных данных, а последний принимает три значения с плавающей запятой.(см. верхний и нижний примеры, соответственно.)
Синтаксис
.lerp(v1, v2, amt)
.lerp(x, y, z, amt)
Параметры
amt - тип float: значение интерполяции; некоторое значение между 0.0 (старый вектор) и 1.0 (новый вектор). 0,1 очень близко к старому вектору; 0,5 находится между ними.
v1 - тип PVector: вектор, с которого начинается интерполяция
v2 - тип PVector: вектор для интерполяции
x - тип float: x-компонент для интерполяции
y - тип float: y-компонент для интерполяции
z - тип float: z-компонент для интерполяции
Возвращаемое значение
Пример
№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);
- }
См.также
Внешние ссылки