class Shape { Position[] points; Shape() {} void set(Position[] p, int index, float ix, float iy) { points = new Position[p.length - index + 1]; int j = 1; points[0] = new Position(ix, iy); for (int i = index; i < p.length-1; i++) { points[j] = new Position(p[i]); j++; } } void be() { if (points != null) { draw(); } } void draw() { stroke(255); fill(255, 192, 192, 128); beginShape(POLYGON); curveVertex(points[0].x, points[0].y); for (int i = 0; i < points.length; i++) { if (points[i] != null && points[i].on_screen()) { curveVertex(points[i].x, points[i].y); } } curveVertex(points[0].x, points[0].y); endShape(); fill(0,0,255); for (int i = 0; i < points.length; i++) { if (points[i] != null && points[i].on_screen()) { rect(points[i].x, points[i].y, 5, 5); } } fill(0,255,0); rect(points[0].x, points[0].y, 5, 5); } }