void setup() {
size(480, 120);
smooth();
stroke(0, 102);
}
void draw() {
float weight = dist(mouseX, mouseY, pmouseX, pmouseY);
strokeWeight(weight);
line(mouseX, mouseY, pmouseX, pmouseY);
}
В примере "Меняем размер" координаты мыши непосредственно определяли положение круга на экране. Но иногда вы хотите сделать линию более плавной несмотря на неровную траекторию курсора. Эта техника называется easing (улучшение). Для нее нужны две величины - текущая и следующая. С каждым шагом текущее значение приближается к следующему:
float x;
float easing = 0.01;
float diameter = 12;
void setup() {
size(220, 120);
smooth();
}
void draw() {
float targetX = mouseX;
x += (targetX - x) * easing;
ellipse(x, 40, 12, 12);
println(targetX + " : " + x);
}
Значение переменной x всегда стремится к targetX. Скорость, с которой x стремится к targetX устанавливается переменной easing в диапазоне от 0 до 1.
Невысокое значение easing вызывает большую инерционность, чем высокое. При easing равной 1 задержки не будет. Когда вы запустите пример Easing, обе
величины будут выводиться на консоль функцией println(). Заметьте, что когда вы двигаете мышь, эти числа сильно различаются, но когда мышь неподвижна, они постепенно уравниваются.
Основная часть кода в этом примере начинается с x +=. Вычисляется разность между следующим и текущим положением круга, затем умножается на переменную easing и прибавляется к x для приближения к следующему значению.