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

Processing:Примеры/Линейная интерполяция

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


Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

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


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


Описание[1]

Перемещайте курсор мыши по экрану – эллипс будет следовать за ним.

В этом скетче-примере между прорисовкой каждого кадра в игру вступает функция lerp(), с помощью которой рассчитывается количество «шагов» (в данном случае его размер – 0.05 или 5%) до перемещения эллипса в сторону курсора. Соответственно, чем меньше «шаг», тем медленнее эллипс будет двигаться к курсору.

Этот скетч-пример выполняет ту же задачу, что и пример «Плавная анимация», но только при помощи функции lerp().

Пример

  1. float x;
  2. float y;
  3.  
  4. void setup() {
  5.   size(640, 360);
  6.   noStroke();  
  7. }
  8.  
  9. void draw() {
  10.   background(51);
  11.  
  12.   // функция lerp() рассчитывает количество промежуточных значений
  13.   // между двумя числами на основе размера «шага» в третьем параметре;
  14.   // если указать «0.0», то это равно первой точке,
  15.   // если «0.1», то это очень близко к первой точке,
  16.   // а если «0.5», то это посередине между двумя точками и т.д.
  17.  
  18.   // с каждым кадром эллипс проходит 5% расстояния к курсору:
  19.   x = lerp(x, mouseX, 0.05);
  20.   y = lerp(y, mouseY, 0.05);
  21.  
  22.   fill(255);
  23.   stroke(255);
  24.   ellipse(x, y, 66, 66);
  25. }

См.также

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

  1. processing.org - Linear Interpolation