I need to draw a polygon in C ++. I set random dots in a vector and then connect them line by line. But sometimes these lines intersect, and I get something like this.

Is there any formula or something like that so the lines don't intersect?
Here is the piece of code:
void draw_picture(Canvas & canvas) { PairXY a,b,c,d,e; int k; vector <PairXY> vertex; vertex.push_back(PairXY(drandom(k),drandom(k))); vertex.push_back(PairXY(drandom(k),drandom(k))); vertex.push_back(PairXY(drandom(k),drandom(k))); vertex.push_back(PairXY(drandom(k),drandom(k))); vertex.push_back(PairXY(drandom(k),drandom(k))); vector <PairXY>::const_iterator iter; iter = vertex.begin(); a=*iter; iter = vertex.begin()+1; b=*iter; iter = vertex.begin()+2; c=*iter; iter = vertex.begin()+3; d=*iter; iter = vertex.begin()+4; e=*iter; Line l1(a,b); draw_line(l1,canvas); Line l2(b,c); draw_line(l2,canvas); Line l3(c,d); draw_line(l3,canvas); Line l4(d,e); draw_line(l4,canvas); Line l5(e,a); draw_line(l5,canvas); }
source share