class MySegment { MyPoint start; // members of class MyPoint end; color blue = color(0,0,255); // default color color red = color(255,0,0); // selected color boolean isSelected = false; // is this segment selected? //********** Constructor MySegment(MyPoint p1, MyPoint p2){ start = new MyPoint(p1.x, p1.y); end = new MyPoint(p2.x, p2.y); } //********** Move void move(float xoff, float yoff){ start.move(xoff, yoff); end.move(xoff, yoff); } //********** Rotate void rotate (float angle, MyPoint ref) { start.rotate(angle, ref); end.rotate(angle, ref); } //********** Scale void scale(float xs, float ys, MyPoint ref){ start.scale(xs, ys, ref); end.scale(xs, ys, ref); } //*********** centroid MyPoint centroid(){ MyPoint c = new MyPoint(0.,0.); c.x = (start.x+end.x)/2.; c.y = (start.y+end.y)/2.; return c; } //*********** draw void draw(){ if(isSelected) stroke(red); else stroke(blue); line((int)start.x, (int)start.y, (int)end.x, (int)end.y); } //******** Select boolean select(float xpick, float ypick, float tolerance){ if(start.select(xpick, ypick, tolerance)==true || end.select(xpick, ypick, tolerance)==true) { isSelected = true; return true; } else { isSelected = false; } return false; } }