struct Voredge { Point<2> p[2]; Int nearpt; Voredge() {} Voredge(Point<2> pa, Point<2> pb, Int np) : nearpt(np) { p[0] = pa; p[1] = pb; } }; struct Voronoi : Delaunay { Int nseg; VecInt trindx; vector segs; Voronoi(vector< Point<2> > pvec); }; Voronoi::Voronoi(vector< Point<2> > pvec) : Delaunay(pvec,1), nseg(0), trindx(npts), segs(6*npts+12) { Int i,j,k,p,jfirst; Ullong key; Triel tt; Point<2> cc, ccp; for (j=0; jget(key,k) ) throw("Delaunay is incomplete"); cc = circumcircle(pts[p],pts[k],pts[i]).center; segs[nseg++] = Voredge(ccp,cc,p); if (k == jfirst) break; ccp = cc; j=i; i=k; } } }