/* built with Studio Sketchpad:
* https://sketchpad.cc
*
* observe the evolution of this sketch:
* https://studio.sketchpad.cc/sp/pad/view/ro.xyu1E6MiImy/rev.8
*
* authors:
* GoToLoop
* license (unless otherwise specified):
* creative commons attribution-share alike 3.0 license.
* https://creativecommons.org/licenses/by-sa/3.0/
*/
/**
* Easing Box (v2.2)
* Author: MsKelly (2016-Oct-04)
* Mod: GoToLoop
*
* forum.Processing.org/two/discussion/18404/
* processing-code-doesn-t-work-in-p5#Item_5
*
* studio.SketchPad.cc/sp/pad/view/ro.9XkJm3bjTAxB2/latest
*/
static final float EASING = .05, LIMIT = .1;
static final int RAD = 15, EDGE = 50;
static final int INNER = EDGE + RAD;
float mx = INNER, my = INNER;
int iw, ih, ew, eh;
void setup() {
size(400, 500);
ellipseMode(RADIUS);
rectMode(CORNERS);
noStroke();
background(0);
iw = width - INNER;
ih = height - INNER;
ew = width - EDGE;
eh = height - EDGE;
}
void draw() {
final float dx = mouseX - mx, dy = mouseY - my;
if (abs(dx) > LIMIT) mx = constrain(mx + dx*EASING, INNER, iw);
if (abs(dy) > LIMIT) my = constrain(my + dy*EASING, INNER, ih);
fill(196, 239, 234);
rect(EDGE, EDGE, ew, eh);
fill(146, 140, 211);
ellipse(mx, my, RAD, RAD);
}