xxxxxxxxxx
var points = [];
var painting = false;
var strokeNumber = 0;
var numClosePoints = 15;
function setup() {
createCanvas(windowWidth, windowHeight);
background(255);
}
function mousePressed() {
painting = true;
strokeNumber++;
}
function mouseReleased() {
painting = false;
}
function draw() {
if(painting){
var p1 = new Point(mouseX,mouseY,strokeNumber);
// p1.draw();
points.push(p1);
console.log('new point',p1);
getSortedPoints(p1).slice(0, numClosePoints).map(function(p2,i){
var alpha = map(i,0,numClosePoints, 200,0);
stroke(50, 120, 170,alpha);
line(p1.x,p1.y,p2.x,p2.y);
});
}
}
function getSortedPoints(pRef) {
return points.filter(function(p){
return p.strokeNumber == pRef.strokeNumber;
}).sort(function(p1,p2){
return pRef.sqDistance(p1) > pRef.sqDistance(p2) ? 1 : -1;
})
}
class Point {
constructor(x,y,strokeNumber){
this.x=x;
this.y=y;
this.strokeNumber=strokeNumber;
}
sqDistance(p) {
return pow(this.x-p.x,2)+pow(this.y-p.y,2);
}
draw(){
ellipse(this.x,this.y, 5, 5);
}
}