import SGImplify.*;
import Tuple.*;
 
Vector path = new Vector();
 
void setup(){
size(550,550);
smooth();
 
}
 
void draw(){
background(255);
Tuple2f pt;
noFill();
strokeWeight(1);
beginShape();
for (int i=0; i < path.size(); i++){
pt = (Tuple2f)path.elementAt(i);
vertex(pt.x,pt.y);
}
endShape();
 
strokeWeight(5);
beginShape(POINTS);
for (int i=0; i < path.size(); i++){
pt = (Tuple2f)path.elementAt(i);
vertex(pt.x,pt.y);
}
endShape();
 
 
 
}
 
void mousePressed(){
path = new Vector();
 
}
 
void mouseDragged(){
 
path.add(new Tuple2f(mouseX, mouseY));
 
}
 
void mouseReleased(){
 
if (path.size() > 1){
Tuple2f [] tmp = new Tuple2f[path.size()-1];
for (int i =0; i < path.size()-1; i++){
tmp[i] = (Tuple2f)path.elementAt(i+1);
}
 
path = new Vector();
path.addAll(Arrays.asList(SGImplify.simplifyLine2D(5,tmp)));
}
}