xxxxxxxxxx
/**
* Trailing Deque (v4.0.0) [Java/Pjs]
* by Quarks (2013/Feb)
* for Rialobran
* mod GoToLoop
*
* https://Forum.Processing.org/two/discussion/3864/
* how-to-draw-multiple-user-defined-lines#Item_3
*
* https://www.OpenProcessing.org/sketch/878488
* https://Bl.ocks.org/GoToLoop/571eaa4797963ffbacdd706542c30637
*/
import java.util.Queue;
import java.util.ArrayDeque; // not needed anymore
static final boolean JAVA = 1/2 != 1/2.;
static final byte MAX_TRAIL_POINTS = 5;
final Queue<PointXY> trails = new ArrayQueue<PointXY>(MAX_TRAIL_POINTS);
//final Queue<PointXY> trails = new ArrayDeque<PointXY>(MAX_TRAIL_POINTS);
static final color BG = 0350;
static final short FPS = 30;
static final String GFX = JAVA2D; // use JAVA2D, FX2D or P2D
void setup() {
size(800, 600, GFX);
frameRate(FPS);
noLoop();
stroke(PointXY.FG);
strokeWeight(PointXY.BOLD);
}
void draw() {
background(BG);
PointXY tt = trails.peek();
for (final PointXY t : trails) tt = t.lineXY(tt);
if (JAVA) println(trails);
else { // Pjs doesn't implement ArrayList::toString()
for (final PointXY xy : trails) print(xy);
println("\n");
}
}
void mousePressed() {
trails.add( trails.size() == MAX_TRAIL_POINTS
? trails.remove().setXY(mouseX, mouseY)
: new PointXY(mouseX, mouseY) );
redraw();
}